最近在学模式识别,正在看Introduction to Pattern Recognition这本书,挺不错的一本书。好,下面和大家一起来学习最大熵算法。首先,最大熵算法是干什么的呢?一般是用来估计一个分布,至于把分布估计出来之后用来干什么,那要视具体问题而定。那这里的“熵”是什么意思呢?它是指信息熵,一个分布的均匀程度可以用熵的大小来衡量,熵越大,就越均匀,而最大熵就是要求在满足特定约束下,分布是什么样的时候,熵最大,也就是越均匀越好。
为什么在满足特定约束下越均匀越好?因为你已经没有足够的信息来支持你的判断了,你不能偏袒其中任意一方,你只能把它们一视同仁。举一个超级简单的例子,比如说我假设一辆车开到了一个T字型的路口,限定它必须要么左转,要么右转,设左转的概率是,右转的概率是,除此之外没有任何信息了,问如何估计和?你现在有的信息仅仅是而已,按最大熵的思想,既然你没有其他任何信息来说明向左转的可能性比向右转的可能性大(或小),那就应该把它们两一视同仁,同等对待,不能偏袒其一,于是就应该是,这就是最大熵的思想。仔细想想还是挺有道理的,假设你觉得这样不是最合适的解,你给出了另一个解,那就要问了,凭什么往左转的概率比往右转的大呢?已经没有任何信息再支持你的判断了呀。因此,只能把它们两同行对待了。事实上,这个分布的熵比这个分布的熵要大,因为前者比后者均匀,越均匀熵越大,就越是同等对待(均匀的意思就是大家都一样)。
说了半天,熵到底长什么样?下面给出对于一个分布,它的熵定义为:
对于分布,它可以有一些约束条件,什么叫约束条件?继续刚才开车的例子,一个最简单的约束条件就是,因为要保证概率之和是1(注:这里的