最大熵模型(Maximum entropy model)
本文你将知道:
最大熵原理:在满足已知约束条件的模型集合中,选择熵最大的模型。熵最大,对应着随机性最大。最大熵首先要满足已知事实,对于其他未知的情况,不做任何的假设,认为他们是等可能性的,此时随机性最大。
最大熵原理是统计学习的一般原理,将它应用到分类得到最大熵模型。最大熵模型的求解可以看做是约束最优化问题。引入拉个朗日乘子求解。先来说下最优化目标和约束条件分别是什么。
假设分类模型是判别式模型,对条件概率 p ( y ∣ x ) p(y|x) p(y∣x)建模。
最优化目标:
选择使得熵最大的条件概率分布 p ( y ∣ x ) p(y|x) p(y∣x)
p ( y ∣ x ) = a r g m a x p ∑ x , y − p ~ ( x ) p ( y ∣ x ) l o g p ( y ∣ x ) p(y|x)=\mathop{argmax}\limits_p\sum_{x,y}-\tilde{p}(x)p(y|x)\mathop{log}p(y|x) p(y∣x)=pargmaxx,y∑−p~(x)p(y∣x)logp(y∣x)
约束条件:
首先,使用特征函数来描述 x , y x,y x,y的某一个事实。当 x , y x,y x,y满足某一条件时等于1,否则等于0。
f ( x , y ) = { 1 , i f x , y 满 足 某 一 事 实 0 , e l s e f(x,y)=\begin{cases}1,&ifx,y满足某一事实\\0,&else\end{cases} f(x,y)={1,0,ifx,y满足某一事实else
我们需要根据经验,定义多个特征函数。那每个特征如何对要求解的分布 p ( y ∣ x ) p(y|x) p(y∣x)产生约束呢?要求特征函数对于联合经验分布 p ( x , y ) p(x,y) p(x,y)的期望要等于对条件分布 p ( y ∣ x ) p(y|x) p(y∣x)和经验分布p(x)的期望。用公式表示就是:
∑ x , y p ~ ( x , y ) f ( x , y ) = ∑ x , y p ~ ( x ) p ( y ∣ x ) f ( x , y ) E ∼ p ~ ( x , y ) ( f ( x , y ) ) = E ∼ p ( y ∣ x ) ( f ( x , y ) ) \sum_{x,y}\tilde p(x,y)f(x,y)=\sum_{x,y}\tilde p(x)p(y|x)f(x,y)\\E_{\sim \tilde p(x,y)}(f(x,y))=E_{\sim p(y|x)}(f(x,y)) x,y∑p~(x,y)f(x,y)=x,y∑p~(x)p(y∣x)f(x,y)E∼p~(x,y)(f(x,y))=E∼p(y∣x)(f(x,y))
综合起来,约束最优化问题是:
m a x H ( p ) = ∑ x , y − p ( x ) ~ p ( y ∣ x ) l o g p ( y ∣ x ) s . t . E ∼ p ~ ( f i ) = E ∼ p ( f i ) , i = 1 , 2 , . . . , n ∑ y p ( y ∣ x ) = 1 \mathop{max}H(p)=\sum_{x,y}-\tilde{p(x)}p(y|x)\mathop{log}p(y|x)\\\mathop{s.t. }E_{\sim \tilde p}(f_i)=E_{\sim p}(f_i),i=1,2,...,n\\\sum_yp(y|x)=1 maxH(p)=x,y∑−p(x)~p(y∣x)logp(y∣x)s.t.E∼p~(fi)=E∼p(fi),i=1,2,...,ny∑p(y∣x)=1
下面的求解推导过程主要参考李航的统计学习方法。不想了解推导过程的可直接跳过去看对最大熵的分析结果。
求解引入拉个朗日乘子 w 0 , w 1 , . . . , w n w_0,w_1,...,w_n w0,w1,...,wn将问题转化成无约束的最优化问题。同时,最大化H§等价于最小化-H§。得到拉格朗日函数 L ( p , w ) L(p,w) L(p,w)。
L ( p , w ) = − H ( p ) + w 0 ( 1 − ∑ y p ( y ∣ x ) ) + ∑ i = 1 n w i [ E ∼ p ~ ( f i ( x , y ) ) − E ∼ p ( f i ( x , y ) ) ] ∑ x , y p ~ ( x ) p ( y ∣ x ) l o g p ( y ∣ x ) + w 0 ( 1 − ∑ y p ( y ∣ x ) ) + ∑ i = 1 n w i ( ∑ x , y p ~ ( x , y ) f i ( x , y ) − ∑ x , y p ~ ( x ) p ( y ∣ x ) f i ( x , y ) ) L(p,w)=-H(p)+w_0(1-\sum_yp(y|x))+\sum_{i=1}^nw_i[E_{\sim\tilde p}(f_i(x,y))-E_{\sim p}(f_i(x,y))]\\\sum_{x,y}\tilde p(x)p(y|x)\mathop{log}p(y|x)+w_0(1-\sum_yp(y|x))+\sum_{i=1}^nw_i(\sum_{x,y}\tilde p(x,y)f_i(x,y)-\sum_{x,y}\tilde p(x)p(y|x)f_i(x,y)) L(p,w)=−H(p)+w0(1−y∑p(y∣x))+i=1∑nwi[E∼p~(fi(x,y))−E∼p(fi(x,y))]x,y∑p~(x)p(y∣x)logp(y∣x)+w0(1−y∑p(y∣x))+i=1∑nwi(x,y∑p~(x,y)fi(x,y)−x,y∑p~(x)p(y∣x)fi(x,y))
这样,最初的问题就变成了拉格朗日函数的极小极大问题。也叫作原始问题:
m i n p m a x w L ( p , w ) \mathop{min}\limits_p\mathop{max}\limits_wL(p,w) pminwmaxL(p,w)
其对偶问题是极大极小问题:
m a x w m i n p L ( p , w ) (1) \mathop{max}\limits_w\mathop{min}\limits_pL(p,w)\tag{1} wmaxpminL(p,w)(1)
先来看公式(1)的内部极小化问题 m i n p L ( p , w ) \mathop{min}\limits_pL(p,w) pminL(p,w),其解是关于w的函数。用 ψ ( w ) \psi(w) ψ(w)表示。
ψ ( w ) = m i n p L ( p , w ) = L ( p w , w ) p w = a r g m i n p L ( p , w ) \psi(w)=\mathop{min}\limits_pL(p,w)=L(p_w,w)\\p_w=\mathop{argmin}\limits_pL(p,w) ψ(w)=pminL(p,w)=L(pw,w)pw=pargminL(p,w)
根据KKT条件, ∂ L ( p , w ) ∂ p ( y ∣ x ) = 0 \frac{\partial L(p,w)}{\partial p(y|x)}=0 ∂p(y∣x)∂L(p,w)=0求解 p w p_w pw。
∂ L ( p , w ) ∂ p ( y ∣ x ) = ∑ x , y [ p ~ ( x ) l o g p ( y ∣ x ) + p ~ ( x ) ] − ∑ y w 0 − ∑ i = 1 n w i ∑ x , y p ~ ( x ) f i ( x , y ) = ∑ x , y p ~ ( x ) [ l o g p ( y ∣ x ) + 1 − w o − ∑ i n w i f i ( x , y ) ] \frac{\partial L(p,w)}{\partial p(y|x)}=\sum_{x,y}[\tilde p(x)\mathop{log}p(y|x)+\tilde p(x)]-\sum_yw_0-\sum_{i=1}^nw_i\sum_{x,y}\tilde p(x)f_i(x,y)\\=\sum_{x,y}\tilde p(x)[\mathop{log}p(y|x)+1-w_o-\sum_i^nw_if_i(x,y)] ∂p(y∣x)∂L(p,w)=x,y∑[p~(x)logp(y∣x)+p~(x)]−y∑w0−i=1∑nwix,y∑p~(x)fi(x,y)=x,y∑p~(x)[logp(y∣x)+1−wo−i∑nwifi(x,y)]
上面的偏导计算需要用到边缘概率的计算:
∑ y w 0 = ∑ x , y p ~ ( x ) w 0 \sum_yw_0=\sum_{x,y}\tilde p(x)w_0 y∑w0=x,y∑p~(x)w0
令偏导为0。并且 p ~ ( x ) > 0 \tilde p(x)>0 p~(x)>0可求得:
p ( y ∣ x ) = e x p ( ∑ i n w i f i ( x , y ) + w 0 − 1 ) = e x p ( ∑ i n w i f i ( x , y ) ) e x p ( 1 − w 0 ) p(y|x)=exp(\sum_i^nw_if_i(x,y)+w_0-1)=\frac{exp(\sum_i^nw_if_i(x,y))}{exp(1-w_0)} p(y∣x)=exp(i∑nwifi(x,y)+w0−1)=exp(1−w0)exp(∑inwifi(x,y))
在考虑到约束 ∑ y p ( y ∣ x ) = 1 \sum\limits_yp(y|x)=1 y∑p(y∣x)=1得到:
p ( y ∣ x ) = 1 Z w ( X ) e x p ∑ i n w i f i ( x , y ) Z w ( X ) = ∑ y e x p ∑ i n w i f i ( x , y ) (2) p(y|x)=\frac{1}{Z_w(X)}\mathop{exp}\sum_i^nw_if_i(x,y)\tag{2}\\Z_w(X)=\sum_y\mathop{exp}\sum_i^nw_if_i(x,y) p(y∣x)=Zw(X)1expi∑nwifi(x,y)Zw(X)=y∑expi∑nwifi(x,y)(2)
之后需要在求解对偶问题的外部极大问题:
m a x ψ ( w ) \mathop{max}\psi(w) maxψ(w)
这是一个只关于w的函数。将其解记做 w ∗ w^* w∗
w ∗ = a r g m a x w ψ ( w ) w^*=\mathop{argmax}\limits_w\psi(w) w∗=wargmaxψ(w)
得到的解 w ∗ w^* w∗带入公式(2),即得到了我们想要的由最大熵原理得到的条件概率分布 p ( y ∣ x ) p(y|x) p(y∣x)。
在最大熵模型中,我们使用最大熵原理去推导用于分类问题的条件概率分布 p ( y ∣ x ) p(y|x) p(y∣x)。得到了公式(2)的概率表示。这说明了:满足给定事实的情况下,能够令熵达到最大的分布是指数族分布。特别的,如果给定方差和均值,使熵达到最大的分布是高斯分布。高斯分布也是指数族分布的一种。
最大熵模型的优缺点:
优点:
缺点:
最大熵有点类似支持向量机,都是当满足已知约束的模型有多个时,根据一定的原则选择最优的那个模型。最大熵就是在解集合中选择熵最大的那个。在svm和感知机的对比中,我们知道感知机的线性分割平面不唯一,有很多个解。svm根据分离间隔最大的原则选择最优解。
参考:
[1]李航,统计学习方法
[2]一篇介绍HMM,MEMM,CRF的文字讲解了最大熵的优缺点。