Relu是一个非常优秀的激活哈数,相比较于传统的Sigmoid函数,有三个作用:
1. 防止梯度弥散
2. 稀疏激活性
3. 加快计算
首先我们看下sigmoid和relu的曲线
然后可以得到sigmoid的导数
以及relu的导数
结论就是sigmoid的导数只有在0附近的时候有比较好的激活性,在正负饱和区的梯度都接近于0,所以这会造成梯度弥散,而relu函数在大于0的部分梯度为常数,所以不会产生梯度弥散现象。第二,relu函数在负半区的导数为0 ,所以一旦神经元激活值进入负半区,那么梯度就会为0,也就是说这个神经元不会经历训练,即所谓的稀疏性。第三,relu函数的导数计算更快,程序实现就是一个if-else语句,而sigmoid函数要进行浮点四则运算。综上,relu是一个非常优秀的激活函数,鄙人的最爱
本博客搬自我在知乎上的回答https://www.zhihu.com/question/52020211/answer/152378276