鄙人的新书《Elasticsearch权威指南》正式出版发行,欢迎购买!本书由华为、中兴高级技术专家全面审读并撰序,助您挑战百万年薪 购书链接:
《Elasticsearch权威指南》
视频教学地址:https://edu.csdn.net/course/detail/8574
技术交流qq群: 659201069
我们知道对于回归问题一般采用均方差来计算损失,这是因为回归输出的是一个实数,这样来计算一个batch中预测值与实际的均方差是自然而然的选择的,而且导数非常简单(神经网络参数的更新依据就是梯度也就是偏导),这里不再推导均方差的偏导。
但对于分类问题,输出的是一个n维的向量,向量的每个值是对应分类的概率,概率最大的就是预测的分类结果。样本的标签值也是一个概率分布,表情衡量两个概率分布之间的距离当然就是交叉熵,但是神经网络的输出又不完全符合概率分布(概率分布的基本要素:所有事件概率和为1),这样就引出的sotfmax函数,它的作用就是把输出转换成概率分布,以用来计算交叉熵损。之所以选用交叉熵还有一个重要的原因就是梯度计算简单(偏导数非常简洁,神经网络的训练是计算密集型,这样可以提高训练效率)。
z_为原始的神经网络输出,经过sotfmax转化为概率分布y_
损失函数交叉熵的计算公式:
梯度的推导过程如下:
看到最后的结果不是一般的简单,而是非常简单,梯度就是预测值与标签的差。所以输出是概率分布或者可以转化为概率分布的神经网络用交叉熵是非常合适的。