最大熵模型

1. 最大熵原理

最大熵(Maximum Entropy)原理是概率模型学习的一个准则,认为在所有可能的概率模型(分布)中,熵最大的模型就是最好的模型,在1957年由Edwin Thompson Jaynes提出。

该原理对一个随机事件的概率分布进行预测时,认为预测应当满足全部已知的约束,而对未知的情况不做任何主观假设。此时,概率分布最均匀,预测的风险最小,得到的概率分布的熵最大。

最大熵原理根据以下两个原则解决问题:

  • 满足已知信息(约束条件)
  • 不做任何未知假设(约束外事件等概率发生)

通常用约束条件来确定概率模型的集合,最大熵原理就是满足一定的约束条件下,选择熵最大的模型。
e.g
假设5个盒子ABCDE,奖品就放在这5个盒子中的一个,请问奖品在ABCDE盒子里的概率分别是多少?

  • 已知奖品在其中一个盒子里,约束条件为



    P


    (


    A


    )


    +


    P


    (


    B


    )


    +


    P


    (


    C


    )


    +


    P


    (


    D


    )


    +


    P


    (


    E


    )


    =


    1



    P(A)+P(B)+P(C)+P(D)+P(E)=1


    P(A)+P(B)+P(C)+P(D)+P(E)=1
  • 由于无其他额外信息,只能假设奖品在每个盒子里的概率都是




    1


    /


    5



    1/5


    1/5





    P


    (


    A


    )


    =


    P


    (


    B


    )


    =


    P


    (


    C


    )


    =


    P


    (


    D


    )


    =


    P


    (


    E


    )


    =


    1


    /


    5



    P(A)=P(B)=P(C)=P(D)=P(E)=1/5


    P(A)=P(B)=P(C)=P(D)=P(E)=1/5

如果知道了额外信息,奖品在A和B中的概率总共为




3


/


10



3/10


3/10
,则


  • 约束条件:




    P


    (


    A


    )


    +


    P


    (


    B


    )


    =


    3


    /


    10


    ;
        

    P


    (


    C


    )


    +


    P


    (


    D


    )


    +


    P


    (


    E


    )


    =


    7


    /


    10



    P(A)+P(B)=3/10; \;\; P(C)+P(D)+P(E)=7/10


    P(A)+P(B)=3/10;P(C)+P(D)+P(E)=7/10
  • 按照最大熵等概率的原理:




    P


    (


    A


    )


    =


    P


    (


    B


    )


    =


    3


    /


    20


    ;
        

    P


    (


    C


    )


    =


    P


    (


    D


    )


    =


    P


    (


    E


    )


    =


    7


    /


    30



    P(A) = P(B)=3/20; \;\; P(C) = P(D) = P(E)=7/30


    P(A)=P(B)=3/20;P(C)=P(D)=P(E)=7/30

最大熵原理在对一个随机事件的概率分布进行预测时,预测应当满足全部已知条件,而对未知情况不做任何主观假设。此时概率分布最均匀,信息熵最大,预测的风险最小。常说的不要把所有鸡蛋放到一个篮子里,就是最大熵原理的朴素表达。


2. 最大熵模型定义

假设分类模型是一个条件概率分布



P


(


Y





X


)



P(Y \mid X)


P(YX)
,给定训练集,可以计算:


  • 总体联合分布




    P


    (


    X


    ,


    Y


    )



    P(X,Y)


    P(X,Y)
    的经验分布:





    P


    ~



    (


    X


    =


    x


    ,


    Y


    =


    y


    )


    =




    c


    o


    u


    n


    t


    (


    X


    =


    x


    ,


    Y


    =


    y


    )



    M




    \tilde{P}(X=x,Y=y) = \frac {count(X=x,Y=y)}{M}


    P~(X=x,Y=y)=Mcount(X=x,Y=y)
  • 边缘分布




    P


    (


    X


    )



    P(X)


    P(X)
    的经验分布:





    P


    ~



    (


    X


    =


    x


    )


    =




    c


    o


    u


    n


    t


    (


    X


    =


    x


    )



    M




    \tilde{P}(X=x) = \frac {count(X=x)}{M}


    P~(X=x)=Mcount(X=x)

其中,




c


o


u


n


t


(


X


=


x


,


Y


=


y


)



{count(X=x,Y=y)}


count(X=x,Y=y)
表示训练集中样本




(


x


,


y


)



(x,y)


(x,y)
出现的频数,




c


o


u


n


t


(


X


=


x


)



{count(X=x)}


count(X=x)
表示训练集中输入




x



x


x
出现的频数,




M



M


M
为训练样本的数量。


特征函数



f


(


x


,


y


)



f(x,y)


f(x,y)
描述输入




x



x


x
和输出




y



y


y
之间的关系,定义如下:





f


(


x


,


y


)


=



{






1







x





y



























0







o


t


h


e


r


w


i


s


e









f(x,y)= {1 xy0 otherwise


f(x,y)={10xyotherwise


特征函数类似离散数学集合论中的指示函数,指示函数是定义在集合上的函数,用来表示其中哪些元素属于某一子类。


  • 特征函数




    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) = \sum\limits_{x,y}\tilde{P}(x,y)f(x,y)


    EP~(f)=x,yP~(x,y)f(x,y)
  • 特征函数




    f


    (


    x


    ,


    y


    )



    f(x,y)


    f(x,y)
    关于条件分布




    P


    (


    Y





    X


    )



    P(Y \mid X)


    P(YX)
    和经验分布





    P


    ~



    (


    X


    )



    \tilde{P}(X)


    P~(X)
    的期望值:







E


P



(


f


)


=







x


,


y




P


(


x


,


y


)


f


(


x


,


y


)










x


,


y





P


~



(


x


)


P


(


y





x


)


f


(


x


,


y


)



E_P(f) =\sum_{x,y}P(x,y)f(x,y) \approx \sum_{x,y}\tilde{P}(x)P(y|x)f(x,y)


EP(f)=x,yP(x,y)f(x,y)x,yP~(x)P(yx)f(x,y)


如果模型可以从训练集中学习,则假设:





E



P


~




(


f


)


=



E


P



(


f


)



E_{\tilde{P}}(f) = E_{P}(f)


EP~(f)=EP(f)


上式就是最大熵模型学习的约束条件,假如有




M



M


M
个特征函数





f


i



(


x


,


y


)


(


i


=


1


,


2…


,


n


)



f_i(x,y)(i=1,2…,n)


fi(x,y)(i=1,2...,n)
,就有




m



m


m
个约束条件(可理解为训练集里所有样本对应的




m



m


m
个约束条件)。


3. 最大熵模型

假设满足所有约束条件的模型集合为:




C


=



{


P


 





 



E


P



(



f


i



)


=



E



P


~




(



f


i



)


,


i


=


1


,


2


,





,


m


}




C = \left{ P \ | \ E_P(f_i) = E _{\tilde{P}}(f_i) ,i = 1,2,…,m \right }


C={P  EP(fi)=EP~(fi),i=1,2,,m}

条件概率分布




P


(


Y





X


)



P(Y|X)


P(YX)
上的条件熵为:





H


(


P


)


=










x


,


y




P


(


y


,


x


)


log





P


(


y





x


)


=










x


,


y





P


~



(


x


)


P


(


y





x


)


log





P


(


y





x


)



H(P) =–\sum_{x,y}P(y,x)\log P(y|x)= –\sum_{x,y}\tilde{P}(x)P(y|x)\log P(y|x)


H(P)=x,yP(y,x)logP(yx)=x,yP~(x)P(yx)logP(yx)

模型集合




C



C


C
中使条件熵




H


(


P


)



H(P)


H(P)
最大的模型称为最大熵模型:






P






=


arg







max







P





C




H


(


P


)



P^* = \arg\max_{P \in C} H(P)


P=argPCmaxH(P)


4. 最大熵模型学习

最大熵模型定义如下,给定训练集






{


(



x


i



,



y


i



)


}




i


=


1



m




\left { (x_i,y_i)\right}_{i=1}^m


{(xi,yi)}i=1m
,特征函数





f


i



(


x


,


y


)





i


=


1


,


2





,


n



f_i(x,y),i= 1,2…,n


fi(x,y)i=1,2,n

















min










x


,


y





P


~



(


x


)


P


(


y





x


)


log





P


(


y





x


)
















 


s


.


t


.


   



E


p



(



f


i



)


=



E



P


~




(



f


i



)
















         






y



P


(


y





x


)


=


1







min


minx,yP~(x)P(yx)logP(yx) s.t.   Ep(fi)=EP~(fi)         yP(yx)=1


最大熵模型学习就是求解最大熵模型的过程,最大熵模型学习等价于约束最优化问题。


(1)转化为无约束优化问题

引入拉格朗日乘子,定义拉格朗日函数:









L


(


P


,


w


)









=





H


(


P


)


+



w


0




(


1









y



P


(


y





x


)


)



+







i


=


1



n




w


i



(



E



P


~




(



f


i



)






E


p



(



f


i



)


)
















=







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


(


x


,


y


)










x


,


y





P


~



(


x


)


p


(


y





x


)


f


(


x


,


y


)


)











L(P,w)=H(P)+w0(1yP(yx))+i=1nwi(EP~(fi)Ep(fi))=x,yP~(x)P(yx)logP(yx)+w0(1yP(yx))+i=1nwi(x,yP~(x,y)f(x,y)x,yP~(x)p(yx)f(x,y))

此时,优化目标为:






min







P





C






max






w



L


(


P


,


w


)



\min_{P \in C} \max_w L(P,w)


PCminwmaxL(P,w)
原问题满足KKT条件,根据拉格朗日对偶可得其对偶问题:






max






w





min







P





C




L


(


P


,


w


)



\max_w \min_{P \in C} L(P,w)


wmaxPCminL(P,w)


(2)求解内部极小化问题









min







P





C




L


(


P


,


w


)



\min_{P \in C} L(P,w)


minPCL(P,w)
是关于




w



w


w
的函数,记作:




Ψ


(


w


)


=




min







P





C




L


(


P


,


w


)


=


L


(



P


w



,


w


)



\Psi(w) = \min_{P \in C} L(P,w) = L(P_w,w)


Ψ(w)=PCminL(P,w)=L(Pw,w)
其解记作:





P


w



=


a


r


g




min







P





C




L


(


P


,


w


)


=



P


w



(


y





x


)



P_w = arg \min_{P \in C}L(P,w) = P_w(y \mid x)


Pw=argPCminL(P,w)=Pw(yx)
由于求解




P



P


P
的最小值





P


w




P_w


Pw
,令









L


(


P


,


w


)







P


(


y





x


)




=


0



\frac{\partial L(P,w) }{\partial P(y|x)}=0


P(yx)L(P,w)=0
可得:










P


w



(


y





x


)









=



1




Z


w



(


x


)




e


x


p



(







i


=


1



n




w


i




f


i



(


x


,


y


)


)












Z


w



(


x


)









=






y



e


x


p



(







i


=


1



n




w


i




f


i



(


x


,


y


)


)











Pw(yx)Zw(x)=Zw(x)1exp(i=1nwifi(x,y))=yexp(i=1nwifi(x,y))







P


w



(


y





x


)



P_w(y \mid x)


Pw(yx)
即为MaxEnt模型,其中





f


i



(


x


,


y


)



f_i(x,y)


fi(x,y)
为特征函数,





w


i




w_i


wi
为特征的权值。


(3)求解外部极大化问题







P


w



(


y





x


)



P_w(y|x)


Pw(yx)
代入




Ψ


(


w


)



\Psi(w)


Ψ(w)










Ψ


(


w


)









=







x


,


y





P


~



(


x


)



P


w



(


y





x


)


l


o


g



P


w



(


y





x


)


+







i


=


1



n




w


i




(







x


,


y





P


~



(


x


,


y


)


f


(


x


,


y


)










x


,


y





P


~



(


x


)



P


w



(


y





x


)


f


(


x


,


y


)


)

















=







x


,


y





P


~



(


x


,


y


)







i


=


1



n




w


i




f


i



(


x


,


y


)


+







x


,


y





P


~



(


x


)



P


w



(


y





x


)



(


l


o


g



P


w



(


y





x


)










i


=


1



n




w


i




f


i



(


x


,


y


)


)

















=







x


,


y





P


~



(


x


,


y


)







i


=


1



n




w


i




f


i



(


x


,


y


)


+







x


,


y





P


~



(


x


)



P


w



(


y





x


)


l


o


g



Z


w



(


x


)
















=







x


,


y





P


~



(


x


,


y


)







i


=


1



n




w


i




f


i



(


x


,


y


)


+






x




P


~



(


x


)


l


o


g



Z


w



(


x


)






y




P


w



(


y





x


)
















=







x


,


y





P


~



(


x


,


y


)







i


=


1



n




w


i




f


i



(


x


,


y


)


+






x




P


~



(


x


)


l


o


g



Z


w



(


x


)










Ψ(w)=x,yP~(x)Pw(yx)logPw(yx)+i=1nwi(x,yP~(x,y)f(x,y)x,yP~(x)Pw(yx)f(x,y))=x,yP~(x,y)i=1nwifi(x,y)+x,yP~(x)Pw(yx)(logPw(yx)i=1nwifi(x,y))=x,yP~(x,y)i=1nwifi(x,y)+x,yP~(x)Pw(yx)logZw(x)=x,yP~(x,y)i=1nwifi(x,y)+xP~(x)logZw(x)yPw(yx)=x,yP~(x,y)i=1nwifi(x,y)+xP~(x)logZw(x)


模型转化为求




Ψ


(


w


)



\Psi(w)


Ψ(w)
的极大化问题,最优解记作





w






=


a


r


g




max






w



Ψ


(


w


)



w^* = arg \max_w \Psi(w)


w=argwmaxΨ(w)
这是是一个凸优化问题,可应用梯度下降法,牛顿法,拟牛顿法等最优化算法。
对于最大熵模型还有一种专用的优化方法,称为改进的迭代尺度法(improved iterative scaling, IIS)。


得到极大化时对应的w向量取值后,带入




P


(


y





x


)



P(y \mid x)


P(yx)





w



w


w
的关系式,就可得到




P


(


y





x


)



P(y \mid x)


P(yx)
的最终结果。


4. 最大熵模型与逻辑回归

最大熵模型最后的解的其形式与




s


o


f


t


m


a


x



softmax


softmax
是等价的,又称为对数线性模型(log linear model)。
softmax用于多分类问题, 逻辑回归解决二分类问题。因此逻辑回归模型,本质上是最大熵模型。


模型的学习归结为以似然函数为目标函数的最优化问题(对模型进行极大似然估计或正则化的极大似然估计),通常通过迭代方法求解。


数据集






{


(



x


i



,



y


i



)


}




i


=


1



m




\left { (x_i,y_i)\right}_{i=1}^m


{(xi,yi)}i=1m





n



n


n
个约束,构建特征函数如下:






f


i



(


x


,


y


)


=



{







x


i








y


=


1









0







y


=


0









f_i(x,y)=


fi(x,y)={xi0y=1y=0
则,










Z


w



(


x


)









=






y



e


x


p



(







i


=


1



m




w


i




f


i



(


x


,


y


)


)

















=


e


x


p



(







i


=


1



m




w


i




f


i



(


x


,


y


=


0


)


)



+


e


x


p



(







i


=


1



m




w


i




f


i



(


x


,


y


=


1


)


)

















=


1


+


e


x


p



(







i


=


1



m




w


i




x


i



)



















P


w



(


y





x


)









=



1




Z


w



(


x


)




e


x


p



(







i


=


1



m




w


i




f


i



(


x


,


y


)


)











Zw(x)Pw(yx)=yexp(i=1mwifi(x,y))=exp(i=1mwifi(x,y=0))+exp(i=1mwifi(x,y=1))=1+exp(i=1mwixi)=Zw(x)1exp(i=1mwifi(x,y))


因此,









y


=


1



              


P


w



(


y


=


1





x


)









=




e


x


p



(







i


=


1



m




w


i




x


i



)





1


+


e


x


p



(







i


=


1



m




w


i




x


i



)




















y


=


0



              


P


w



(


y


=


0





x


)









=



1



1


+


e


x


p



(







i


=


1



m




w


i




x


i



)













y=1Pw(y=1x)y=0Pw(y=0x)=1+exp(i=1mwixi)exp(i=1mwixi)=1+exp(i=1mwixi)1


总结

  • 最大熵模型在经典分类模型中准确率较高,并且可以灵活地设置约束条件,通过约束条件的多少调节模型对未知数据的适应度和对已知数据的拟合程度。
  • 由于约束函数的数目一般会随着样本量的增大而增大,导致对偶函数优化求解的迭代过程非常慢,难以应用(scikit-learn中没有最大熵模型的类库)。