Activation funcation 激活函数
激活函数将神经网络最后一层输出当做输入,进行转换。也用于神经网络两层之间。
那么在神经网络为什么要使激活函数?
比如在逻辑回归中,用于将输出转换为0/1进行分类。在神经网络中用于确定输出是yes/no。或者将输出映射到某一个范围之间,比如手写数字识别中,将输出映射到0--9之间。
激活函数一般分类两类:线性和非线性
线性或恒等激活函数
非线性激活函数
下面介绍几种常见的激活函数:
sigmoid 函数
- 当输入过大过小时, 梯度接近0.因此初始值很大时,神经元梯度会消失,加大训练难度。
- 该函数输出的均值不为0。因此后一层神经元将上一层的非0输出作为信号输入,梯度始终为正。
Tanh 双曲正弦激活函数
Relu(线性整流)激活函数
- 收敛速度相比于sigmoid和Tanh要快很多
- 相比于sigmoid和Tanh, 由于函数特性,只需要一个阈值就能得到激活值 同时也有缺点,比如一个非常大的梯度流过一个Relu神经元时, 更新参数以后,由于激活值太大, 导致对后面的数据激活困难。
Softmax 激活函数
softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!
上述中为什么会提到导数或者可微: 当在梯度下降中更新梯度时,需要知道曲线的斜率,并进行更新,因为这是下降最快的方向。因此在神经网络中需要使用到激活函数的导数。