赞
踩
(1)sigmoid
sigmoid函数输入一个实值的数,然后将其压缩到0~1的范围内。特别地,大的负数被映射成0,大的正数被映射成1,数值绝对值越大,梯度越平坦,敏感度越低。也正是这个特点,为它的失宠埋下了伏笔。
- 优点:
将所有数据映射成了(0,1)之间的数,很好的表达神经元的激活与未激活的状态,适合二分类。- 缺点:(1)Sigmoid容易饱和,当输入非常大或者非常小的时候,函数曲线非常平坦,梯度就接近于0,从图中可以看出梯度的趋势。而反向传播中,我们需要使用sigmoid的导数来更新权重,如果导数都基本为0,会导致权重基本没什么更新,我们就无法递归地学习到输入数据了,这种现象也可以叫做梯度弥散。(2)Sigmoid 的输出不是0均值的,这是我们不希望的,因为这会导致后层的神经元的输入是非0均值的信号,这会对梯度产生影响:假设后层神经元的输入都为正,那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。(3)计算量大,sigmod函数要进行指数运算,这个对于计算机来说是比较慢的。
(2)tanh函数
未解决sigmoid非0均值问题,提出tanh,它是在sigmoid的基础上,将压缩范围调整为(-1,1)。
- 优点:
它是0均值的,解决了上述Sigmoid缺点中的第二个,所以实际中tanh会比sigmoid更常用。- 缺点:
- 它还是存在梯度弥散的问题。
- 计算量大,函数要进行指数运算,这个对于计算机来说是比较慢的。
(2)Relu
线性修正单元(Rectified Linear Unit,ReLU),是目前深层神经网络中经常使用的激活函数,ReLU定义为
优点:
- ReLU的神经元只需要进行加、乘和比较操作,计算更加高效。
- ReLU函数具有很好的稀疏性(约有一半的值未激活),而Sigmoid函数不具有稀疏性。
- 相比于Sigmoid的两端饱和,ReLU为左饱和函数,在 x>0 时导数为1,一定程度上缓解了神经网络梯度消失的问题,加速梯度下降的收敛速度。
缺点:
- ReLU函数的输出是非零中心化,影响了梯度下降的效率。
- 只要输入是负值,那么输出就为0,这可能导致后面的网络输入都是0,造成网络大面积坏死。
(3)Swish激活函数
由图可以观察到,其实Swish函数可以看作是线性函数和ReLU函数之间的非线性插值函数。其程度由参数 β 控制。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。