神经网络激活函数的总结

激活函数很多,目前我接触到的有tanh(双曲正切)、sigmoid函数以及relu函数,这三个应该是比较主流的。目前本人也是初步学习,通过后面的学习慢慢补充经验。

首先最先接触到的是sigmoid函数,公式如下图。特性是输出介于0和1之间,当z≥10,a≈1,此时的导数≈0;当z≤-10,a≈0,导数≈0;z=0时,a=0.5,导数等于1/4,通过图片的曲线可以看出。

在这里插入图片描述
因为sigmoid的输出值介于0和1之间,所以可以容易地理解为概率,一般可以作为神经网络结构最后的输出,也适合于二分类。
第二种是tanh函数,几乎在所有的场合都由于sigmoid函数,是sigmoid函数变换来的。当z=10,tanh(z)≈1,导数约等于0;当z=-10,tanh(1)≈-1,导数≈0;z=0,tanh(z)=0,导数等于1。

在这里插入图片描述
tanh图像

第三个是RELU函数,适用于较复杂的模型和数据,目前基本上不确定的激活函数的隐层就采用relu函数,使用的好处在于斜率不会接近0,训练额速度大大增加。当输入的Z非常大或非常小时(接近1或-1/0),采用RELU激活函数;Z大于0,斜率为1,z<0,a为0。
在这里插入图片描述
还有一种形式是Leaky RELU函数,是RELU函数的变化形式当z>0:a’=1;当z<0:a’=0.01。在这里插入图片描述
对于线性激活函数,基本不适用,最多在输出层使用。因为多层结构的线性激活函数仅仅相当于线性叠加,没有任何意义,隐层再多也没有作用。

发布了12 篇原创文章 · 获赞 0 · 访问量 128

猜你喜欢

转载自blog.csdn.net/caihuanqia/article/details/104215753
今日推荐