深度学习中的激活函数有Sigmoid、Softmax、Tanh、ReLU系列(ReLU、Leaky ReLU、Randomized LeakyReLU、PReLU、ELU、Softplus)、Maxout、Softsign(对称函数)、GELUs(dropout于relu的结合)、Swish、Mish等。使用激活函数只有一个目的:为多层神经网络模型提供非线性。因为,没有激活函数时,多层神经网络的多个矩阵连乘可以化简为单层神经网络的矩阵乘法。激活的本质是模仿大脑中神经元信号的传递,大脑神经元中的突触收到刺激后按照程度传递信号。深度学习中的激活函数也是如此,其输出的值越大表示收到的正向刺激越多,代表特征的有效程度;其输出值越小表示收到的负向测距越多,代表其为背景噪声的概率越大。

1、激活函数的性质

性质用于描述激活函数的特征,如是否完全连续可导(relu函数在x为0时不可导,默认此时导数值为0)、是否具备饱和区(饱和区也就是函数值域的界限,左饱和区对应着函数值域下届,右饱和区对应着函数的上届)。饱和区的输出较为平缓,不受x值的波动(x变化很大,但输出值y变化很小),也就是说饱和区的导数值很接近。它稳定了神经元的输出值,这为模型提供了一定的鲁棒性(不同的输入数据,提供相同的导数)。除此外,有的激活函数含包含可以训练的参数(如Maxout的参数全由训练得来)。
因此对于激活函数可以根据其饱和区性质和是否参数做以下区分:
饱和区
具有上届和下届的激活函数: Sigmoid、Softmax、Tanh、Softsign(关于原点对称输出值为[0,1])
具有下届的激活函数: ReLU系列(ReLU、Leaky ReLU、Randomized LeakyReLU、PReLU、ELU、Softplus)、Maxout、GELUs、Swish、Mish等

参数
有可训练参数的激活函数: PReLU(相当于可训练的Leaky ReLU)、Maxout、Swish
有超参数的激活函数: Leaky ReLU(需要设置负区域x的斜率)、Randomized LeakyReLU、ELU(需要设置负区域2023年11月最新ReLU激活函数是什么意思 relu激活函数作用_Soft的斜率)、GELUs(需要设置dropout的概率。)
无参数的激活函数 Sigmoid、Softmax、Tanh、Softsign、ReLU、Softplus、Mish

理想激活函数

通过对多个激活函数的理解,各类论文中所提到的理想激活函数通常具备以下特性:1、输出是0均值的(可以加速收敛);2、单侧饱和(提供对背景噪声的鲁棒性)。博主结合于自身看法,激活函数应该还具备随机增强的特性,这样子更符合大脑中信号的传递(随机抑制一部分信号,同时也增强一部分信号,这于dropout存在一定程度的类似)

关于relu等分段线性函数构建的非线性

其通过多个不同斜率的直线,对曲线进行拟合,只要直线足够多,就能对曲线进行完美拟合。

2、各种激活函数的细节

以下链接描述了除Softplus、Softsign、GELUs外的所有激活函数,同时还对sigmoid、tanh进行了求导,也描述了从sigmoid函数到tanh函数的变化过程。
https://zhuanlan.zhihu.com/p/481991088

Softplus:

Softsign:

GELUs:

3、如何选择合适的激活函数

以下内容截取自 https://zhuanlan.zhihu.com/p/172254089

先试试ReLU的效果如何。尽管我们指出了ReLU的一些缺点,但很多人使用ReLU取得了很好的效果。根据”奥卡姆剃刀原理“,如无必要,勿增实体,也就是优先选择最简单的。ReLU相较于其他激活函数,有着最低的计算代价和最简单的代码实现。
如果ReLU效果不太理想,下一个建议是试试LeakyReLU或ELU。经验来看:有能力生成零均值分布的激活函数,相较于其他激活函数更优。需要注意的是使用ELU的神经网络训练和推理都会更慢一些,因为需要更复杂的指数运算得到函数激活值,如果计算资源不成问题,且网络并不十分巨大,可以事实ELU;否则,最好选用LeakyReLU。LReLU和ELU都增加了需要调试的超参数。
如果有很多算力或时间,可以试着对比下包括随机ReLU和PReLU在内的所有激活函数的性能。当网络表现出过拟合时,随机ReLU可能会有帮助。而对PReLU来说,因为增加了需要学习的参数,当且仅当有很多训练数据时才可以试试PReLU的效果。