作者:这是个新名字 | 来源:互联网 | 2023-06-21 18:57
一、激活函数
1. Sigmoid ![\displaystyle\sigma(x)=1/(1+e^{-x})](http://zhihu.com/equation?tex=%5Cdisplaystyle%5Csigma%28x%29%3D1%2F%281%2Be%5E%7B-x%7D%29)
它可以将输入实数值压缩到0到1的范围内,更具体地说,很大的负数变为0,很大的正数变为1。 但sigmoid 函数有几个缺点
- sigmoid函数饱和使梯度消失,当神经元的激活在接近0或者1时会饱和,在这些区域,梯度几乎为0,这样,在反向传播过程中,局部梯度就会接近0,这会有效地“杀死”梯度
- Sigmoid函数的输出不是零中心的。这样使得关于w的梯度在反向传播过程中,将会要么全是正数,要么全是负数,使得梯度下降过程中出现z字型下降
2.Tanh函数
![tanh(x)=2\sigma(2x)-1](http://zhihu.com/equation?tex=tanh%28x%29%3D2%5Csigma%282x%29-1)
它将输入实数值压缩到-1,1之间,和sigmoid函数一样,它也存在饱和问题,但它输出是零中心的,所以相比较sigmoid而言更受欢迎
3. ReLU
![f(x)=max(0,x)](http://zhihu.com/equation?tex=f%28x%29%3Dmax%280%2Cx%29)
优点:
- ReLU对于随机梯度下降的首先有巨大的加速作用,这是由于它的线性,非饱和的公式导致的
- sigmoid 和 tanh函数都含有指数运算,而ReLU可以简单地通过对一个矩阵进行阈值计算得到
缺点:
- ReLU单元比较脆弱并且可能“死掉”。当一个很大的梯度流过ReLU的神经元的时候,可能会导致梯度更新到一种特别的状态,使得无法被其他任何数据点再次激活,如果这种情况发生,那么从此所有流过这个神经元的梯度都将变为0
4. Leaky ReLU (为解决ReLU死亡问题)
![f(x)&#61;1(x<0)(\alpha x)&#43;1(x>&#61;0)(x)](http://zhihu.com/equation?tex&#61;f%28x%29%3D1%28x%3C0%29%28%5Calpha&#43;x%29%2B1%28x%3E%3D0%29%28x%29)
5.Maxout ![max(w^T_1x&#43;b_1,w^T_2x&#43;b_2)](http://zhihu.com/equation?tex&#61;max%28w%5ET_1x%2Bb_1%2Cw%5ET_2x%2Bb_2%29)
它是对ReLU和leaky ReLU的一般化归纳&#xff0c;maxout神经元拥有ReLU所有的优点&#xff0c;而没有它的缺点&#xff0c;然而和ReLU对比&#xff0c;它每个神经元的参数量增加了一倍
总结&#xff1a;
如果用ReLU&#xff0c;注意设置好学习率&#xff0c;或许可以监控死亡的神经元占的比例。不要用sigmoid&#xff0c;也可以试试tanh&#xff0c;但效果应该不如ReLU或者Maxout
&#xfeff;&#xfeff;