3月机器学习在线班第六课笔记--信息熵与最大熵模型

原文:https://www.zybuluo.com/frank-shaw/note/108124

信息熵

信息是个很抽象的概念。人们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。比如一本五十万字的中文书到底有多少信息量。直到1948年,香农提出了“信息熵”的概念,才解决了对信息的量化度量问题。(百度百科)

香农定义的信息熵的计算公式如下: 

H(X)=p(xi)log(p(xi))    (i=1,2,,n)

 


其中X 表示的是随机变量,随机变量的取值为(x1,x2,,xn) ,p({x_i}) 表示事件xi发生的概率,且有p(xi)=1 。信息熵的单位为bit。 
说实在的,在听课的时候对这个概念一直是懵懵懂懂的,一直跨不过去。现在查找一些资料,希望能够通过笔记让自己清楚该概念。首先的疑问就是:为什么这样表达? 
首先定义事件xi的信息量为其发生概率对数的负数,记为I(x_i),有: 

I(xi)=logp(xi)


有了该定义,可以发现信息熵H(X)即为随机变量X的平均信息量(期望)。那么疑问就变成:为什么logp(xi)可以表示为事件xi的信息量?

 

其实这挺好理解:事件xi的信息量大小和它发生的概率(不确定性)有直接的关系。比如说,要搞清楚一件非常不确定的事,或是一无所知的事情,就需要了解大量的信息。相反,如果对某件事已经有较多了解,我们不需要太多的信息就能把它搞清楚。即信息量函数应该与事件概率成单调递减关系。同时,两个独立事件xi,xj(满足p(xi,xj)=p(xi)p(xj))的信息量大小应等于各自信息量之和。那么同时符合以上要求的是I(xi)=logp(xi)。 
在香农1948年的论文《A Mathematical Theory of Communication》中,他通过论证信息熵函数需要满足的多条性质,推导出信息熵公式的唯一性。有兴趣的可以看看。

为了更好的理解,我们举例说明:

 

随机变量为均匀分布

在《数学之美》中的例子:假如我错过了看世界杯,赛后我问一个知道决赛结果的观众“哪支球队是冠军?”他不愿意直接告诉我,而是让我猜,每猜一次需要1bit,他的回答是以下2个中的一个:是,否。假设我对这32支球队一无所知,即我认为每支球队获得冠军的概率是相等的,那么我至少需要付多少bit给他才能知道谁是冠军? 
我把球队编号为1到32,然后使用折半查找法的原理(如:”冠军队在1-16吗?”)每一次就可以减少一半的队伍,这样只需要5次,就能够知道冠军球队。也就是说,谁是世界杯冠军这条信息的信息量只值5bit。代入计算公式,在这种情况下(等概率假设)得到的信息熵即为5bit。

课堂上,邹博老师给出的一个例子:

有五个硬币,四个等重,另外一个是假币所以质量相比其他4个要轻。我事先不知道关于任何硬币的信息(即认为每一个硬币是假币的概率都是1/5)。这个例子和之前的猜球队冠军有一些相似,我也是需要经过询问才能得到答案,且每问一次需要付1bit。但不同之处在于,现在我可以询问的对象变成了天平,天平每一次能够比较两堆硬币,且能够给出3个结果中的一个:左边比右边重,右边比左边重,两边同样重。问我至少需要付多少bit就能够确保知道哪个是假币?

我们通过自己的计算可知道,如果幸运的话我只需要1bit就能够把假币测出来(天平左右各两个硬币,结果等重,那么假币即为天平外的一个),但是通常情况下需要2bit才能知道假币。这个时候,会发现不能够按照之前的预测世界杯冠军的方式来计算信息熵了(按照之前的方法直接计算得到log25>2),毕竟之前问观众只能给出2种结果,现在问天平能够给出3种结果啊,需要的bit应该更少。 
实际上不仅仅需要关心随机变量的信息熵,还应该关心被询问对象(例子中观众、天平)的表达能力(即被询问对象的信息熵)。正确的表达式应该是: 

H(X)H(Y)

 


其中X为随机变量,Y为被询问对象。该问题最终得到的结果是H(X)H(Y)=log25log23=1.46。世界杯冠军问题中之所以只计算随机变量的信息熵是因为被询问对象的信息熵刚好是1(H(Y)=log22),所以忽略了。在计算机领域和通信领域,被询问对象一般都只能给出{0,1}两种结果,其信息熵为1,由此直接忽略。特殊情况下的忽略不代表不存在。

 

 

随机变量不再是均匀分布

有五个硬币,四个等重,另外一个是假币所以质量相比其他4个要轻。已知第一个硬币和第二个硬币是假硬币的概率为1/3,其他硬币为假硬币的概率为1/9。天平每一次能够比较两堆硬币,且能够给出3个结果中的一个:左边比右边重,右边比左边重,两边同样重。问我至少需要付多少bit就能够确保知道哪个是假币? 
由于之前已经分析过,直接带入上面的计算公式即可得: 

H(X)H(Y)=(13log213)2(19log219)3log23=1.333

 


也就是说,实际编码过程中需要2个bit来存储每一次。

 

在经典熵的定义式中,对数的底是2,单位为bit。在我们之后的例子中,为了方便分析使用底数e。如果底数为e,那么单位是nat(奈特)。重新写一遍信息熵的公式: 

H(X)=p(xi)ln(p(xi))  (i=1,2,,n)

 


为此,我们来研究研究函数f(x)=xln(x),看看图像长啥样。由信息熵的公式及定义,可以发现此时的x 表示的是事件发生的概率,有x[0,1]。求导分析:f(x)=lnx+1,f′′(x)=1x>0;由此发现f(x)是凸函数。令f(x)=0可得x=1e。由于limx0f(x)=0,我们定义f(0)=0 。最后经过采样可得图像如下: 
信息熵图像

 

 

信息熵的总体理解

从之前的分析可以看出,熵其实定义了一个函数(概率分布函数p(x))到一个值(信息熵H(X))的映射。而且从表达式中可以知道:随机变量不确定性越大,p(x)越小,熵值越大。由此,熵是随机变量不确定性的度量。一种极限情况是:当随机变量退化为定值时(概率为1),那么此时的熵值为0。另一个极限就是:当随机变量服从均匀分布的时候,此时的熵值最大。

让我们以较为熟悉的随机变量分布来举例说明信息熵:

 

两点分布的熵

假设两点分布中p(X=1)=q,直接将概率分布函数代入信息熵公式可得: 

H(X)=xXp(x)ln(p(x))=qlnq(1q)ln(1q)

 


通过随机采样可以得到图像: 
两点分布的熵图像 
通过对图像的分析可以印证我们之前的结论:当p(X=1)=0.5,二点分布即为均匀分布,此时对应于图像中熵的最大值;当p(X=1)=1p(X=1)=0时,二点分布退化为确定性分布,那么此时的熵为0.

 

 

联合熵、条件熵和相对熵

之前定义了单个随机变量的熵,现在将定义推广到两个随机变量的情形。对于服从联合分布为p(x,y)的一对离散随机变量(X,Y) ,其联合熵定义为: 

H(X,Y)=xX,yYp(x,y)ln(p(x,y))

 


上式也可以表示为: 

H(X,Y)=E(logp(x,y)).


我们也可以定义一个随机变量在给定另一个随机变量下的条件熵,它是条件分布上关于起条件作用的那个随机变量取平均之后的期望值。

 

定义:若 (X,Y)p(x,y),条件熵定义为: 

H(Y|X)=xXp(x)H(Y|X=x)=xXp(x)yYp(y|x)logp(y|x)=xXyYp(x,y)logp(y|x)

 


联合熵和条件熵的定义的这个自然性可由一个事实得到体现:一对随机变量的熵等于其中一个随机变量的熵加上另一个随机变量的条件熵,即: H(X,Y)=H(X)+H(Y|X)(链式法则)。其证明见如下: 

H(X,Y)=xXyYp(x,y)logp(x,y)=xXyYp(x,y)logp(x)p(y|x)=xXyYp(x,y)logp(x)xXyYp(x,y)logp(y|x)=xXp(x)logp(x)xXyYp(x,y)logp(y|x)=H(X)+H(Y|X)


相对熵是两个随机分布之间距离的度量。假设p(x),q(x) 是随机变量X中取不同值时的两个概率分布,那么 pq的相对熵是: 

D(p||q)=xp(x)logp(x)q(x)=Ep(x)logp(x)q(x)


在上述定义中,我们约定:0log00=0,0log0q=0,0logp0=(基于连续性)。因此,如果存在xX使得p(x)>0,q(x)=0,则有D(p||q)=。 
可以通过证明知道相对熵总是非负的,而且,当且仅当 p=q时为零。但是由于相对熵并不对称(一般D(p||q)D(q||p) ),而且也不满足三角不等式,因此它实际上并不是两个分布之间的真正距离。然而,将相对熵视作分布之间的“距离”往往会很有用。

 

 

互信息

互信息是一个随机变量包含另一个随机变量信息量的度量。互信息也是在给定另一个随机变量知识的条件下,原随机变量不确定度的缩减量。(为什么这么说,接下来会有解释。) 
定义:考虑两个随机变量XY,它们的联合概率密度函数为p(x,y),其边缘概率密度函数分别为p(x),p(y)。互信息I(x,y)为联合分布p(x,y)和乘积分布 p(x)p(y)之间的相对熵,即: 

I(X;Y)=xXyYp(x,y)logp(x,y)p(x)p(y)=D(p(x,y)||(p(x)p(y)))=Ep(x,y)logp(X,Y)p(X)p(Y)

 


通过查看表达式,即可知道互信息具有对称性,即 。同样可以简单证明得互信息的非负性,这里省略。

 

 

熵与互信息的关系

可将互信息I(x,y)重新写为: 

I(X;Y)=xX,yYp(x,y)logp(x,y)p(x)p(y)=xX,yYp(x,y)logp(x|y)p(x)=xXyYp(x,y)logp(x)+xXyYp(x,y)logp(x|y)=xXp(x)logp(x)(xXyYp(x,y)logp(x|y))=H(X)H(X
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值