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