输出层的激活函数应该选择何种损失函数做搭配影响着神经网络的训练速度,并间接影响在测试数据上的分类准确性。本文抛砖引玉,整理并分析几种组合情况。
一、Sigmod与均方损失
这是一个糟糕的搭配。为什么那? 因为一个小小的符号 ,它是sigmod的导数 ,sigmod图像如下
在两端尾部的导数接近于0,结合下式输出层的学习误差可知,当输出层的学习率下降后,会间接的通过反向传播影响其它各层的学习率。
二、Sigmod与交叉熵损失
这是sigmod的绝佳搭档。先来看看交叉熵损失函数的定义。
当预测值和真实值一致时,损失为0,当预测值和真实值不一致时,损失会无限大。
现在来看输出层权重的导数(具体推导可查阅相关文档),如下
很棒,现在 消除了,学习率下降的可能性大大降低。关于偏置的情形与此类似。
三、线性激活函数与均方损失
如果 ,即权重输入等于激活输出。那么此时输出层权重的导数为
所以,如果输出层对权重输入不进行非线性变换, 也可能会消失。
四、softmax与log-likelihood cost(log-似然损失)
这个组合常用于多分类中,特别是对输出概率分布有强烈需求的应用。
先来看看 softmax 的定义,它其实对输出层各个神经元的激活输出进行了一个概率转换
再来一窥 log-likelihood cost
其中, 表示输出层的预测概率,因为输出层每个神经元都关联一个概率值,最终取最大值作为预测概率。可以看出,当预测概率对应的神经元编号等于标签值 时,损失为0,反之损失无限大。举个例子,假如在进行识别范围 0-9 的手写体数字,输出层有10个神经元,如果第2个神经元有最大的输出概率,则预测概率的值是第2个神经元的输出概率,那么模型认为该样本的标签会是2,如果确实是2,那么损失会很小;反之,损失会很大。
关于权重和偏置的导数同上,不含 项,所以学习率下降的可能性不大。
五、总结
以上4种组合,只是众多组合中的几种而已,只要激活函数和损失函数不断出现,组合也会不断出现。它们共同的目的便是把学习率下降的可能性降到最低,使得什么网络模型得到最大限度的训练。