机器学习中的信息熵 、交叉熵 、 相对熵 、KL散度 、 Wasserstein距离【收藏】

3,098 阅读9分钟

学习更多机器学习深度学习内容见 望江智库 yuanxiaosc.github.io/

概念

自信息:符合分布 P 的某一事件 x 出现,传达这条信息所需的最小信息长度为自信息,表达式为:

I(x)=log\frac{1}{p(x)}

熵:从分布 P 中随机抽选一个事件,传达这条信息所需的最优平均信息长度为香农熵,表达式为:

H(P)=\sum_xP(x)log{\frac{1}{P(x)}}

交叉熵:用分布 P 的最佳信息传递方式来传递分布 Q 中随机抽选的一个事件,所需的平均信息长度为交叉熵,表达式为:

H_p(Q)=\sum_xQ(x)log\frac{1}{P(x)}

KL 散度,用分布 P 的最佳信息传递方式来传达分布 Q,比用分布 Q 自己的最佳信息传递方式来传达分布 Q,平均多耗费的信息长度为 KL 散度,表达为 D_p(Q)KL(Q||P),KL 散度衡量了两个分布之间的差异。

D_p(Q)=KL(Q||P)=\sum_xQ(x)log\frac{1}{P(x)}-\sum_xQ(x)log\frac{1}{Q(x)}=\sum_xQ(x)log\frac{Q(x)}{P(x)}

D_p(Q)KL(Q||P) 涉及两个分布:

  • 要传达的信息来自哪个分布,答案是 Q
  • 信息传递的方式由哪个分布决定,答案是 P

KL 散度概念解读

由 KL 散度的公式可知,分布 Q 里可能性越大的事件,对 D_P(Q) 影响力越大。如果想让 D_P(Q) 尽量小,就要优先关注分布 Q 里的常见事件(假设为 x),确保它们在分布 P 里不是特别罕见。

因为一旦事件 x 在分布 P 里罕见,意味着在设计分布 P 的信息传递方式时,没有着重优化传递 x 的成本,传达事件 x 所需的成本,log(1/P(x)) 会特别大。所以,当这一套传递方式被用于传达分布 Q 的时候,我们会发现,传达常见事件需要的成本特别大,整体成本也就特别大。

类似地,想让 D_Q(P) 特别小,就要优先考虑分布 P 里那些常见的事件们了。这时,分布 Q 里的常见事件,就不再是我们的关注重点。

信息熵

熵是传输一个随机变量状态值所需的比特位的下界

信息论之父 C. E. Shannon 在 1948 年发表的论文“通信的数学理论( A Mathematical Theory of Communication )”中, Shannon 指出,任何信息都存在冗余,冗余大小与信息中每个符号(数字、字母或单词)的出现概率或者说不确定性有关。 Shannon 借鉴了热力学的概念,把信息中排除了冗余后的平均信息量称为“信息熵”,并给出了计算信息熵的数学表达式。

信息熵基本内容

通常,一个信源发送出什么符号是不确定的,衡量它可以根据其出现的概率来度量。概率大,出现机会多,不确定性小;反之就大。 不确定性函数 f 是概率 P 的单调递降函数;两个独立符号所产生的不确定性应等于各自不确定性之和,即f(P1,P2)=f(P1)+ f(P2),这称为可加性。同时满足这两个条件的函数f是对数函数,即 f(P)=log(\dfrac{1}{p})=-log(p)

在信源中,考虑的不是某一单个符号发生的不确定性,而是要考虑这个信源所有可能发生情况的平均不确定性。若信源符号有n种取值:U1…Ui…Un,对应概率为:P1…Pi…Pn,且各种符号的出现彼此独立。这时,信源的平均不确定性应当为单个符号不确定性-logPi的统计平均值(E),可称为信息熵,即 H(U)=E[-logp_i]=-\sum_{i=1}^N p_ilogp_i,式中对数一般取2为底,单位为比特。

当所有的 p(x_i) 值都相等,且值为 p(x_i)=\dfrac{1}{N} 时,熵取得最大值。H(U) = log(N)

交叉熵

交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。语言模型的性能通常用交叉熵和复杂度(perplexity)来衡量。交叉熵的意义是用该模型对文本识别的难度,或者从压缩的角度来看,每个词平均要用几个位来编码。复杂度的意义是用该模型表示这一文本平均的分支数,其倒数可视为每个词的平均概率。

交叉熵的介绍

在信息论中,交叉熵是表示两个概率分布p,q,其中p表示真实分布,q表示非真实分布,在相同的一组事件中,其中,用非真实分布q来表示某个事件发生所需要的平均比特数。从这个定义中,我们很难理解交叉熵的定义。下面举个例子来描述一下: 假设现在有一个样本集中两个概率分布p,q,其中p为真实分布,q为非真实分布。假如,按照真实分布p来衡量识别一个样本所需要的编码长度的期望为:

H(p)=\sum_i{p(i)}log(\dfrac{1}{p(i)})

但是,如果采用错误的分布q来表示来自真实分布p的平均编码长度,则应该是:

H(p,q)=\sum_i{p(i)}log(\dfrac{1}{q(i)})

此时就将H(p,q)称之为交叉熵。交叉熵的计算方式如下:

对于离散变量采用以下的方式计算:H(p,q)=\sum_x p(x)log(\dfrac{1}{q(x)})

对于连续变量采用以下的方式计算:-\int _XP(x)logQ(x)dx=E_p[-logQ]

注意:?E_{x\sim p(x)}[f(x)]=\int{f(x)p(x)}dx \approx \dfrac{1}{n}\sum_{i=1}^nf(x_i), x_i \sim p(x) ?

交叉熵的应用

  1. 交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量p与q的相似性。交叉熵作为损失函数还有一个好处是使用sigmoid函数在梯度下降时能避免均方误差损失函数学习速率降低的问题,因为学习速率可以被输出的误差所控制。
  2. 在特征工程中,可以用来衡量两个随机变量之间的相似度。
  3. 在语言模型中(NLP)中,由于真实的分布p是未知的,在语言模型中,模型是通过训练集得到的,交叉熵就是衡量这个模型在测试集上的正确率。

相对熵

相对熵,又称KL散度( Kullback–Leibler divergence),是描述两个概率分布P和Q差异的一种方法。它是非对称的,这意味着D(P||Q) ≠ D(Q||P)。特别的,在信息论中,D(P||Q)表示当用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布。 有人将KL散度称为KL距离,但事实上,KL散度并不满足距离的概念,因为:(1)KL散度不是对称的;(2)KL散度不满足三角不等式。

相对熵的定义

对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD),信息散度(information divergence)。 设 P(x)Q(x) 是两个取值的两个离散概率分布,则 PQ 的相对熵为:

D(P||Q)=\sum P(x)log(\dfrac{P(x)}{Q(x)})

对于连续的随机变量,定义为:

D(P||Q)=\int P(x)log(\dfrac{P(x)}{Q(x)})dx

相对熵是两个概率分布 P(x)Q(x) 差别的非对称性的度量。

相对熵物理意义

相对熵是用来度量使用基于 Q 的编码来编码来自 P 的样本平均所需的额外的比特个数。 典型情况下,P 表示数据的真实分布,Q 表示数据的理论分布,模型分布,或 P 的近似分布。 根据shannon的信息论,给定一个字符集的概率分布,我们可以设计一种编码,使得表示该字符集组成的字符串平均需要的比特数最少。假设这个字符集是 X ,对 x \in X ,其出现概率为 P,那么其最优编码平均需要的比特数等于这个字符集的熵:

H(p)=\sum_{x \in X}{P(x)}log(\dfrac{1}{P(x)})

在同样的字符集上,假设存在另一个概率分布 Q,如果用概率分布 P 的最优编码(即字符 x 的编码长度等于 log(\dfrac{1}{p(x)})),来为符合分布 Q 的字符编码,那么表示这些字符就会比理想情况多用一些比特数。相对熵就是用来衡量这种情况下平均每个字符多用的比特数,因此可以用来衡量两个分布的距离,即:

D_{KL}(P||Q)=-\sum_{x \in X}{P(x)}log(\dfrac{1}{P(x)}) + \sum_{x \in X}{P(x)}log(\dfrac{1}{Q(x)})=\sum_{x\in X} P(x)log(\dfrac{P(x)}{Q(x)})

相对熵的性质

相对熵(KL散度)有两个主要的性质,如下: (1)不对称性 尽管KL散度从直观上是个度量或距离函数,但它并不是一个真正的度量或者距离,因为它不具有对称性,即 (2)非负性 相对熵的值为非负值,即 ,证明可用吉布斯不等式。

吉布斯不等式 若 \sum_{i=1}^{n}p_i=\sum_{i=1}^{n}q_i=1,且 p_i, q_i \in (0,1],则有: -\sum_{i=1}^{n}p_ilog(p_i)\leq -\sum_{i=1}^{n}p_ilog(q_i),等号当且仅当 \forall i, p_i=q_i

相对熵的应用

相对熵可以衡量两个随机分布之间的距离,当两个随机分布相同时,它们的相对熵为零,当两个随机分布的差别增大时,它们的相对熵也会增大。所以相对熵(KL散度)可以用于比较文本的相似度,先统计出词的频率,然后计算相对熵。另外,在多指标系统评估中,指标权重分配 [2] 是一个重点和难点,也通过相对熵可以处理。

JS散度(Jensen–Shannon divergence)

JS散度度量了两个概率分布的相似度,基于KL散度的变体,解决了KL散度非对称的问题。一般地,JS散度是对称的,其取值是0到1之间。定义如下:

JSD(P_1||P_2)=\dfrac{1}{2}KL(P_1||\dfrac{P_1+P_2}{2})+\dfrac{1}{2}KL(P_2||\dfrac{P_1+P_2}{2})

KL散度和JS散度度量的时候有一个问题:如果两个分配P,Q离得很远,完全没有重叠的时候,那么KL散度值是没有意义的,而JS散度值是一个常数。这在学习算法中是比较致命的,这就意味这这一点的梯度为0。梯度消失了。

Wasserstein距离


参考文献

[1] ajiao_nihao. 交叉熵[DB/OL]. baike.baidu.com/item/交叉熵/89…, 2018-08-28.

[2] 蒙牛纯爷们. 相对熵[DB/OL]. baike.baidu.com/item/相对熵, 2018-08-28.

[3] miaoweijun. 信息熵[DB/OL]. baike.baidu.com/item/信息熵, 2018-08-28.

[4] 维基百科. Jensen–Shannon divergence[DB/OL]. en.wikipedia.org/wiki/Jensen…, 2018-08-28.

[5] CodeTutor. 概率论——Wasserstein距离[DB/OL]. blog.csdn.net/victoriaw/a…, 2018-08-28.

[6] 邱陆陆. 如何理解KL散度的不对称性[DB/OL]. www.jiqizhixin.com/articles/02…, 2018-11-21.