最大熵算法及简单例子

      最近在学模式识别,正在看Introduction to Pattern Recognition这本书,挺不错的一本书。好,下面和大家一起来学习最大熵算法。首先,最大熵算法是干什么的呢?一般是用来估计一个分布,至于把分布估计出来之后用来干什么,那要视具体问题而定。那这里的“熵”是什么意思呢?它是指信息熵,一个分布的均匀程度可以用熵的大小来衡量,熵越大,就越均匀,而最大熵就是要求在满足特定约束下,分布是什么样的时候,熵最大,也就是越均匀越好。

       为什么在满足特定约束下越均匀越好?因为你已经没有足够的信息来支持你的判断了,你不能偏袒其中任意一方,你只能把它们一视同仁。举一个超级简单的例子,比如说我假设一辆车开到了一个T字型的路口,限定它必须要么左转,要么右转,设左转的概率是,右转的概率是,除此之外没有任何信息了,问如何估计?你现在有的信息仅仅是而已,按最大熵的思想,既然你没有其他任何信息来说明向左转的可能性比向右转的可能性大(或小),那就应该把它们两一视同仁,同等对待,不能偏袒其一,于是就应该是,这就是最大熵的思想。仔细想想还是挺有道理的,假设你觉得这样不是最合适的解,你给出了另一个解,那就要问了,凭什么往左转的概率比往右转的大呢?已经没有任何信息再支持你的判断了呀。因此,只能把它们两同行对待了。事实上,这个分布的熵比这个分布的熵要大,因为前者比后者均匀,越均匀熵越大,就越是同等对待(均匀的意思就是大家都一样)。

        说了半天,熵到底长什么样?下面给出对于一个分布,它的熵定义为:


        对于分布,它可以有一些约束条件,什么叫约束条件?继续刚才开车的例子,一个最简单的约束条件就是,因为要保证概率之和是1(注:这里的实际上是离散分布,是连续的分布,不过其实原理都一样,都适合最大熵原理,只是写出来的形式看起来不一样而已)。当然还可以有其它约束条件,例如我给出这样一个条件:向左转的概率是向右转的2倍,那么这个条件就是一个约束条件,加入这个条件之后,那么最大熵的解就不是了,那就要计算在满足 的条件下,和是什么的时候熵最大。

        约束条件是下面这个样子滴:

最大熵算法及简单例子_第1张图片

        其中M就是约束条件的总数,的不同组合,就构成了不同的约束条件,例如,大家回想上面的约束条件:,就是说要保证概率和为一,如果我取,就有注:对应的离散情况下的实际上就是,这里再强调一下,连续和离散的形式,只是形式上不同,都可以用最大熵原理)。

        好,现在问题变成:已知有约束:

最大熵算法及简单例子_第2张图片

        求当是什么时,熵最大,即下式最大:


        这就是求有约束的极值,用拉格朗日乘子法可以求(注:拉格朗日乘子法在高等数学中学过哟,还记得吗?),写出拉格朗日函数:

         再对 求偏导数,注意,这里是对 求偏导,而我们以前在高等数学中做题目的时候,一般是对 求偏导,因为那时是要求当 是什么的时候,目标函数取得极值,而这里是要求当 是什么的时候,目标函数取得极值,也就是说,把 看成一个整体来求偏导,得到下式:
最大熵算法及简单例子_第3张图片
         令偏导数等于0,解出 得到:

         这时候就求出来了 在满足约束条件的情况下, 长这个样子的时候, 的熵最大~下面再给出简单的例子,大家可以自己动手算一下,这样可以体会得更深刻:

         题目1有满足如下条件的概率分布

最大熵算法及简单例子_第4张图片

         求当它是什么样的时候,它的熵最大?

         好,大家对照着前面看,先看看的熵最大的时候,它的形式:


         然后看题目,把对应的约束(即)找出来,我们看约束条件的形式:

最大熵算法及简单例子_第5张图片

         再看题目:

最大熵算法及简单例子_第6张图片

        是不是一眼就看出,有一个约束条件,除此之外,还有别的约束条件吗?没有了~(注意,不要把取值范围的约束和这里的约束条件混淆~)。现在把求得的约束往中代入,得到:

        而根据题意又有:

最大熵算法及简单例子_第7张图片

        解出 ,再代回,就大功告成了~最终结果如下:

最大熵算法及简单例子_第8张图片

       怎么?还不过瘾?那再来看一题~

       题目 2 有满足如下条件的概率分布
最大熵算法及简单例子_第9张图片

       求当它是什么样的时候,它的熵最大?

       现在你应该有思路了吧?先去找呗~将题目给的约束:

最大熵算法及简单例子_第10张图片

      和约束的形式对比:

最大熵算法及简单例子_第11张图片

      相信你已经找出了~有2个:


      好,把它们往 代入得:
最大熵算法及简单例子_第12张图片
     再把这个 代入题目的那两个条件 最大熵算法及简单例子_第13张图片中,两个方程两个未知数,就可以解啦~( 注:这一步的积分稍微有点麻烦,如果有同学积不出来请留言,我会提供手写版的详细过程供参考 ~)。最终结果:
最大熵算法及简单例子_第14张图片

     呼~相信你已经对最大熵算法有了一定的了解,很高兴能和大家一起学习,欢迎交流,若有写得不对或者不好之处欢迎批判指正及吐槽哈~

    参考:《Introduction to Pattern Recognition》,这本书还是挺不错的~


你可能感兴趣的:(算法,研究生)