交叉熵与KL散度和交叉熵之间的关系

1.熵

熵的本质是香农信息量 l o g 1 p log\frac{1}{p} logp1

现有关于样本的两个概率分布 p p p q q q,其中 p p p为真实分布, q q q为非真实分布。按照真实分布 p p p来衡量识别一个样本所需要的编码长度的期望(即平均编码长度)为: H ( p ) = − ∑ i P ( i ) l o g P ( i ) H(p)=-\sum_i P(i)log P(i) H(p)=iP(i)logP(i)

通用的说,熵被用于描述一个系统中的不确定性。放在信息论的语境里来说,就是一个事件所包含的信息量。变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。
可以看出,当两种取值的可能性相等时,不确定度最大,当p为0或1时,确定其一定不会或一定会发生,信息量(输出概率函数)为 H ( P ) = 0 H(P)=0 H(P)=0
在这里插入图片描述
如果使用错误分布 q q q来表示来自真实分布 p p p的平均编码长度,则应该是: H ( p , q ) = − ∑ i P ( i ) l o g   Q ( i ) H(p,q)=-\sum_i P(i)log\ Q(i) H(p,q)=iP(i)log Q(i)

因为用 q q q来编码的样本来自分布 p p p,所以期望中的概率为 p ( i ) p(i) p(i) H ( p , q ) H(p,q) H(p,q)称之为交叉熵, 就是来衡量用特定的编码方案Q来对分布为P的信息进行编码时需要的最少的bits数.

比如含有4个字母(A,B,C,D)的数据集中,真实分布 p = ( 1 / 2 , 1 / 2 , 0 , 0 ) p=(1/2, 1/2, 0, 0) p=(1/2,1/2,0,0),即A和B出现的概率均为1/2,C和D出现的概率都为0。计算 H ( p ) H(p) H(p)为1,即只需要1位编码即可识别A和B。如果使用分布 Q = ( 1 / 4 , 1 / 4 , 1 / 4 , 1 / 4 ) Q=(1/4, 1/4, 1/4, 1/4) Q=(1/4,1/4,1/4,1/4)来编码则得到 H ( p , q ) = 2 H(p,q)=2 H(p,q)=2,即需要2位编码来识别 A A A B B B(当然还有 C C C D D D,尽管 C C C D D D并不会出现,因为真实分布 p p p中C和D出现的概率为0,这里就钦定概率为0的事件不会发生啦)。

2.KL散度

可以看到上例中根据非真实分布 q q q得到的平均编码长度 H ( p , q ) H(p,q) H(p,q)和根据真实分布 p p p得到的平均编码长度 H ( p ) H(p) H(p)。事实上,根据Gibbs’ inequality可知, H ( p , q ) > = H ( p ) H(p,q)>=H(p) H(p,q)>=H(p)恒成立,当 q q q为真实分布 p p p时,取等号。

对于固定的 p p p H ( p , q ) H(p,q) H(p,q)将随着 q q q变得与 p p p越来越不同而增长。 而如果 p p p没有固定,很难将 H ( p , q ) H(p,q) H(p,q)解释为差异的绝对量度,因为它随着 p p p的熵增长。所以我们使用另一种度量方式来度量两个分布的差异性,将由 q q q得到的平均编码长度比由 p p p得到的平均编码长度多出的bit数称为“相对熵”,也叫做KL散度(Kullback–Leibler divergence):

D K L ( p ∣ ∣ q ) = H ( p , q ) − H ( p ) = ∑ i P ( i ) ∗ ( l o g P ( i ) − l o g Q ( i ) ) D_{KL}(p||q)=H(p,q)-H(p)=\sum_{i}^{} P(i)*(logP(i)-logQ(i)) DKL(pq)=H(p,q)H(p)=iP(i)(logP(i)logQ(i))

它表示2个函数或概率分布的差异性:差异越大则相对熵越大,差异越小则相对熵越小,特别地,若两者相同则KL散度为0,而交叉熵不为0,而是等于 p p p的熵。

KL散度的非对称性

注意,KL散度的非对称性,一些同学把K-L散度看作是不同分布之间距离的度量。这是不对的,因为从K-L散度的计算公式就可以看出它不符合对称性(距离度量应该满足对称性),即$D_{KL}(P||Q) \neq D K L ( Q ∣ ∣ P ) D_{KL}(Q||P) DKL(QP)。也就是说用 p p p近似 q q q和用 q q q近似 p p p,二者所得的损失信息并不是一样的。

比如TD-IDF算法就可以理解为相对熵的应用:词频在整个语料库的分布与词频在具体文档中分布之间的差异性。

KL散度与交叉熵的关系

H ( p , q ) = − ∑ P l o g Q = = − ∑ P l o g P + ∑ P l o g P − ∑ P l o g Q H(p,q)=-\sum P logQ==-\sum P logP+\sum P logP-\sum P logQ H(p,q)=PlogQ==PlogP+PlogPPlogQ
= H ( P ) + ∑ P l o g P / Q = H ( P ) + D K L ( P ∣ ∣ Q ) =H(P)+\sum P logP/Q=H(P)+D_{KL}(P||Q) =H(P)+PlogP/Q=H(P)+DKL(PQ)
可见,交叉熵就是真值分布的熵与KL散度的和,而真值的熵是确定的,与模型的参数 θ \theta θ无关,所以梯度下降求导时, ∇ H ( P , Q ) = ∇ D K L ( P ∣ ∣ Q ) \nabla H(P,Q)=\nabla D_{KL}(P||Q) H(P,Q)=DKL(PQ),即最小化交叉熵与最小化KL散度是一样的;

最大似然估计

交叉熵经常出现在(神经网络)机器学习的损失函数中。 p p p表示真实的分布, q q q则为训练后的模型的预测标记分布。例如,在分类问题中,通常使用交叉熵损失度量标签的真实分布和由分类器预测的分布之间的差异。每个数据点的真实分布将概率1分配给该数据点所属的类,将0分配给所有其他类。在这种情况下,交叉熵与负对数似然成正比,最小化负对数似然等价于最小化交叉熵:
极大似然估计:
θ ^ = a r g m a x θ ∏ i = 1 N q ( x i ∣ θ ) \hat{\theta}=arg max_{\theta}\prod_{i=1}^{N}q(x_i | \theta) θ^=argmaxθi=1Nq(xiθ)
等价于最小化负对数似然
θ ^ = a r g m i n θ − ∑ i = 1 N l o g ( q ( x i ∣ θ ) ) \hat{\theta}=arg min_{\theta}-\sum_{i=1}^{N}log(q(x_i | \theta)) θ^=argminθi=1Nlog(q(xiθ))
= a r g m i n θ − ∑ x ∈ X p ( x ) l o g ( q ( x ∣ θ ) ) =arg min_{\theta}-\sum_{x \in X} p(x)log(q(x | \theta)) =argminθxXp(x)log(q(xθ))
= a r g m i n θ H ( p , q ) =arg min_{\theta}H(p,q) =argminθH(p,q)

交叉熵作为损失函数还有一个好处是使用sigmoid函数在梯度下降时能避免均方误差损失函数学习速率降低的问题,因为学习速率可以被输出的误差所控制。??

从优化模型参数角度来说,最小化交叉熵,NLL,KL散度这3种方式对模型参数的更新来说是一样的。从这点来看也解释了为什么在深度学习中交叉熵是非常常用的损失函数的原因了。

参考资料:

  1. 如何通俗的解释交叉熵与相对熵?
  2. Why do we use Kullback-Leibler divergence rather than cross entropy in the t-SNE objective function?
  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
KL散度交叉熵是在机器学习中用于比较两个概率分布之间相似性的概念,但在一些方面它们也有所不同。KL散度用于衡量两个概率分布之间的差异,而交叉熵则用于衡量模型预测和真实标签之间的差异。 具体来说,KL散度衡量的是从一个概率分布到另一个概率分布的信息损失。它是非对称的,即KL(P||Q)不等于KL(Q||P)。KL散度的值越小,表示两个概率分布越相似。 交叉熵是在给定真实标签的情况下,衡量模型预测与真实标签之间的差异。它是对数损失函数的一种形式,用于评估模型的性能。交叉熵的值越小,表示模型的预测越接近真实标签。 总结来说,KL散度用于比较两个概率分布之间的差异,而交叉熵用于衡量模型预测和真实标签之间的差异。它们在使用和应用上有所区别,但都在机器学习中有广泛的应用。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [KL散度交叉熵的对比介绍](https://blog.csdn.net/qq_33431368/article/details/130397363)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [KL散度交叉熵](https://blog.csdn.net/Allenalex/article/details/103443060)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值