pytorch-04-激活函数
Posted shuangcao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytorch-04-激活函数相关的知识,希望对你有一定的参考价值。
sigmoid函数:
越大的负数越接近0,越大的正数越接近1
缺点:
(1)造成梯度消失:该函数在靠近1和0的两端,梯度几乎变成0,
梯度下降法:梯度乘上学习率来更新参数,如果梯度接近0,那么没有任何信息来更新参数,会造成模型不收敛
另外,使用sigmoid函数,在初始化权重时,权重太大,经过激活函数会导致大多数神经元变得饱和,没有办法更新参数
(2)sigmoid输出不是以0为均值,这就会导致经过sigmoid激活函数之后的输出,作为后面一层网络的输入的时候是非0均值的,这个时候
如果进入下一层神经元的时候全是正的,这就会导致梯度全是正的,那么在更新梯度的时候永远都是正梯度。
(详解)p52
Tanh激活函数:
将输入的数据转换到-1到1之间,输出变成了0均值,解决了sigmoid的第二个问题。
但是,仍然存在梯度消失的问题
Relu函数
优点:
(1)相比sigmoid函数和Tanh激活函数,Relu激活函数能够极大的加速随机梯度下降的收敛速度,线性,不存在梯度消失问题。
(2)计算简单,只需要一个阈值过滤就可以得到结果,不需要进行一大堆复杂的运算。
缺点:
训练时脆弱,比如一个很大的梯度经过Relu激活函数,更新参数后,会使这个神经元不会对任何数据有激活现象。如果发生这个情况之后,经过relu的梯度永远都是0,参数无法更新,因为Relu激活函数本质上是一个不可逆的过程,因为它会直接去掉输入小于0的部分。在实际操作中可以通过设置比较小的学习率来避免这个问题。
Leaky Relu
是relu的变式,主要修复relu激活函数的脆弱问题,不将x<0的部分变成0,而给它一个很小的负的斜率。
Maxout:有relu的优点,又避免了relu的缺点,但加倍了模型的参数。
max(w1*x+b1,w2*x+b2)
relu 是maxout中w1 =0,b1 =0的特殊形式。
以上是关于pytorch-04-激活函数的主要内容,如果未能解决你的问题,请参考以下文章