机器学习中各种熵(Entropy)的总结

信息熵 information entropy

1.量化信息

一条信息的信息量大小和它的不确定性有直接的关系,信息量的度量就等于不确定性的多少。换言之,概率越小,不确定性越大,信息所包含的信息量就越大。对于一件确定的事情,其信息量就为0。

考虑一个离散的随机变量x,那么信息的量度 I ( x ) I(x) I(x)应满足以下条件:

  • 单调性:随机变量发生的概率 p ( x ) p(x) p(x)概率越小,其信息量应越大
  • 非负性:概率 p ( x ) ∈ [ 0 , 1 ] p(x)∈[0,1] p(x)[0,1],信息量应非负
  • 可加性:如果我们有两个不相关的事件 x x x y y y,那么观察两个事件同时发生时获得的信息量应该等于观察到事件各自发生时获得的信息之和。即 I ( x , y ) = I ( x ) + I ( y ) I(x,y)=I(x)+I(y) I(x,y)=I(x)+I(y)

因为两个事件是独立不相关的,因此有 p ( x , y ) = p ( x ) p ( y ) p(x,y)=p(x)p(y) p(x,y)=p(x)p(y)
根据这些性质,我们可以很容易找到一个符合条件的函数:负对数,即:
I ( x ) = − log ⁡ p ( x ) I(x)=-\log p(x) I(x)=logp(x)
注:

  • log ⁡ \log log的基可以任意选取。信息论中基常常选择为2,因此信息的单位为比特bits;而机器学习中基常常选择为自然常数,因此单位常常被称为奈特nats
  • 因为 p ( x ) p(x) p(x)可能为0,而 log ⁡ 0 \log0 log0无意义,所以此处定义 0 log ⁡ 0 = 0 0\log0=0 0log0=0

2.信息熵

如果把这个事件的所有可能性罗列出来,就可以求得该事件信息量的期望,也即信息熵:
H ( X ) = E [ I ( x ) ] = − ∑ x ∈ X p ( x ) log ⁡ p ( x ) H(X)=\mathbb E[I(x)]=-\sum_{x\in X}p(x)\log p(x) H(X)=E[I(x)]=xXp(x)logp(x)
信息熵反映了一个系统的无序化(有序化)程度,一个系统越无序,信息熵就越高。显然,随机变量的取值个数越多,状态数也就越多,信息熵就越大,混乱程度就越大。当随机分布为均匀分布时,熵最大。

3.联合熵

将一维随机变量分布推广到多维随机变量分布,则可得联合熵 (Joint entropy) 为:
H ( X , Y ) = − ∑ x , y p ( x , y ) log ⁡ p ( x , y ) = − ∑ i = 1 n ∑ j = 1 m p ( x i , y i ) log ⁡ p ( x i , y i ) H(X,Y)=-\sum_{x,y}p(x,y)\log p(x,y)=-\sum_{i=1}^n\sum_{j=1}^mp(x_i,y_i)\log p(x_i,y_i) H(X,Y)=x,yp(x,y)logp(x,y)=i=1nj=1mp(xi,yi)logp(xi,yi)


条件熵 conditional entropy

条件熵 H ( Y ∣ X ) H(Y|X) H(YX)表示在已知随机变量 X X X的条件下随机变量 Y Y Y的不确定性。定义为 X X X给定条件下 Y Y Y的条件概率分布的熵对 X X X的数学期望:
H ( Y ∣ X ) = ∑ x p ( x ) H ( Y ∣ X = x ) H(Y|X)=\sum_xp(x)H(Y|X=x) H(YX)=xp(x)H(YX=x)
= − ∑ x p ( x ) ∑ y p ( y ∣ x ) log ⁡ p ( y ∣ x ) \qquad\qquad=-\sum_xp(x)\sum_yp(y|x)\log p(y|x) =xp(x)yp(yx)logp(yx)
= − ∑ x , y p ( x , y ) log ⁡ p ( y ∣ x ) \qquad\qquad=-\sum_{x,y}p(x,y)\log p(y|x) =x,yp(x,y)logp(yx)

联合熵 H ( X , Y ) H(X,Y) H(X,Y) = 条件熵 H ( Y ∣ X ) H(Y|X) H(YX) + 单独的熵 H ( X ) H(X) H(X)
H ( X , Y ) = − ∑ x , y p ( x , y ) log ⁡ p ( x , y ) H(X,Y)=-\sum_{x,y}p(x,y)\log p(x,y) H(X,Y)=x,yp(x,y)logp(x,y)
  = − ∑ x , y p ( x , y ) log ⁡ ( p ( y ∣ x ) p ( x ) ) \qquad\qquad\,=-\sum_{x,y}p(x,y)\log (p(y|x)p(x)) =x,yp(x,y)log(p(yx)p(x))
  = − ∑ x , y p ( x , y ) log ⁡ p ( y ∣ x ) − ∑ x , y p ( x , y ) log ⁡ p ( x ) \qquad\qquad\,=-\sum_{x,y}p(x,y)\log p(y|x)-\sum_{x,y}p(x,y)\log p(x) =x,yp(x,y)logp(yx)x,yp(x,y)logp(x)
  = H ( Y ∣ X ) − ∑ x log ⁡ p ( x ) ∑ y p ( x , y ) \qquad\qquad\,=H(Y|X)-\sum_x\log p(x)\sum_yp(x,y) =H(YX)xlogp(x)yp(x,y)
  = H ( Y ∣ X ) − ∑ x p ( x ) log ⁡ p ( x ) \qquad\qquad\,=H(Y|X)-\sum_xp(x)\log p(x) =H(YX)xp(x)logp(x)
  = H ( Y ∣ X ) + H ( X ) \qquad\qquad\,=H(Y|X)+H(X) =H(YX)+H(X)

理解:描述 X 和 Y 所需的信息是描述 X 自己所需的信息,加上给定 X 的条件下具体化 Y 所需的额外信息。


相对熵 relative entropy

也称KL散度(Kullback–Leibler divergence),用来量度两个概率分布之间的差异(不相似性)。
p ( x ) p(x) p(x) q ( x ) q(x) q(x)是离散随机变量 X X X中取值的两个概率分布,则 p p p q q q的相对熵是:
D K L ( p ∣ ∣ q ) = ∑ x p ( x ) log ⁡ p ( x ) q ( x ) = E p ( x ) log ⁡ p ( x ) q ( x ) D_{KL}(p||q)=\sum_xp(x)\log \frac{p(x)}{q(x)}=E_{p(x)}\log \frac{p(x)}{q(x)} DKL(pq)=xp(x)logq(x)p(x)=Ep(x)logq(x)p(x)
性质:

  • D K L ( p ∣ ∣ q ) ≥ 0 D_{KL}(p||q)\ge0 DKL(pq)0,当且仅当 p ( x ) = q ( x ) p(x)=q(x) p(x)=q(x)时, D K L ( p ∣ ∣ q ) = 0 D_{KL}(p||q)=0 DKL(pq)=0
  • 不对称性: D K L ( p ∣ ∣ q ) ≠ D K L ( q ∣ ∣ p ) D_{KL}(p||q)\not = D_{KL}(q||p) DKL(pq)=DKL(qp)

应用:
在TRPO(Trust Region Policy Optimization, 置信域策略优化)算法中,通过限制新旧策略的KL散度,将每一次对策略的更新都限制了信任域内,从而极大地增强了训练的稳定性。

算法:
m a x i m i z e   θ    E s ∼ ρ θ o l d , a ∼ q [ π θ ( a ∣ s ) q ( a ∣ s ) Q θ o l d ( s , a ) ] maximize\,_\theta\;\mathbb E_{s\sim\rho_{\theta_{old}},a\sim q}[\frac{\pi_\theta(a|s)}{q(a|s)}Q_{\theta_{old}}(s,a)] maximizeθEsρθold,aq[q(as)πθ(as)Qθold(s,a)]
s u b j e c t    t o   E s ∼ ρ θ o l d [ D K L ( π θ o l d ( ⋅ ∣ s ) ∣ ∣ π θ ( ⋅ ∣ s ) ) ] < δ subject\;to\ \mathbb E_{s\sim\rho_{\theta_{old}}}[D_{KL}(\pi_{\theta_{old}}(\cdot|s)||\pi_\theta(\cdot|s))]\lt\delta subjectto Esρθold[DKL(πθold(s)πθ(s))]<δ


交叉熵 cross entropy

用来量度模拟分布 q ( x ) q(x) q(x)与真实分布 p ( x ) p(x) p(x)之间的差距。

我们对相对熵的公式进行变形:

D K L ( p ∣ ∣ q ) = ∑ x p ( x ) log ⁡ p ( x ) q ( x ) = − ∑ x p ( x ) log ⁡ q ( x ) − ( − ∑ x p ( x ) log ⁡ p ( x ) ) D_{KL}(p||q)=\sum_xp(x)\log \frac{p(x)}{q(x)}=-\sum_xp(x)\log q(x)-(-\sum_xp(x)\log p(x)) DKL(pq)=xp(x)logq(x)p(x)=xp(x)logq(x)(xp(x)logp(x))

对于真实分布 p ( x ) p(x) p(x)来说,后面那项,也就是分布的熵 − ∑ x p ( x ) log ⁡ p ( x ) -\sum_xp(x)\log p(x) xp(x)logp(x)为一常数(代表训练数据的分布是固定不变的),可不关注。而表达式剩下的第一项就是交叉熵,即:
H ( p ∣ ∣ q ) = − ∑ x p ( x ) log ⁡ q ( x ) H(p||q)=-\sum_xp(x)\log q(x) H(pq)=xp(x)logq(x)

在分类问题中,我们希望模型预测出的模拟分布 q ( x ) q(x) q(x)与真实分布 p ( x ) p(x) p(x)的差距尽可能小,所以交叉熵常被用作分类问题的损失函数(loss function),我们minimize交叉熵的时候,其实就是在让模拟分布更靠近真实分布。


熵的另一种理解

熵的本质的另一种理解:最短平均编码长度(即当编码方式完美时,编码长度的期望值)

编码方式:哈夫曼编码。即:使用更短的编码来描述更可能的事件,使用更长的编码来描述不太可能的事件。

举例:考虑某随机变量 x x x,有四种等可能的状态 { a , b , c , d } \{a, b, c, d\} { a,b,c,d},为了把 x x x的值传给别人,我们需要对其状态进行编码,我们将四种状态编码为00,01,10,11,无论 x x x在哪个状态下,编码都需要2 bits长度。

其信息熵(由于计算机为二进制,故在信息论中 log ⁡ \log log的底常为2)为:
H ( X ) = − ∑ x p ( x ) log ⁡ p ( x ) = − 4 ∗ 1 4 log ⁡ 2 1 4 = 2   b i t s H(X)=-\sum_xp(x)\log p(x)=-4*\frac{1}{4}\log_2\frac{1}{4}=2\,bits H(X)=xp(x)logp(x)=441log241=2bits

x x x的分布发生变化,四种可能的状态概率变为 { 1 2 , 1 4 , 1 8 , 1 8 } \{\frac{1}{2},\frac{1}{4},\frac{1}{8},\frac{1}{8}\} { 21,41,81,81}时,我们用更短的编码描述概率更大的状态,可用哈夫曼编码为0,10,110,111

那么平均编码长度,也即信息熵为:
H ( X ) = − ∑ x p ( x ) log ⁡ p ( x ) = − ( 1 2 log ⁡ 2 1 2 + 1 4 log ⁡ 2 1 4 + 2 ∗ 1 8 log ⁡ 2 1 8 ) = 1.75   b i t s H(X)=-\sum_xp(x)\log p(x)=-(\frac{1}{2}\log_2\frac{1}{2}+\frac{1}{4}\log_2\frac{1}{4}+2*\frac{1}{8}\log_2\frac{1}{8})=1.75\,bits H(X)=xp(x)logp(x)=(21log221+41log241+281log281)=1.75bits

也印证了之前当随机分布为均匀分布时,熵最大的结论。

这样的理解也可以推广到相对熵和交叉熵上去:
相对熵含义:用模型分布编码真实分布时,所额外消耗的编码长度。
交叉熵含义:使用了模型分布编码真实分布时,得到的平均编码长度

从这里也可以得到 信息熵+相对熵=交叉熵 的结论。


参考 references

https://www.cnblogs.com/kyrieng/p/8694705.html
https://www.zhihu.com/question/41252833

你可能感兴趣的:(机器学习,人工智能,信息熵)