我们知道对于回归问题一般采用均方差来计算损失,这是因为回归输出的是一个实数,这样来计算一个batch中预测值与实际的均方差是自然而然的选择的,而且导数非常简单(神经网络参数的更新依据就是梯度也就是偏导),这里不再推导均方差的偏导。
但对于分类问题,输出的是一个n维的向量,向量的每个值是对应分类的概率,概率最大的就是预测的分类结果。样本的标签值也是一个概率分布,表情衡量两个概率分布之间的距离当然就是交叉熵,但是神经网络的输出又不完全符合概率分布(概率分布的基本要素:所有事件概率和为1),这样就引出的sotfmax函数,它的作用就是把输出转换成概率分布,以用来计算交叉熵损。之所以选用交叉熵还有一个重要的原因就是梯度计算简单(偏导数非常简洁,神经网络的训练是计算密集型,这样可以提高训练效率)。
z_为原始的神经网络输出,经过sotfmax转化为概率分布y_
这里写图片描述
损失函数交叉熵的计算公式:
这里写图片描述
梯度的推导过程如下:
这里写图片描述
看到最后的结果不是一般的简单,而是非常简单,梯度就是预测值与标签的差。所以输出是概率分布或者可以转化为概率分布的神经网络用交叉熵是非常合适的。
作者:亚当-adam
来源:CSDN
原文:https://blog.csdn.net/zhaojianting/article/details/80681096
版权声明:本文为博主原创文章,转载请附上博文链接!