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