轉自:https://zhuanlan.zhihu.com/p/56414312
最大熵是概率模型學習的一個准則,將其推廣到分類問題得到最大熵模型(maximum entropy model).本部分首先介紹最大熵模型,其次講述其學習算法,包括改進的迭代尺度算法和擬牛頓法,最后介紹最大熵原理在NLP應用。
PART1 最大熵模型
最大熵模型由最大熵原理推導實現。這里首先敘述一般的最大熵原理,然后講解最大熵模型的推導,最后給出最大熵模型學習的形式。
1.最大熵原理
最大熵原理認為,學習概率模型時,在所有可能的概率模型(分布)中,熵最大的模型是最好的模型。通常用約束條件來確定概率模型的集合,所以,最大熵原理也可以表述為在滿足約束條件的模型集合中選取熵最大的模型。
2.最大熵模型的推導
最大熵原理是統計學習的一般原理,將它應用到分類得到最大熵模型。
假設分類模型是一個條件概率分布
,
表示輸入,
表示輸出,
和
分別是輸入和輸出的集合。這個模型表示的是對於給定的輸入
,以條件概率
輸出
。
給定一個訓練數據集
學習的目標是用最大熵原理選擇最好的分類模型。
首先考慮模型應該滿足的條件。給定訓練數據集,可以確定聯合分布
的經驗分布和邊緣分布
的經驗分布,分別以
和
表示。這里,
其中,
表示訓練數據中樣本
出現的頻數,v(X=x)表示訓練數據中輸入
出現的頻數,
表示訓練樣本容量。
用特征函數(feature function)
描述輸入
和輸出
之間的某一個事實。其定義是
它是一個二值函數,當
和
滿足這個事實時取值為1,否則取值為0.
特征函數
關於經驗分布
的期望值,用
表示
特征函數
關於模型
與經驗分布
的期望值,用
表示
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1FX1AlMjhmJTI5JTNEJTVDc3VtXyU3QnglMkN5JTdEJTVDYmFyJTdCUCU3RCUyOHglMjlQJTI4eSU3Q3glMjlmJTI4eCUyQ3klMjk=.png)
如果模型能夠獲取訓練數據中的信息,那么就可以假設着兩個期望值相等,即
(*1)
或
(*2)
將式(*1)和(*2)作為模型學習的約束條件。假如有
個特征函數
,那么就有
個約束條件。
Definition1:(最大熵模型)
假設滿足所有約束條件的模型集合為
(*3)
定義在條件概率分布
上的條件熵為
(*4)
則模型集合
中條件熵
最大的模型稱為最大熵模型。式中的對數為自然對數。
3.最大熵模型學習的形式
最大熵模型的學習過程就是求解最大熵模型的過程。最大熵模型的學習可以形式化為約束最優化問題。
對於給定的訓練數據集
以及特征函數
,最大熵模型的學習等價於約束最優化問題:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNtaW5fJTdCUCU1Q2luKyU1Q21hdGhjYWwlN0JDJTdEJTdEKyU1Q3F1YWQrLUglMjhQJTI5.png)
(*5)
(*6)
這里,將約束最優化的原始問題轉換為無約束最優化的對偶問題。通過求解對偶問題求解最優化問題。
首先,引進拉格朗日乘子
,定義拉格朗日函數
:
(*7)
原始化的原始問題是
(*8)
對偶問題是
(*9)
由於拉格朗日函數
是
的凸函數,原始問題(8)的解與對偶問題(9)的解是等價的。這樣,可以通過求解對偶問題(*9)來求解原始問題(*8)。
首先,求解對偶問題(*9)內部的極小化問題
。
是
函數,將其記作
(*10)
具體地,求
對
的偏導數
令偏導數等於0,在
的情況下,解得
由於
,得
(*11)
其中,
(*12)
之后,求解對偶問題外部的極大化問題
將其解記為
。
也就是說,可以應用最優化算法求對偶函數
的極大化,得到
,用來表示
。這里,
是學習到的最優化模型(最大熵模型)。
4.極大似然估計
從以上最大熵模型學習中可以看出,最大熵模型是由式(*11)、式(*12)表示的條件概率分布。下面證明對偶函數的極大化等價於最大熵模型的極大似然估計。
已知訓練數據的經驗概率分布
,條件概率分布
的對數似然函數表示為
當條件概率分布
是最大熵模型(*11)和(*12)時,對數似然函數
為
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1MXyU3QiU1Q2JhciU3QlAlN0QlN0QlMjhQX3clMjklM0QlNUNzdW1fJTdCeCUyQ3klN0QlNUNiYXIlN0JQJTdEJTI4eCUyQ3klMjlsb2crUCUyOHklN0N4JTI5.png)
(*13)
再看對偶函數,由式(*7)及式(*10)可得
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNQc2klMjh3JTI5JTNEJTVDc3VtXyU3QnglMkN5JTdEJTVDYmFyJTdCUCU3RCUyOHglMjlQX3clMjh5JTdDeCUyOWxvZytQX3clMjh5JTdDeCUyOSUyQiU1Q3N1bV8lN0JpJTNEMSU3RCU1RW53X2klMjglNUNzdW1fJTdCeCUyQ3klN0QlNUNiYXIlN0JQJTdEJTI4eCUyQ3klMjlmX2klMjh4JTJDeSUyOS0lNUNzdW1fJTdCeCUyQ3klN0QlNUNiYXIlN0JQJTdEJTI4eCUyOVBfdyUyOHklN0N4JTI5Zl9pJTI4eCUyQ3klMjklMjk=.png)
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lM0QlNUNzdW1fJTdCeCUyQ3klN0QlNUNiYXIlN0JQJTdEJTI4eCUyQ3klMjklNUNzdW1fJTdCaSUzRDElN0QlNUVud19pZl9pJTI4eCUyQ3klMjklMkIlNUNzdW1fJTdCeCUyQ3klN0QlNUNiYXIlN0JQJTdEJTI4eCUyOVBfdyUyOHklN0N4JTI5bG9nK1pfdyUyOHglMjk=.png)
(*14)
比較(*13)和(*14),可得
既然對偶函數
等價於對數似然函數
,於是證明了最大熵模型學習中的對偶函數極大化等價於最大熵模型的極大似然估計這一事實。
PART2 學習算法
邏輯斯蒂回歸模型、最大熵模型學習歸結為以似然函數為目標函數的最優化問題,通常通過迭代算法求解。從最優化的觀點看,這時的目標函數具有很好的性質,它是光滑的凸函數,因此多種最優化方法都適用,保證能找到全局最優解。常用的方法有改進的迭代尺度法、梯度下降法、牛頓法或擬牛頓法。
1.改進的迭代尺度法(imporoved iterative scaling,IIS)
IIS的想法是:假設最大熵模型當前的參數向量是
,我們希望找到一個新的參數向量
,使得模型的對數似然函數值增大。如果能有這樣一種參數向量更新的方法
,那么就可以重復適用這一方法,直到找到對數似然函數的最大值。
對於給定的經驗分布
,模型參數從
到
,對數似然函數的改變量是
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1MJTI4dyUyQiU1Q2RlbHRhJTI5LUwlMjh3JTI5JTNEJTVDc3VtXyU3QnglMkN5JTdEJTVDYmFyJTdCUCU3RCUyOHglMkN5JTI5JTVDc3VtXyU3QmklM0QxJTdEJTVFJTdCbiU3RCU1Q2RlbHRhX2lmX2klMjh4JTJDeSUyOS0lNUNzdW1fJTdCeCU3RCU1Q2JhciU3QlAlN0QlMjh4JTI5bG9nJTVDZnJhYyU3QlpfJTdCdyUyQiU1Q2RlbHRhJTdEJTI4eCUyOSU3RCU3QlpfdyUyOHglMjklN0Q=.png)
利用不等式
建立對數似然函數改變量的下界:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1MJTI4dyUyQiU1Q2RlbHRhJTI5LUwlMjh3JTI5JTVDZ2VxKyU1Q3N1bV8lN0J4JTJDeSU3RCU1Q2JhciU3QlAlN0QlMjh4JTJDeSUyOSU1Q3N1bV8lN0JpJTNEMSU3RCU1RSU3Qm4lN0QlNUNkZWx0YV9pZl9pJTI4eCUyQ3klMjklMkIxLSU1Q3N1bV8lN0J4JTdEJTVDYmFyJTdCUCU3RCUyOHglMjklNUNmcmFjJTdCWl8lN0J3JTJCJTVDZGVsdGElN0QlMjh4JTI5JTdEJTdCWl93JTI4eCUyOSU3RA==.png)
將右端記為
於是有
即
是對數似然函數改變量的一個下界。
如果能找到適當的
使下界
提高,那么對數似然函數也會提高。然而,函數
中的是
一個向量,含有多個變量,不易同時優化。IIS試圖一次只優化其中一個變量
,而固定其他變量
。
為達到這一目的,IIS進一步降低下界
。具體地,IIS引進一個量
,
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1mJTVFJTdCJTVDYXN0JTdEJTI4eCUyQ3klMjklM0QlNUNzdW1faStmX2klMjh4JTJDeSUyOQ==.png)
這樣
(*15)
利用指數函數的凸性以及對任意
,有
且
這一事實,根據Jensen不等式,得到
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1leHAlMjglNUNzdW1fJTdCaSUzRDElN0QlNUVuJTVDZnJhYyU3QitmX2klMjh4JTJDeSUyOSU3RCU3QmYlNUUlMkElMjh4JTJDeSUyOSU3RCU1Q2RlbHRhX2lmJTVFJTJBJTI4eCUyQ3klMjklMjklNUNsZXErJTVDc3VtXyU3QmklM0QxJTdEJTVFbiU1Q2ZyYWMlN0IrZl9pJTI4eCUyQ3klMjklN0QlN0JmJTVFJTJBJTI4eCUyQ3klMjklN0RleHAlMjglNUNkZWx0YV9pZiU1RSUyQSUyOHglMkN5JTI5JTI5.png)
於是(*15)可改寫為
記上不等式右端為
於是得到
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1MJTI4dyUyQiU1Q2RlbHRhJTI5LUwlMjh3JTI5JTVDZ2VxK0IlMjglNUNkZWx0YSU3Q3clMjk=.png)
這里,
是對數似然函數改變量的一個新的(相對不緊的)下界。
求
對
的偏導數:
(*16)
在式(*16)里,除
外不含任何其他變量,令偏導數為0得到
(*17)
於是,依次對
求解方程(*17)可以求出
。
算法(改進的迭代尺度算法IIS)
輸入:特征函數
;經驗分布
,模型
輸出:最優參數值
;最優模型
。
(1)對所有
,取初值
(2)對每一
:
(a)令
是方程
的解,這里,
(b)更新
值:
(3)如果不是所有
都收斂,重復步(2).
PART3 NLP應用
在網絡搜索排名中用到的信息有上千種,如何能把它們結合在一起用好?更普遍的講,在信息處理中,我們常常知道各種各樣但不完全確定的信息,我們需要用一個統一模型將這些信息綜合起來。如何綜合好,是一門學問。
最大熵模型在形式上是最漂亮、最完美的統計模型,在自然語言處理和金融方面有很多有趣的應用。最大熵模型,就是要保留全部的不確定性,將風險降到最小。
早期,由於最大熵模型計算量大,研究人員一般采用一些類似最大熵模型的近似模型。這一近似,最大熵模型就從完美變得不完美了。於是,不少原來熱衷於此的學者又放棄了這種方法。第一個在實際信息處理應用中驗證了最大熵模型的優勢是賓夕法尼亞大學馬庫斯教授的高徒拉納帕提(Adwait Ratnaparkhi).拉納帕提成功之處在於他沒有對最大熵模型進行近似處理,而是找到了幾個最適合最大熵模型而計算量相對不太大的自然語言處理問題,比如詞性標注和句法分析。拉納帕提成功地將上下文信息、詞性(名詞、動詞和形容詞)以及主謂賓等句子成分,通過最大熵模型結合起來,做出了當時世界上最好的詞性標注系統和句法分析器。從拉納帕提的成果中,科學家又看到了最大熵模型解決復雜文字信息處理問題的希望。
在2000年前后,由於計算機速度的提升以及訓練算法的改進,很多復雜的問題,包括句法分析、語言模型和機器翻譯都可以采用最大熵模型了。最大熵模型和一些簡單組合了特征的模型相比,效果可以提升幾個百分點。
