思考ReLU函数

激活函数的作用?

是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算叠加了若干层以后,无非还是个矩阵相乘罢了。如果没有非线性的话,根本算不上什么神经网络。

为什么ReLU效果好?

为什么ReLU好过sigmoid呢?首先看一下sigmoid和ReLU的曲线:

在这里插入图片描述
然后可以得到sigmoid的导数:
在这里插入图片描述
以及ReLU的导数:
在这里插入图片描述
结论就是sigmoid的导数只有在0附近的时候有比较好的激活性,在正负饱和区的梯度都接近于0,所以这会造成梯度弥散,而relu函数在大于0的部分梯度为常数,所以不会产生梯度弥散现象。第二,relu函数在负半区的导数为0 ,所以一旦神经元激活值进入负半区,那么梯度就会为0,也就是说这个神经元不会经历训练,即所谓的稀疏性。第三,relu函数的导数计算更快,程序实现就是一个if-else语句,而sigmoid函数要进行浮点四则运算。综上,relu是一个非常优秀的激活函数

夏飞在知乎专栏总结了各种激活函数的优缺点,可以参考:
https://zhuanlan.zhihu.com/p/25110450

猜你喜欢

转载自blog.csdn.net/gaopursuit/article/details/86504411
今日推荐