深度学习中的熵、交叉熵、相对熵(KL散度)、极大释然估计之间的联系与区别

熵的最初来源于热力学。在热力学中,熵代表了系统的无序程度或混乱程度,也可以理解为系统的热力学状态的一种度量。后来被广泛引用于各个领域中,如信息学、统计学、AI等,甚至社会学当中。接下来将大家领略一下深度学习中熵的应用。

1. 熵(信息熵)

信息熵:Entropy,信息论中的概念,用来衡量信息的不确定性或随机性。信息熵越高,表示信息的不确定性越大。

1.1 自信息

自信息表示某一事件发生时所带来的信息量的多少,当事件发生的概率越大,则自信息越小。如何理解呢?如:某动物园猴子会说话这件事发生的概率很小,但是发生了,这一定是一个爆炸新闻,信息量很大,所以概率越小,信息量越大;相反,猴子不会说话,是一件确定的事情,概率很大,平平无奇的一件事,信息自然越小。公式可以用以下描述: P ( x i ) P(x_i) P(xi)表示随机变量 x i x_i xi发生的概率。 I ( P ( x i ) ) = − l o g ( P ( x i ) ) I(P(x_i)) = -log(P(x_i)) I(P(xi))=log(P(xi))

在这里插入图片描述

1.2 信息熵

自信息只能对单个事件信息描述,如果要对系统概率分布的平均信息量进行描述就需要信息熵,也就是所谓的熵。平均也就是求均值。
H ( X ) = E ( I ) = − E x ∼ P ( l o g ( P ( x i ) ) ) = − ∑ i = 1 n P ( x i ) l o g ( P ( x i ) ) H(X)=E(I)=-E_{x\sim P}(log(P(x_i)))=-\sum_{i=1}^nP(x_i)log(P(x_i)) H(X)=E(I)=ExP(log(P(xi)))=i=1nP(xi)log(P(xi))
从公式可以看出,那些接近确定性的分布(输出几乎可以确定)具有较低的熵,那些接近均匀分布的概率分布具有较高的熵。如:二值分布,P(0) = 0 , P(1) = 1 带入公式得到 H=0。

2.交叉熵

2.1 交叉熵

交叉熵是一种用来衡量两个概率分布之间差异的指标,常用于评估模型输出与真实标签之间的差异。先看公式:
H ( P , Q ) = − E x ∼ P ∑ i = 1 n l o g ( Q ( x i ) ) = ∑ i = 1 n P ( x i ) l o g ( Q ( x i ) ) H(P,Q)=-E_{x\sim P}\sum_{i=1}^nlog(Q(x_i))=\sum_{i=1}^nP(x_i)log(Q(x_i)) H(P,Q)=ExPi=1nlog(Q(xi))=i=1nP(xi)log(Q(xi))
P ( x i ) P(x_i) P(xi) 是真实分布, Q ( x i ) Q(x_i) Q(xi)是模型预测分布,假如模型预测分布等于真实分布,则 H ( P , Q ) = − ∑ i = 1 n P ( x i ) l o g ( P ( x i ) ) = H ( P ) H(P,Q)=-\sum_{i=1}^nP(x_i)log(P(x_i))=H(P) H(P,Q)=i=1nP(xi)log(P(xi))=H(P),可以看出即使预测很准确,交叉熵也不等于0,但是为什么模型优化,对于分类任务使用交叉熵呢。将交叉熵公式变形得到:
H ( P , Q ) = − ∑ i = 1 n P ( x i ) l o g ( Q ( x i ) ) − ∑ i = 1 n P ( x i ) l o g ( P ( x i ) ) + ∑ i = 1 n P ( x i ) l o g ( P ( x i ) ) = − ∑ i = 1 n P ( x i ) l o g ( Q ( x i ) P ( x i ) ) + H ( P ) H(P,Q)=-\sum_{i=1}^nP(x_i)log(Q(x_i)) - \sum_{i=1}^nP(x_i)log(P(x_i)) + \sum_{i=1}^nP(x_i)log(P(x_i))\\=-\sum_{i=1}^nP(x_i)log(\frac{Q(x_i)}{P(x_i)}) + H(P) H(P,Q)=i=1nP(xi)log(Q(xi))i=1nP(xi)log(P(xi))+i=1nP(xi)log(P(xi))=i=1nP(xi)log(P(xi)Q(xi))+H(P)
定义KL散度: D K L ( P ∣ ∣ Q ) = − ∑ i = 1 n P ( x i ) l o g ( Q ( x i ) P ( x i ) ) D_{KL}(P||Q) = -\sum_{i=1}^nP(x_i)log(\frac{Q(x_i)}{P(x_i)}) DKL(P∣∣Q)=i=1nP(xi)log(P(xi)Q(xi)) ,所以 H ( P , Q ) = D K L ( P ∣ ∣ Q ) + H ( P ) H(P,Q)=D_{KL}(P||Q)+H(P) H(P,Q)=DKL(P∣∣Q)+H(P),由于P是真实值,其H(P )必然为固定值,因此对 H ( P , Q ) H(P,Q) H(P,Q)求梯度实际上是对 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q)求梯度,因此在分类任务中交叉熵的优化任务可以看成是对 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q)优化。
我们再看一下 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q)公式,如果想要其最小,则势必Q(x)=P(x),因此优化交叉熵 H ( P , Q ) H(P,Q) H(P,Q)和优化KL散度 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q)是一样的,从公式复杂程度来看,优化交叉熵会更简单一些,这也是为什么分类任务模型训练更喜欢用交叉熵损失,而这只是其中一个原因。我们可以接下来看,既然有了交叉熵,为什么还有KL散度,后面在介绍原因。

2.2 交叉熵损失

2.2.1 逻辑回归

我们先看一下最初的逻辑回归公式,有人说来源于最小化交叉熵,也有人说来源于最大释然估计,其实两种说法是等价的。2.1已经证明最小化交叉熵的结果是使预测值Q(x)=P(x),对于分类任务(逻辑回归)我们的目的也是如此,希望预测概率和真实概率一致。因此定义了预测概率函数 h θ ( x ) h_\theta(x) hθ(x)代替Q(x),真实值 y y y代替P(x),因此由交叉熵演变的二分类逻辑回归损失函数为,这里y=0或者1,因此二值的概率也可写为 h θ ( x ) , 1 − h θ ( x ) h_\theta(x),1 - h_\theta(x) hθ(x),1hθ(x)
J ( θ ) = − ∑ i = 0 , 1 y l o g h θ ( x ) = y l o g h θ ( x ) + ( 1 − y ) l o g ( 1 − h θ ( x ) ) J(\theta)=-\sum_{i=0,1}ylogh_\theta(x) = ylogh_\theta(x) + (1-y)log(1-h_\theta(x)) J(θ)=i=0,1yloghθ(x)=yloghθ(x)+(1y)log(1hθ(x))
这就是我们熟悉的二分类的逻辑回归损失了,如果是n分类呢,二分类只不过是多分类的一个特例,这里的 h θ ( x ) h_\theta(x) hθ(x)使用 q i q_i qi代替,
C r o s s E n t r o p y L o s s = J ( θ ) = − ∑ i = 1 n y i l o g ( q i ( x , θ ) ) CrossEntropy Loss = J(\theta)=-\sum_{i=1}^ny_ilog(q_i(x,\theta)) CrossEntropyLoss=J(θ)=i=1nyilog(qi(x,θ))
q i ( x , θ ) q_i(x,\theta) qi(x,θ)是模型预测并且经过softmax的结果,n是类别数

2.2.2 交叉熵损失

2.1 说了交叉熵的优化结果不能使交叉熵的值为0,但是能够使预测值趋向真实值,也做了推导。而交叉熵损失函数在多分类优化结果是怎样的呢。我们想得到预测值跟真实值一样,过来一个样本,假如真实值标签是5,因此我们希望预测概率 q 5 ( x , θ ) = 1 q_5(x,\theta)=1 q5(x,θ)=1,其他为0,而我们损失函数必然为0,因此我们所用的交叉熵损失函数在分类任务最终理想结果是为0这不同于交叉熵,交叉熵一定会大于0。
为什么不用KL散度? 对于分类任务来说,真实值分布P(x),习惯上叫先验分布是难以确定的,比如说一张图片是猫是狗还是牛马,满足什么分布呢?很难说吧!而在生成模型中,KL散度却被广泛应用,原因是因为生成模型中假定了其分布为正态分布。后续有时间会写VQ-VAE一些生成模型,在介绍吧。

3.相对熵( KL散度)

公式: D K L ( P ∣ ∣ Q ) = − ∑ i = 1 n P ( x i ) l o g ( Q ( x i ) P ( x i ) ) D_{KL}(P||Q) = -\sum_{i=1}^nP(x_i)log(\frac{Q(x_i)}{P(x_i)}) DKL(P∣∣Q)=i=1nP(xi)log(P(xi)Q(xi))
在2.1中已经隐藏的介绍了KL散度,这其实完全是用来衡量两个概率分布之间的相似性。KL=0,则完全表明Q(x)=P(x),预测值跟真实值一样。其在生成模型中应用较为广泛

4.极大释然估计

释然函数:
L ( θ ) = ∏ i = 0 n Q ( x i , θ ) L (\theta)= \prod_{i = 0}^{n}Q(x_i,\theta) L(θ)=i=0nQ(xi,θ)
优化释然函数,当所有随机变量概率相乘得到最大L时,此时的 θ \theta θ为最优解
等价于优化取对数最大值结果 l o g ( L ( θ ) ) = ∑ i = 0 n Q ( x i , θ ) log(L (\theta))= \sum_{i = 0}^{n}Q(x_i,\theta) log(L(θ))=i=0nQ(xi,θ)
等价于优化取相反数最小结果 − l o g ( L ( θ ) ) = − ∑ i = 0 n l o g ( Q ( x i , θ ) ) -log(L (\theta))=- \sum_{i = 0}^{n}log(Q(x_i,\theta)) log(L(θ))=i=0nlog(Q(xi,θ))
等价于优化取均值最小结果 E ( . . . ) = − E x ∼ Q ∑ i = 0 n l o g ( Q ( x i , θ ) ) E(...)=- E_{x\sim Q}\sum_{i = 0}^{n}log(Q(x_i,\theta)) E(...)=ExQi=0nlog(Q(xi,θ)),
由于Q分布最终预测是近似P分布,所以 E ( . . . ) ≈ E x ∼ P ∑ i = 0 n l o g ( Q ( x i , θ ) ) E(...)\approx E_{x\sim P}\sum_{i = 0}^{n}log(Q(x_i,\theta)) E(...)ExPi=0nlog(Q(xi,θ)),
上式就是交叉熵的公式H(P,Q)。
因此最终我们得到以下结论:
优化极大释然函数=优化最小值交叉熵=优化最小值KL散度

5.备注参考说明

备注:文中所有真实分布为p或P,预测分布为q或Q。
参考:
https://zhuanlan.zhihu.com/p/35423404
https://blog.csdn.net/SongGu1996/article/details/99056721
https://zhuanlan.zhihu.com/p/38853901

  • 29
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

idealmu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值