码迷,mamicode.com
首页 > 编程语言 > 详细

最大熵算法及简单样例

时间:2017-08-12 22:46:04      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:dag   data-   支持   技术   同仁   它的   不同的   注意   font   

      近期在学模式识别,正在看Introduction to Pattern Recognition这本书,挺不错的一本书。好。以下和大家一起来学习最大熵算法。

首先,最大熵算法是干什么的呢?通常是用来预计一个分布,至于把分布预计出来之后用来干什么,那要视详细问题而定。

那这里的“熵”是什么意思呢?它是指信息熵,一个分布的均匀程度能够用熵的大小来衡量。熵越大,就越均匀。而最大熵就是要求在满足特定约束下,分布技术分享是什么样的时候。熵最大。也就是越均匀越好。

       为什么在满足特定约束下越均匀越好?由于你已经没有足够的信息来支持你的推断了。你不能偏袒当中随意一方。你仅仅能把它们一视同仁。

举一个超级简单的样例。比方说我如果一辆车开到了一个T字型的路口。限定它必需要么左转。要么右转,设左转的概率是技术分享,右转的概率是技术分享,除此之外没有不论什么信息了,问怎样预计技术分享技术分享?你如今有的信息仅仅是技术分享而已。按最大熵的思想,既然你没有其它不论什么信息来说明向左转的可能性比向右转的可能性大(或小)。那就应该把它们两一视同仁。同等对待。不能偏袒其一。于是就应该是技术分享,这就是最大熵的思想。

细致想想还是挺有道理的,如果你认为这样不是最合适的解,你给出了还有一个解技术分享,那就要问了。凭什么往左转的概率比往右转的大呢?已经没有不论什么信息再支持你的推断了呀。

因此,仅仅能把它们两同行对待了。其实,技术分享这个分布的熵比技术分享这个分布的熵要大,由于前者比后者均匀。越均匀熵越大,就越是同等对待(均匀的意思就是大家都一样)。

        说了半天。熵究竟长什么样?以下给出对于一个分布。它的熵定义为:

技术分享

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

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

技术分享

        当中M就是约束条件的总数。技术分享技术分享的不同组合,就构成了不同的约束条件。比如。大家回忆上面的约束条件:技术分享。就是说要保证概率和为一,假设我取技术分享,就有技术分享注:相应的离散情况下的实际上就是技术分享,这里再强调一下,连续和离散的形式,仅仅是形式上不同,都能够用最大熵原理)。

        好,如今问题变成:已知有约束:

技术分享

        求当技术分享是什么时。熵最大,即下式最大:

技术分享

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

技术分享
         再对技术分享求偏导数。注意。这里是对技术分享求偏导,而我们曾经在高等数学中做题目的时候。通常是对技术分享求偏导。由于那时是要求当技术分享是什么的时候,目标函数取得极值,而这里是要求当技术分享是什么的时候,目标函数取得极值,也就是说,把技术分享看成一个总体来求偏导,得到下式:
技术分享
         令偏导数等于0,解出技术分享得到:
技术分享
         这时候就求出来了技术分享在满足约束条件的情况下,技术分享长这个样子的时候,技术分享的熵最大~以下再给出简单的样例,大家能够自己动手算一下。这样能够体会得更深刻:

         题目1有满足例如以下条件的概率分布技术分享

技术分享

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

         好,大家对比着前面看,先看看技术分享的熵最大的时候。它的形式:

技术分享

         然后看题目,把相应的约束(即技术分享)找出来。我们看约束条件的形式:

技术分享

         再看题目:

技术分享

        是不是一眼就看出,有一个约束条件技术分享,除此之外。还有别的约束条件吗?没有了~(注意。不要把技术分享技术分享取值范围的约束和这里的约束条件混淆~)。

如今把求得的约束往技术分享中代入,得到:

技术分享

        而依据题意又有:

技术分享

        解出技术分享 ,再代回技术分享。就大功告成了~终于结果例如以下:

技术分享

       怎么?还只是瘾?那再来看一题~

       题目2有满足例如以下条件的概率分布技术分享
技术分享

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

       如今你应该有思路了吧?先去找技术分享呗~将题目给的约束:

技术分享

      和约束的形式对照:

技术分享

      相信你已经找出技术分享了~有2个:

技术分享技术分享
      好,把它们往技术分享代入得:
技术分享
     再把这个技术分享代入题目的那两个条件技术分享中,两个方程两个未知数,就能够解啦~(注:这一步的积分略微有点麻烦。假设有同学积不出来请留言,我会提供手写版的具体过程供參考~)。终于结果:
技术分享

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

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


最大熵算法及简单样例

标签:dag   data-   支持   技术   同仁   它的   不同的   注意   font   

原文地址:http://www.cnblogs.com/liguangsunls/p/7351591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!