记得刚开始研究最大熵模型时,被它的数学推导搞得云里雾里(汗!数学基础不好啊~~~~快哭了)
不过现在补还来得及,借此机会缕了一下MaxEnt的推导
一、熵入门理解
什么是熵?比如你打碎了一块玻璃,或者洒落了一盒火柴,很自然的事情就是玻璃碎的一塌糊涂,火柴也是,很乱,毫无规律可言。规律是什么东西?规律的反面是什么?其实很有意思的事情就是自然界的东西尽可能的互补以及平衡,火柴很乱,那就规律性很小。
乱+序=1.
既然=1,那么这个乱也能描述啦?这就是熵的概念,熵是描述事物无序性的参数,熵越大则无序性越强。
我们更关注的是信息熵,怎么用熵来描述信息,不确定性等等。怎么用数学式子进行形式化描述呢?前人已经做了很多工作了:
设随机变量 ξ ,他有 A 1 、 A 2 .... A n 共 n 个不同的结果,每个结果出现的概率为 p 1 , p 2 .... p n ,那么 ξ 的不确定度,即信息熵为:
H(ξ)=∑ i=1 n p i log1p i =−∑ i=1 n p i logp i
熵越大,越不确定。熵为0,事件是确定的。例如抛硬币,每次事件发生的概率都是1/2的话,那么熵=1:H(X)=-(0.5log0.5+0.5log0.5)=1(注意以2为底)。
那么这个式子是怎么来的呢?为什么会用log表示?我也不知道啊,查查文献。不过【参考5】中举了几个简单的例子来说明一下过程,这里引用下。
二、熵举例
例子:称硬币的问题,说有5个硬币,其中有一个是假的,这个假硬币的重量很轻,所以打算用一个天平称称,问需要最少称几次就能够保证把这个假硬币给找出来?这个问题其实是一个很经典的问题,也有另外一个类似的问题是毒水和白鼠的问题,5瓶水其中一瓶有毒,用最少几只白鼠能够保证把毒水找出来?
其实这个问题有个统一的解法就是对半分呗,二叉树,二进制等。
拿硬币的例子,可以取四个放在天平两端,如果相等那么剩下的那个就是假的。如果不相等,把轻的一端的两个硬币再称一次就知道假的了。因为这样称两次就能够保证把假硬币找出来了。这里称的事件是有三个结果的:左边重、相等、右边重。
拿小白鼠的例子,小白鼠只有活着和中毒两种状态,咱们这里人性一点儿,有解药可以解毒的,只要实验达到目的就行。那么把水分成两组,一组两瓶,一组三瓶,让一只小白鼠和一组,如果中毒,假设是三瓶的那一组,那么再递归的讲这三瓶分组,最坏情况下是用3只小白鼠。这里小白鼠的事件只有两个结果:中毒、健康。
我们假设x是那瓶毒水的序号, x∈X={ 1,2,3,4,5} ,y是第i只小白鼠的症状, y∈Y={ 1,2} ,,1表示健康,2表示中毒。
用二进制的思想的话就是设计编码 y 1 y 2 ...y n 使他能够把x全部表示出来。因为一个y只有两个状态,所以要有三个y并列起来才能表示 2×2×2=2 3 =|Y| 3 =8>5 。所以是用三只小白鼠。上面称硬币的问题由于一个y可以表示三个状态,所以需要两个 3∗3=9>5 就可以表示完所有的x了。
思想是这样的,从上面的分析可以看出,我们只用到的是 x , y 的状态,而没有用 x , y 的内容以及意义。也就是说只用了 X 的“总不确定度”以及 Y 的“描述能力”。
拿小白鼠和毒水的例子, X 的"总不确定度": H(X)=log|X|=log5 。 Y 的“描述能力”为: H(Y)=log|Y|=log2 。
所以至少要用多少个Y才能够完全准确的把X表示出来呢?
H(X)H(Y) =log5log2 =2.31
所以得用三只小白鼠。称硬币那个问题由于 Y 的表示能力强啊, log3 的表示能力,所以表示 X 的时候仅仅需要1.46的y就行了,所以就是称2次。【这样子思考貌似有问题。。。】
那么为什么用 log 来表示“不确定度”和“描述能力”呢?前面已经讲过了,假设一个 Y 的表达能力是 H(Y) 。显然, H(Y) 与 Y 的具体内容无关,只与 |Y| 有关。所以像是 log|Y| n 这种形式,把n就可以拿出来了,因为关系不大所以扔掉n就剩下 log|Y| 了。
“不确定度”和“描述能力”都表达了一个变量所能变化的程度。在这个变量是用来表示别的变量的时候,这个程度是表达能力。在这个变量是被表示变量的时候,这个程度是不确定度。而这个可变化程度,就是一个变量的熵(Entropy)。显然:熵与变量本身含义无关,仅与变量的可能取值范围有关。
==========
下面看称硬币以及小白鼠毒水问题的一个变种:
(1)已知第一个硬币是假硬币的概率是三分之一;第二个硬币是假硬币的概率也是三分之一,其他硬币是假硬币的概率都是九分之一。(2)毒水也是,第一瓶是毒水的概率是1/3。。。以此类推。
最后求称次数或者小白鼠数量n的期望。因为第一个、第二个硬币是假硬币的概率是三分之一,比其他硬币的概率大,我们首先“怀疑”这两个。第一次可以把这两个做比较。成功的概率是三分之二。失败的概率是三分之一。如果失败了,第二次称剩下的三个。所以,期望值是:
13 ×log3log3 +13 ×log3log3 +19 ×log9log3 +19 ×log9log3 +19 ×log9log3 =43
小白鼠的也可以同理求出来。为什么分子会有