Sigmoid和Relu激活函数的对比

发布时间:2023-07-13 18:30

深度学习笔记(4)——Sigmoid和Relu激活函数的对比 https://blog.csdn.net/qq_21190081/article/details/64127103

Relu是一个非常优秀的激活哈数,相比较于传统的Sigmoid函数,有三个作用: 
1. 防止梯度弥散 
2. 稀疏激活性 
3. 加快计算 
首先我们看下sigmoid和relu的曲线 

\"Sigmoid和Relu激活函数的对比_第1张图片\"
 
然后可以得到sigmoid的导数 

\"Sigmoid和Relu激活函数的对比_第2张图片\"


 
以及relu的导数 

\"Sigmoid和Relu激活函数的对比_第3张图片\"
 
结论就是sigmoid的导数只有在0附近的时候有比较好的激活性,在正负饱和区的梯度都接近于0,所以这会造成梯度弥散,而relu函数在大于0的部分梯度为常数,所以不会产生梯度弥散现象。

第二,relu函数在负半区的导数为0 ,所以一旦神经元激活值进入负半区,那么梯度就会为0,也就是说这个神经元不会经历训练,即所谓的稀疏性。

第三,relu函数的导数计算更快,程序实现就是一个if-else语句,而sigmoid函数要进行浮点四则运算。综上,relu是一个非常优秀的激活函数

 

这里也小结一下ReLU函数相对于tanh和sigmoid函数好在哪里:

第一,采用sigmoid等函数,算激活函数是(指数运算),计算量大;反向传播求误差梯度时,求导涉及除法,计算量相对大。而采用Relu激活函数,整个过程的计算量节省很多。

第二,对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0),这种情况会造成信息丢失,梯度消失在网络层数多的时候尤其明显,从而无法完成深层网络的训练。

第三,ReLU会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。

 

 

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号