文章参考自https://mp.weixin.qq.com/s/pA9JW75p9J5e5KHe3ifcBQ
感谢,仅用于学习,侵删
不同损失函数作者在mnist数据集上训练的损失如下
![](https://img.haomeiwen.com/i17682830/58456b81e2d476e4.png)
sigmoid 函数
定义式
![](https://img.haomeiwen.com/i17682830/4f37c2ebe66a95d0.png)
图像
![](https://img.haomeiwen.com/i17682830/0a18b5b8356c528d.png)
sigmoid函数是一个logistic函数(不管输入是什么输出总在0和1之间)。很多激活函数都是非线性或者线性和非线性函数的组合(很少)
存在问题:
若输入值通常很大,则经过激活函数会遇到梯度消失的问题
如果所有权重都很大,即使乘上学习率,回传的梯度也很大,爆炸性更新权值,会遇到梯度爆炸的问题
梯度爆炸解决方法:梯度裁剪/规范
选取一个梯度阈值,超过阈值进行裁剪或者通过梯度规范化将其缩放到阈值范围内
整流线性单元Relu
表达式
![](https://img.haomeiwen.com/i17682830/a1a20f55eece4bfc.png)
图像
![](https://img.haomeiwen.com/i17682830/aa35f7d94b2f7545.png)
死亡Relu问题:如果在计算梯度值时大多数值都小于0,会得到很多不会更新的权值和偏置
优点:由于稀疏性,空间和时间复杂度低,不涉及高成本的指数运算;避免梯度消失问题
缺点:引入死亡relu问题,大部分分量永远不会更新;不能避免梯度爆炸问题
指数线性单元ELU
定义式:
![](https://img.haomeiwen.com/i17682830/575a017597afc903.png)
α为可调参数,一般在0.1到0.3之间
图像:(α=0.2)
![](https://img.haomeiwen.com/i17682830/ab77bd8282b9169f.png)
其导数:
![](https://img.haomeiwen.com/i17682830/0cc2716d4a1a8448.png)
优点:避免死亡relu问题;能得到负值输出,帮助网络向正确的方向推动权值和偏置的变化
缺点:包含指数运算,时间长;无法避免梯度爆炸问题;神经网络不学习超参数α的值
渗漏型整流线性单元激活函数(Leaky ReLU)
表达式:
![](https://img.haomeiwen.com/i17682830/970a036e601cf7eb.png)
图像(α=0.2)
![](https://img.haomeiwen.com/i17682830/66bb97456145b857.png)
优点:避免死亡relu问题;不包含指数运算
缺点:无法避免梯度爆炸问题;神经网络不学习α值;微分时两部份都是线性的
扩展型指数线性单元激活函数SELU
表达式:
![](https://img.haomeiwen.com/i17682830/5a4249fa8fdb4469.png)
图像
![](https://img.haomeiwen.com/i17682830/d92db829e2317777.png)
优点:内部归一化的速度比外部归一化快,这意味着网络能更快收敛;不可能出现梯度消失或爆炸问题,见 SELU 论文附录的定理 2 和 3。
缺点:这个激活函数相对较新——需要更多论文比较性地探索其在 CNN 和 RNN 等架构中应用。这里有一篇使用 SELU 的 CNN 论文:https://arxiv.org/pdf/1905.01338.pdf
网友评论