自然语言处理(信息论)-信息熵、联合熵、联合熵、条件熵、相对熵、互信息、交叉熵

01.信息熵(entropy)

如果XX是一个离散性随机变量,其概率分布为:P(x)=P(X=x)xXP(x) = P(X = x) x \in XXX的熵H(X)H(X)为:H(X)=xXP(x)log2P(x)H(X) = - \sum \limits_{x\in X} {P(x){{\log }_2}P(x)}
H(X)H(X)也可以写成H(p)(bit)H(p) (bit)
熵又称为自信息(self-information),表示信源xx每一个符号(不论发出什么符号)所提供的平均信息量。信息熵表示的是不确定性的度量。

02.联合熵(joint entropy)

如果X,YX,Y是一对离散随机变量(X,YX,Y有一定的关系),X,YX,Y的联合熵H(X,Y)H(X,Y)为:
H(X,Y)=xXyYP(x,y)logP(x,y){\rm{H(X,Y) = - }}\sum\limits_{x \in X} {\sum\limits_{y \in Y} {P(x,y)\log P(x,y)} }
联合熵实际上就是描述一对随机变量平均所需要的信息量。

03.条件熵(conditional entropy)

给定随机变量XX的情况下,随机变量YY的条件熵定义为:
H(YX)=xXP(x)H(YX=x)=xXP(x)[yYP(yx)log(P(yx)]=xXyYP(x,y)logP(yx){\rm{H(Y|X) = - }}\sum\limits_{x \in X} {P(x)H(Y|X = x)= {\rm{ - }}\sum\limits_{x \in X} {P(x)[ - \sum\limits_{y \in Y} {P(y|x)\log (P(y|x)} ] = - \sum\limits_{x \in X} {\sum\limits_{y \in Y} {P(x,y)\log {\rm{P}}(y|x)} } } }
在此我们也可以做进一步的推导:
H(X,Y)=xXyYP(x,y)logP(x,y)=xXyYP(x,y)log[P(x)P(yx)]=xXyYP(x,y)logP(x)xXyYP(x,y)logP(yx)(Notice:yYP(x,y)=P(x))=xXP(x)log(P(x))xXyYP(x,y)logP(yx)=H(X)+H(YX){\rm{H}}({\rm{X}},{\rm{Y}}){\rm{ = - }}\sum\limits_{x \in X} {\sum\limits_{y \in Y} {P(x,y)\log P(x,y)} } {\rm{ = - }}\sum\limits_{x \in X} {\sum\limits_{y \in Y} {P(x,y)\log [P(x)P(y|x)]} } = {\rm{ - }}\sum\limits_{x \in X} {\sum\limits_{y \in Y} {P(x,y)\log P(x) - \sum\limits_{x \in X} {\sum\limits_{y \in Y} {P(x,y)\log P(y|x)(} } } } Notice:\sum\limits_{y \in Y} {P(x,y) = P(x)} ) = - \sum\limits_{x \in X} {P(x)\log (P(x))} - \sum\limits_{x \in X} {\sum\limits_{y \in Y} {P(x,y)\log P(y|x) = H(X) + H(Y|X)} }
条件熵衡量的是:在一个随机变量XX已知的情况下,另一随机变量YY的不确定性。
例:
为了更加便于理解以上概念,博主在网上搜了一道例题供大家参考:
一个二进制信源XX发出符号集{0,1},经过离散无记忆新的传输,信道输出用YY表示,由于信道正存在噪声,接收端除收到0和1的符号外,还有不确定符号“2”,已知XX的先验概率:
P(x0)=2/3P(x_0)=2/3,P(x1)=1/3P(x_1)=1/3;
符号的转移概率:P(y0x0)=3/4P(y_0|x_0)=3/4;P(y2x0)=1/4P(y_2|x_0)=1/4;P(y1x1)=1/2P(y_1|x_1)=1/2;P(y2x1)=1/2P(y_2|x_1)=1/2
其对应的图形有:
自然语言处理(信息论)-信息熵、联合熵、联合熵、条件熵、相对熵、互信息、交叉熵
那么根据这些信息可以计算出:
1.信息熵:H(X)H(X)
H(X)=H(2/3,1/3)=2/3log(2/3)1/3log(1/3)=0.92bitH(X)=H(2/3,1/3)=-2/3log(2/3)-1/3log(1/3)=0.92bit
2.条件熵:H(YX)H(Y|X)
P(xiyj)=P(xi)P(yjxi)=P(yj)P(xiyj){\rm{P}}({x_i}{y_j}) = P({x_i})P({y_j}|{x_i}) = P({y_j})P({x_i}|{y_j}) (这里使用条件概率公式可以推导)
进而有:联合概率:
P(x0y0)=P(x0)P(y0x0)=2334=12{\rm{P}}({x_0}{y_0}) = P({x_0})P({y_0}|{x_0}) = \frac{2}{3}*\frac{3}{4}=\frac{1}{2}
P(x0y1)=P(x0)P(y1x0)=0{\rm{P}}({x_0}{y_1}) = P({x_0})P({y_1}|{x_0}) = 0
P(x0y2)=P(x0)P(y2x0)=2314=16{\rm{P}}({x_0}{y_2}) = P({x_0})P({y_2}|{x_0}) = \frac{2}{3}*\frac{1}{4}=\frac{1}{6}
P(x1y0)=P(x1)P(y0x1)=0{\rm{P}}({x_1}{y_0}) = P({x_1})P({y_0}|{x_1}) = 0
P(x1y1)=P(x1)P(y1x1)=1312=16{\rm{P}}({x_1}{y_1}) = P({x_1})P({y_1}|{x_1}) = \frac{1}{3}*\frac{1}{2}=\frac{1}{6}
P(x1y2)=P(x1)P(y2x1)=1312=16{\rm{P}}({x_1}{y_2}) = P({x_1})P({y_2}|{x_1}) = \frac{1}{3}*\frac{1}{2}=\frac{1}{6}
进而有:
H(YX)=i,jP(xiyj)logP(yjxi)=12log3413log1416log1216log12=0.88bitH(Y|X) = - \sum\limits_{i,j} {P({x_i}{y_j})\log P({y_j}|{x_i})} = - \frac{1}{2}\log \frac{3}{4} - \frac{1}{3}\log \frac{1}{4} - \frac{1}{6}\log \frac{1}{2} - \frac{1}{6}\log \frac{1}{2} = 0.88bit
3.联合熵:H(XY)H(XY)
由条件熵中的推导可知:
H(XY)=H(X)+H(YX)=1.8bit/H(XY) = H(X) + H(Y|X) = 1.8bit/符号
4.信源输出熵:H(Y)H(Y)
由全概率公式有:i=1nP(xiyj)=P(yj)\sum\limits_{i = 1}^n {P({x_i}{y_j}) = } P({y_j})j=1mP(xiyj)=P(xi)\sum\limits_{j = 1}^m {P({x_i}{y_j}) = } P({x_i})
得:
P(y0)=P(xiy0)=P(x0y0)+P(x1y0)=12+0=12P({y_0}) = \sum {P({x_i}{y_0}) = P({x_0}{y_0})} + P({x_1}{y_0}) = \frac{1}{2} + 0 = \frac{1}{2}
P(y1)=P(xiy1)=P(x0y1)+P(x1y1)=0+16=16P({y_1}) = \sum {P({x_i}{y_1}) = P({x_0}{y_1})} + P({x_1}{y_1}) =0+\frac{1}{6} = \frac{1}{6}
P(y2)=P(xiy2)=P(x0y2)+P(x1y2)=16+16=13P({y_2}) = \sum {P({x_i}{y_2}) = P({x_0}{y_2})} + P({x_1}{y_2}) =\frac{1}{6}+\frac{1}{6} = \frac{1}{3}
故有:H(Y)=H(12,13,16)=12log1213log1316log16=1.47bitH(Y) = H(\frac{1}{2},\frac{1}{3},\frac{1}{6}) = - \frac{1}{2}\log \frac{1}{2} - \frac{1}{3}\log \frac{1}{3} - \frac{1}{6}\log \frac{1}{6}=1.47bit
5.条件熵:H(XY)H(X|Y)
这里就介绍思路,具体步骤可以参照以上;依然是根据条件概率和全概率公式计算,先求得y条件下的x的概率,然后再结合条件概率公式求解即可。结果为0.33bit0.33bit

04.相对熵

相对熵,又叫KL距离,信息增益。有以下定义:
DKL(pq)=xXp(x)logp(x)q(x)D_{KL}(p||q)=\sum\limits_{x \in X}p(x)log\frac{p(x)}{q(x)}
相对熵是衡量两个相同事件空间里两个概率分布(函数)的差异程度(而前面的熵,衡量的是随机变量的关系)。当两个概率分布完全相同时,它们的相对熵就是0,当他们的差异增加时,相对熵就会增加。相对熵又叫KLKL距离,但是它不满足距离定义的3个条件中的两个:(1)非负性(满足);(2)对称性(不满足);(3)三角不等式(不满足)。其物理意义就是如果用q分布来编码p分布(一般就是真实分布)的话,平均每个基本条件编码长度增加了多少比特。

05.互信息

两个随机变量XXYY,它们的互信息定义为:
I(X;Y)=DKL(p(x,y)p(x)p(y)))=xX,yYp(x,y)logp(x,y)p(x)(y)I(X;Y)=D_{KL}(p(x,y)||p(x)p(y)))=\sum\limits_{x \in X,y \in Y}p(x,y)log\frac{p(x,y)}{p(x)(y)}
互信息时衡量两个随机变量的相关程度,当XXYY,完全相关时,它们的互信息就是1;反之,它们的互信息就是0。
对于xxyy两个具体的事件来说,可以用点互信息(Pointwise Mutual Information)来表示它们的相关程度。
PMI(x;y)=logp(x,y)p(x)p(y)PMI(x;y)=\log\frac{p(x,y)}{p(x)p(y)}
互信息与熵之间的关系:
I(X;Y)=H(X)H(XY)=H(Y)H(YX)I(X;Y)=H(X)-H(X|Y)=H(Y)-H(Y|X)

06.交叉熵

H(X,q)=H(X)+DKL(pq)=xp(x)logq(x)()H(X,q)=H(X)+D_{KL}(p||q)=-\sum\limits_xp(x)logq(x)(离散分布时)
其实,就是用分布q来表示XX的熵时多少,也就是说用分布q来编码XX需要付出多少比特。