最近在学模式识别,正在看Introduction to Pattern Recognition这本书,挺不错的一本书。好,下面和大家一起来学习最大熵算法。首先,最大熵算法是干什么的呢?一般是用来估计一个分布,至于把分布估计出来之后用来干什么,那要视具体问题而定。那这里的“熵”是什么意思呢?它是指信息熵,一个分布的均匀程度可以用熵的大小来衡量,熵越大,就越均匀,而最大熵就是要求在满足特定约束下,分布是什么样的时候,熵最大,也就是越均匀越好。
为什么在满足特定约束下越均匀越好?因为你已经没有足够的信息来支持你的判断了,你不能偏袒其中任意一方,你只能把它们一视同仁。举一个超级简单的例子,比如说我假设一辆车开到了一个T字型的路口,限定它必须要么左转,要么右转,设左转的概率是,右转的概率是
,除此之外没有任何信息了,问如何估计
和
?你现在有的信息仅仅是
而已,按最大熵的思想,既然你没有其他任何信息来说明向左转的可能性比向右转的可能性大(或小),那就应该把它们两一视同仁,同等对待,不能偏袒其一,于是就应该是
,这就是最大熵的思想。仔细想想还是挺有道理的,假设你觉得这样不是最合适的解,你给出了另一个解
,那就要问了,凭什么往左转的概率比往右转的大呢?已经没有任何信息再支持你的判断了呀。因此,只能把它们两同行对待了。事实上,
这个分布的熵比
这个分布的熵要大,因为前者比后者均匀,越均匀熵越大,就越是同等对待(均匀的意思就是大家都一样)。
说了半天,熵到底长什么样?下面给出对于一个分布,它的熵定义为:
对于分布,它可以有一些约束条件,什么叫约束条件?继续刚才开车的例子,一个最简单的约束条件就是
,因为要保证概率之和是1(注:这里的
和
实际上是离散分布,
是连续的分布,不过其实原理都一样,都适合最大熵原理,只是写出来的形式看起来不一样而已)。当然还可以有其它约束条件,例如我给出这样一个条件:向左转的概率是向右转的2倍,那么这个条件就是一个约束条件,加入这个条件之后,那么最大熵的解就不是
了,那就要计算
和
在满足
及
的条件下,和是什么的时候熵最大。
约束条件是下面这个样子滴:
其中M就是约束条件的总数,和
的不同组合,就构成了不同的约束条件,例如,大家回想上面的约束条件:
,就是说要保证概率和为一,如果我取
,就有
(注:对应的离散情况下的实际上就是
,这里再强调一下,连续和离散的形式,只是形式上不同,都可以用最大熵原理)。
好,现在问题变成:已知有约束:
求当是什么时,熵最大,即下式最大:
这就是求有约束的极值,用拉格朗日乘子法可以求(注:拉格朗日乘子法在高等数学中学过哟,还记得吗?),写出拉格朗日函数:
题目1:有满足如下条件的概率分布:
求当它是什么样的时候,它的熵最大?
好,大家对照着前面看,先看看的熵最大的时候,它的形式:
然后看题目,把对应的约束(即)找出来,我们看约束条件的形式:
再看题目:
是不是一眼就看出,有一个约束条件,除此之外,还有别的约束条件吗?没有了~(注意,不要把
对
取值范围的约束和这里的约束条件混淆~)。现在把求得的约束往
中代入,得到:
而根据题意又有:
解出 ,再代回
,就大功告成了~最终结果如下:
怎么?还不过瘾?那再来看一题~
求当它是什么样的时候,它的熵最大?
现在你应该有思路了吧?先去找呗~将题目给的约束:
和约束的形式对比:
相信你已经找出了~有2个:
呼~相信你已经对最大熵算法有了一定的了解,很高兴能和大家一起学习,欢迎交流,若有写得不对或者不好之处欢迎批判指正及吐槽哈~