@TOC
激活函数:一个非线性的函数
1.Sigmoid型激活函数:
Logistic函数:
11+exp(−x)\\frac{1}{1+exp(-x)}1+exp(−x)1,值域(0,1)
Tahn函数:
exp(x)−exp(−x)exp(x)+exp(−x)\\frac{exp(x)-exp(-x)}{exp(x)+exp(-x)}exp(x)+exp(−x)exp(x)−exp(−x),值域(-1,1)
Hard Sigmoid函数:用分段函数近似Sigmoid函数
hard-logistic(x)
hard-logistic(x)= max(min(0.25x+0.5,1),0)
hard-tanh(x)
hard-tanh(x)= max(min(x,1),-1)
2.ReLU:修正线性单元,深层神经网络中常用的激活函数。
ReLU(x) = max(0, x)。
即输入<0,输出=0。输入>0,输出=输入。
优点:
左饱和函数,缓解了神经网络的梯度消失问题,加速梯度下降的收敛速度。
缺点:
- 是非零中心化的:给后一层的神经网络引入偏置偏移,会影响梯度下降的效率。
- 容易死亡: 如果参数在一次不恰当的更新后,第一个隐藏层中的某个ReLU神经元在所有的训练数据上都不能被激活,那么这个神经元自身参数的梯度永远都会是0, 在以后的训练过程中永远不能被激活。
ReLU的变种:
带泄露的ReLU:
LeakyReLU(x) = max(0, x) + γγγmin(0, x)
在输入 x < 0时,保持一个很小的梯度λ。
这样当神经元非激活时也能有一个非零的梯度可以更新参数,避免永远不能被激活。
当γγγ< 1时,带泄露的ReLU也可以写为LeakyReLU(x) = max(x, γγγx)
带参数的ReLU:
PReLU(x)= max(0, x) + γiγ_iγimin(0, x)
引入一个可学习的参数,允许不同神经元有不同的参数。