其他分享
首页 > 其他分享> > 交叉熵损失函数的理解

交叉熵损失函数的理解

作者:互联网

两个概率分布P和Q的交叉熵定义为(考虑离散分布):

H(P,Q)=\sum_{i=1}^{m}p_i \log q_i

在机器学习中,往往用p来描述真实分布,  用q来描述模型预测的分布。我们希望预测的分布和真实分布接近,衡量两个分布的“距离”采用Kullback散度,离散形式的KL散度定义为:

D_{KL}(P||Q)=\sum_{i=1}^{m}p_i\log(\frac{p_i}{q_i})

 

H(P,Q)=\sum_{i=1}^{m}p_i \log q_i = D_{KL}(P||Q)+H(P)

因为H(P)是真实分布的熵,是固定的,所以最小化KL散度就相当于最小化交叉熵。

在二分类问题中。m=2. 假定真实的输出为y\in\{1,0\},模型的预测结果为\hat{y}

那么就是

p_1 &= y, p_2 &= 1-y \\ q_1 &= \hat{y}, q_2 &=1-\hat{y}

所以对于单个样本,交叉熵为

L=-[ylog\ \hat y+(1-y)log\ (1-\hat y)]

使用交叉熵的优点在于:

和采用均方误差这样的二次的代价函数相比,假设我们的神经元采用的是sigmod函数,那这个二次代价函数在对权重w求导的时,会乘上一项sigmod的导数。sigmod函数的导数在权重大的时,导函数值小,这样就会使得在梯度下降的时候权重更新的很慢。而采用交叉熵函数的话,他的导数不包含sigmod函数的导数这一项,这样在梯度下降的时候就不存在前面说的问题。

 

参考文献

【1】https://zhuanlan.zhihu.com/p/70804197

【2】https://blog.csdn.net/red_stone1/article/details/80735068

【3】http://litowang.top/2017/11/11/cross-entropy/

标签:函数,导数,sigmod,交叉,散度,损失,分布
来源: https://blog.csdn.net/weixin_42150026/article/details/98962255