激活函数是在神经网络中引入的非线性函数,用于捕获数据中的复杂关系。
Sigmoid
sigmoid函数是神经网络历史上最早使用的激活函数之一。它取任何实数并将其压缩到0到1之间。数学上,sigmoid函数表示如下:
从表达式中很容易看出,sigmoid函数曲线是一个光滑的、可微的函数。
正如我们可以从图中观察到的,对于大多数输入,sigmoid函数很快达到饱和(即产生极值输出)。这可能会成为一个问题,因为它可能导致梯度变成零或发散到一个溢出的浮点值。这些现象也被称为梯度消失问题和爆发梯度问题。因此,在神经网络中很少看到sigmoid函数的使用,除了在输出上,其中压缩属性允许一个人将输出解释为概率这种情况下会使用。
Tanh
tanh激活函数是sigmoid函数的一个外观上不同的变体。当你写下tanh的表达式时,这就很清楚了:
注意tanh,像sigmoid函数一样,也是一个“压缩”函数,不同在它将实数集从(-∞,+∞)映射到范围[-1,+1]。
ReLU
ReLU(发音为ray-luh)代表修正线性单元。这可以说是最重要的激活函数。事实上,我们可以大胆地说,如果没有ReLU,深度学习领域最近的许多创新都不可能实现。对于如此基础的东西来说,它在神经网络激活功能方面也出奇地新颖。而且它的形式非常简单:
因此,ReLU函数所做的就是将负值修剪为零,如下图所示。
帮助解决梯度消失问题的ReLU的修剪效果也会成为一个问题,因为随着时间的推移,网络中的某些输出可能会变成零,并且永远不会再恢复。这就是所谓的“dying ReLU”问题。为了减轻这种影响,像Leaky ReLU和Parametric ReLU这样的变体(PReLU)激活函数被提出来,其中泄漏系数a是一个可学习的参数。
Softmax
另一个激活函数的选择是softmax。像sigmoid函数一样,softmax函数将每个单元的输出压缩为0到1之间。然而,softmax操作还将每个输出除以所有输出的和,这就给出了k个可能类上的离散概率分布:
结果分布中的概率之和为1。这对于解释分类任务的输出非常有用,因此这种转换通常与概率训练目标配对,比如分类交叉熵。
转载:https://blog.csdn.net/weixin_40605573/article/details/117025867