自学内容网 自学内容网

熵相关概念(一)——熵、KL散度

1 熵的概念

事件的信息量与其概率有关,假设X是离散型随机变量,X=x的信息量为-logp(x),概率越大,信息量越低。关于这一点的解释,网上有很多例子,比如说太阳从东方升起概率为100%,提供的信息量很低;太阳从西边升起概率为0%,提供的信息量很大,笔者隐约觉得这种解释有偷换概念嫌疑,等深入理解信息论后再举例。

熵为事件的期望/平均信息量,表示为H(P)=-\sum_xP(x)logP(x)

2 KL散度的概念

KL散度(Kullback-Leibler Divergence),又称相对熵、信息散度,用于表示两个分布之间的距离。笔者在学习各类深度学习模型尤其是生成模型时,发现经常要用到KL散度,因为生成模式本质上是学习一个概率分布,使其尽量接近真实数据分布,因此要求这2个概率分布之间的距离越小越好。因此笔者专门新开一篇文章分析KL散度。

离散分布下,

KL[P||Q]=\sum_{x\in X}[P(x)\log\frac{P(x)}{Q(x)}]=E_{x\sim P(x)}[log\frac{P(x)}{Q(x)}]

连续分布下

KL[P||Q]=\int {P(x)log\frac{P(x)}{Q(x)}dx}

直观上看,要取出P中所有的x,对两个分布概率相除取对数,用P加权求和。

KL散度可表示为:

\sum_xP(x)logP(x)-\sum_xP(x)logQ(x)=-H(P)+[-\sum_xP(x)logQ(x)]

前者即为熵,后者为交叉熵。

2.1 不对称性

根据定义,KL散度不是对称的,KL[P||Q]\neq KL[Q||P]。前者被称为前向KL散度,后者被称为后向KL散度。从名称可以看出,KL散度又叫相对熵,是一个分布相对与另一个分布的熵,是有相对顺序的。在深度学习中,经常遇到的一个问题是学习到一个概率分布,使其尽量接近真实分布(真实分布一般是无法直接获得的),有的模型就用到了KL散度,即真实分布为P,训练出的分布为Q,使得前向散度越小越好。

2.2 非负性

利用对数函数凹凸性质以及jensen不等式即可证明。

KL[P||Q]=\sum_{x\in X}[P(x)\log\frac{P(x)}{Q(x)}]=\sum_{x\in X}[P(x)*-(\log\frac{Q(x)}{P(x)})]

\geq -(\log \sum_x P(x)*\frac{Q(x)}{P(x)})=-(\log \sum_x Q(x))=0

2.3 不满足三角不等式

三角不等式是指距离的度量中,A和B的距离小于A和C距离+C和B的距离。KL散度不满足此特性。

KL[P||Q]-(KL[P||R]+KL[R||Q])

=\sum_x[P(x)logP(x)]-\sum_x[P(x)logQ(x)]-\sum_x[P(x)logP(x)]

+\sum_x[P(x)logR(x)]-\sum_x[R(x)logR(x)]+\sum_x[R(x)logQ(x)]

=\sum_x[P(x)-R(x)]log\frac{R(x)}{Q(x)},此式无法判定大于0还是小于0。

3 KL散度的分析

3.1 前向KL散度的分析

前向KL散度实质是P(x)和Q(x)在每个样本点x上的差异被P(x)加权平均。由于P(x)是权重,因此我们讨论权重为0(或近似为0)和权重不为0的情况。

P(x)为0P(x)不为0
前向KL散度P与Q的差异可以忽略影响KL散度
极小化KL散度的效果忽视拟合精度提高拟合精度

当P(x)为0时,权重为0,此时KL散度不受该样本x的影响。

注意,当P(x)近似为0时,此时如果Q(x)近似为0,对数项为无穷大,那么二者相乘是0吗?

P(x)log\frac{P(x)}{Q(x)}=P(x)logP(x)-P(x)logQ(x)=\frac{P(x)}{logQ(x)}-\frac{P(x)}{logP(x)}假设分子分母趋近于0的速度一致,根据洛必达法则,该式等于0。因此虽然对数项趋近于无穷,但是因为对数函数趋近速度更慢的关系,该式还是0。

当P(x)不为0时,权重大于0,此时KL散度受样本x的影响。因此极小化KL散度的效果就是:(1)对于P(x)=0的样本,忽略P与Q之间的差异;(2)对于P(x)>0的样本,尽量使P与Q接近。

上图是极小化前向KL散度的效果,可以发现P(x)=0时(中间位置),Q与P的差异可能非常大,甚至Q取到了最大值。当P(x)>0时,Q尽量接近P,尽力避免Q为0(这种特性也叫zero avoiding)。

3.2 后向KL散度的分析

与前向KL散度相反,极小化反向KL散度时,当Q(x)为0时,P与Q的差异可以忽略;当Q(x)>0时,P与Q尽量接近。

上图是极小化后向KL散度的效果,可以发现Q(x)=0时(右侧位置),Q与P的差异可能非常大,甚至P取到了局部峰值。当Q(x)>0时,P尽量接近Q。

3.3 极小化KL散度的行为效果特征

极小化前向KL散度的效果是寻找均值(Mean-Seeking Behaviour),可以发现极小化前向KL散度下,绿色的分布的均值尽可能与蓝色分布一致,效果上来看,绿色分布目标是找到蓝色分布的均值。

极小化后向KL散度的效果是搜寻模态(Mode-Seeking Behaviour),可以发现绿色分布找到了蓝色分布中的其中一种模式(即双峰找到了其中一个峰)。

这里举一个比较形象的例子便于读者理解。假设有2个大学生选修了一门课程,前向KL散度和后向KL散度分别对应2个学生A和B。此课程中老师布置了多个课题。P的概率分布可以认为是老师布置课题,课题占期末成绩分数就是概率值。Q的概率分布可以认为是大学生在各个课题中分配精力。

A的做法是只要看到老师布置了课题,就要分配精力,只要老师不布置课题(P(x)=0),就不分配精力,而是用于自己娱乐。最后的效果是A把精力匀给各个课题,因此各个课题分数比较平均。

B的做法是“出手必精品”,老师布置课题时,觉得只要自己没分配精力(Q(x)=0),就不算输,所以做得很差也无所谓,但当他分配精力时(出手时),就尽全力做好这一个课题,因此看起来在单个课题上非常优秀,在其他课题上表现极差,呈现偏科的结果。

4 极小化前向散度等价于极大似然估计

考虑一个生成模型,真实数据分布是P(x),要训练出近似的数据分布Q_{\theta}(X)拟合真实分布,\theta是模型的参数。极小化前向KL下,

\arg\min_{\theta}KL(P||Q)

=\arg\min_{\theta}E_{x\sim P}[-log{Q_\theta(x)}]

=\arg\max_{\theta}E_{x\sim P}[log{Q_\theta(x)}]\approx \arg\max_{\theta}E_{x\sim P_{data}}[log{Q_\theta(x)}]

=arg\max_{\theta}E_{x\sim P_{data}}[Q_\theta(x)]

第一步是因为P与\theta无关,可以省略,注意到该步剔除的其实就是P(x)的信息熵:-\sum _{x}[P(x)logP(x)]。最后一步是因为在P中抽样较多时,样本的分布可近似为真实分布。最后的式子就是极大似然估计。

5 极小化后向散度等价于拟合的同时尽可能保持单一模态

这里模态有些抽象,还是可以用上文的例子,即概率分布图像的峰,或者是老师布置的课题分数。

\arg\min_{\theta}KL(Q||P)=\arg\min_{\theta}(E_{x\sim Q_\theta}[-log{P(x)}]+H(Q_\theta(X)))

这里H代表Q的信息熵。

观察上式求和的两项,第一项越小代表P与Q越接近,即根据Q概率分布抽样得到的样本在P中第二项越小代表Q的熵越小。熵越大代表分布越均匀,那么熵越小代表越趋向于单峰。

6 KL散度计算示例

在计算时会遇到分母概率为0的问题导致无法计算,此时可以认为此处概率为一个很小的值,并将概率其他位置扣掉这个很小的值。例如

样本x1x2x3x4
P3/51/51/50
Q5/93/901/9

由于P和Q在某些位置概率为0,因此直接计算KL散度会有问题。因此将0修改成很小的值,例如0.0001,并在其他有位置扣掉此概率,得到

样本x1x2x3x4
P3/5-0.0001/31/5-0.0001/31/5-0.0001/30.0001
Q5/9-0.0001/33/9-0.0001/30.00011/9-0.0001/3

使用此概率分布代入KL公式计算即可

参考资料

《进阶详解KL散度》这篇写得非常好,本文只是在此基础上增加了一些通俗化语言方便理解

《信息论-决策树》


原文地址:https://blog.csdn.net/cufewxy1/article/details/145159269

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!