交叉熵与KL散度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交叉熵与KL散度相关的知识,希望对你有一定的参考价值。

参考技术A

老遇到交叉熵作为损失函数的情况,于是总结一下

交叉熵从KL散度(相对熵)中引出,KL散度(Kullback-Leibler Divergence)公式为:

KL散度是衡量两个分布之间的差异大小的,KL散度大于等于0,并且越接近0说明p与q这两个分布越像,当且仅当p与q相等时KL散度取0.

在机器学习的分类问题中,常以交叉熵作为损失函数,此时同样可以衡量两个分布的差异.
在分类问题中, 某一个样本x 可能是K种类别中的一种,y(x)代表样本x对应 类别的分布 ,y^~(x)代表x属于各个 类别的预测值的分布 , 这句话描述的是关于类别的分布,而不是样本的分布,不要弄混.
训练时,针对某一个标签信息y(x)是已知的,所以讲KL(y(x)||y^~(x))中的H(y(x))是个常数,此时KL散度等价于交叉熵,所以交叉熵可以衡量p(x)与q(x)的差异,我们希望q(x)尽可能地接近p(x),等价于最小化交叉熵
对于某一个样本x ,其交叉熵为:

因为训练集中每个样本的标签是已知的,此时标签和预测的标签之间的KL散度等价于交叉熵.
要认识到, 标签可以看成分布 ,举例来说,某个分类任务共有4类,其中一个样本的真实标签分布为(0,0,1,0),预测的标签分布为(0.2,0.1,0.5,0.2),使用交叉熵的目的便是使预测的标签分布尽可能接近(0,0,1,0)

以上是关于交叉熵与KL散度的主要内容,如果未能解决你的问题,请参考以下文章

KL散度交叉熵与极大似然 的友谊

相对熵(KL散度)

理解「交叉熵」损失函数(包含自信息信息熵KL散度交叉熵概念整理)

机器学习基础熵KL散度交叉熵

通俗理解交叉熵和KL散度(包括标签平滑的pytorch实现)

通俗理解交叉熵和KL散度(包括标签平滑的pytorch实现)