文章目录
最大熵模型可能刚开始接触的同学都觉得这个模型还行吧,不算啥,一般般。不就是让熵最大嘛,我取个均匀分布熵不就最大了嘛。这个模型有啥好讲的,嘿,您可太小瞧它了,我学习这个模型的感觉就像是什么呢?就像是在上课,上一秒还在讲1+1=2,我弯腰一捡笔,老师一黑板公式已经黑压压的写满了。哈哈恍如隔世,废话不多说哟,最近又重新学习了一下这个模型,感觉收获不小,特来和大家分享一下。
如果你还不了解信息熵的概念,或者对熵、条件熵、交叉熵、互信息等概念不熟悉,这里有我专门为本文准备的传送门: 一文说清楚你头疼不已的熵们:信息熵、联合熵、条件熵、互信息、交叉熵、相对熵(KL散度)。
正式开始!
1.最大熵模型初探
1.1 模型引入
最大熵模型有最基本的原则:
- 承认已知事物(现有知识)
- 对未知事物不做任何假设,没有偏袒
听起来是不是很公平的样子,先来一个小例子
上面的这个应该没有疑问,我们假设x,y的分布都是均匀分布,不就是最大熵模型了吗?
而最大熵模型难就难在如何建立一个包含已有知识的无偏模型。
看到这里我们依然还是很容易理解的,除去“学习”被标记为定语这样的一个事实,我们其他的情况依然是均匀分布的,这也是符合最大熵原理的。
但是这个新知识太简单了,比如复杂一点的知识呢?
是不是就开始蒙蔽了?没关系,我们的最大熵就是用来解决这个问题的。
把已有约束(现有知识都可以看做是某种约束)都列举出来:
整理一下,可以写作:
因此我们可以知道:最大熵模型就是要在给定已有知识X的情况下,求熵最大时的后验分布呀!这里冒出来个后验分布,你听了不要感觉哇不得了,又开始听不懂了,后验分布其实就是 p ( y ∣ x ) p(y|x) p(y∣x)嘛。
1.2 特征函数
特征函数这个概念很多地方见过有木有?像条件随机场里面就讲到过, 如果还不了解这个概念的话可以看看我前面的条件随机场的博客。
简而言之就是看看x,y是否符合某一条特征关系,如果符合取1,不符合取0,这个函数也没干别的事,就干这事情去了。
那么我们考虑哦,一堆样本里面,先定义好一个特征函数,那么在样本中对每一条样本(x,y),一定知道 f ( x , y ) f(x,y) f(x,y)的值对不对,然后我们有样本,是可以统计出经验分布 P ~ ( x , y ) \tilde P(x,y) P~(x,y)的,也可以统计出边缘分布 P ~ ( x ) \tilde P(x) P~(x)的。
然后最大熵模型最最最最最关键的步骤来了!
特征函数 f ( x , y ) f(x,y) f(x,y)关于经验分布 P ~ ( x , y ) \tilde P(x,y) P~(x,y)的期望是可以计算的:
E P ~ ( f ) = Σ x , y P ~ ( x , y ) f ( x , y ) E_{\tilde P}(f) = \Sigma{x,y}\tilde P(x,y) f(x,y) EP~(f)=Σx,yP~(x,y)f(x,y)
特征函数关于模型 P ( Y ∣ X ) P(Y|X) P(Y∣X)与经验分布 P ~ ( x ) \tilde P(x) P~(x)的期望表示出来:
E P ( f ) = Σ x , y P ( y ∣ x ) P ~ ( x ) f ( x , y ) E_{P}(f) = \Sigma{x,y} P(y|x)\tilde P(x) f(x,y) EP(f)=Σx,yP(y∣x)P~(x)f(x,y)
对比一下上下两个公式,简直不能再像,我们希望建立的模型尽可能表达我们的样本中的知识,当然也就是希望这两个期望能相等,这就是我们最大熵模型中的核心约束!
E P ~ ( f ) = E P ( f ) E_{\tilde P}(f) =E_{P}(f) EP~(f)=EP(f)
也就是
Σ x , y P ~ ( x , y ) f (