1. 程式人生 > >最大熵模型(MaxEnt)解析

最大熵模型(MaxEnt)解析

給出了最大熵模型的一般形式(其中的f為特徵函式,後面我們還會講到): 

而文獻【5】中我們從另外一種不同的角度也得出了多元邏輯迴歸的一般形式:

可見,儘管採用的方法不同,二者最終是殊途同歸、萬法歸宗了。 所以我們說無論是多元邏輯迴歸,還是最大熵模型,又或者是Softmax,它們本質上都是統一的。本文就將從最大熵原理這個角度來推導上述最大熵模型的一般形式。

最大熵原理

首先,關於熵這個概念的一些解讀,可以參考【6】和【7】。簡單地說,假設離散隨機變數X的概率分佈是P(X),則其熵是

而且熵滿足下列不等式:

0≤H(P)≤log|X|

其中,|X|是X的取值個數,當且僅當X的分佈是均勻分佈時右邊的等號成立。也就是說,當X服從均勻分佈時,熵最大。

直觀地,最大熵原理認為要選擇的概率模型首先必須滿足已有的事實,即約束條件。在沒有更多資訊的情況下,那些不確定的部分都是“等可能的”。最大熵原理通過熵的最大化來表示等可能性。“等可能性”不容易操作,而熵則是一個可以優化的數值指標。

吳軍博士在其所著的《數學之美》一書中曾經談到:“有一次,我去AT&T實驗室作關最大熵模型的報告,隨身帶了一個骰子。我問聽眾‘每個面朝上的概率分別是多少’,所有人都說是等概率,即各種點數的概率均為1/6。這種猜測當然是對的。我問聽眾為什麼,得到的回答是一致的:對這個‘一無所知’的骰子,假定它毎一面朝上概率均等是最安全的做法。(你不應該主觀假設它像韋小寶的骰子—樣灌了鉛。)從投資的角度看,就足風險最小的做法。從資訊理論的角度講,就足保留了最大的不確定性,也就是說讓熵達到最大。 接著我又告訴聽眾,我的這個骰子被我特殊處理過,已知四點朝上的概率是1/3,在這種情況下,每個面朝上的概率是多少?這次,大部分人認為除去四點的概率是1/3,其餘的均是2/15,也就是說已知的條件(四點概率為1/3)必須滿足,而對於其餘各點的概率因為仍然無從知道,因此只好認為它們均等。注意,在猜測這兩種不同情況下的概率分佈時,大家都沒有新增任何主觀的假設,諸如四點的反面一定是三點等等。(事實上,有的骰子四點的反面不是三點而是一點。)這種基於直覺的猜測之所以準確,是因為它恰好符合了最大熵原理。” 通過上面關於骰子的例子,我們對最大熵原理應該已經有了一個基本的認識,借用文獻【8】中的話就是“model all that is known and assume nothing about that which is unknown”。約束條件

最大熵原理是統計學習理論中的一般原理,將它應用到分類任務上就會得到最大熵模型。假設分類模型是一個條件概率分佈P(Y|X),X ∈ Input ⊆ Rn表示輸入(特徵向量),Y∈ Output 表示輸出(分類標籤),Input和Output分別是輸入和輸出的集合。這個模型表示的是對於給定的輸入X,輸出為Y的概率是P(Y|X)。

給定一個訓練資料集

我們現在的目標是利用最大熵原理來選擇最好的分類模型。首先來考慮模型應該滿足的條件。給定訓練資料集,便可以據此確定聯合分佈P(X,Y)的經驗分佈,以及邊緣分佈P(X)的經驗分佈。關於經驗分佈,你可以參考【4】以瞭解更多。此處,我們有

其中,v(X

=x, Y=y)表示訓練資料集中樣本(x,y)出現的頻率(也就是計數);v(X=x)表示訓練資料集中輸入x出現的頻率(也就是計數),N是訓練資料集的大小。

舉個例子,在英漢翻譯中,take有多種解釋例如下文中存在7種:

在沒有任何限制的條件下,最大熵原理認為翻譯成任何一種解釋都是等概率的,即

P(t1|x)=P(t2|x)=...=P(t7|x)=1/7

實際中總有或多的限制條件,例如t1,t2比較常見,假設滿足

P(t1|x)+P(t2|x)=2/5

同樣根據最大熵原理,可以得出

P(t1|x)=P(t2|x)=1/5

P(t3|x)=P(t4|x)=P(t5|x)=P(t6|x)=P(t7|x)=3/25

通常可以用特徵函式f(x,y)來描述輸入x和輸出y之間的某一個事實。一般來說,特徵函式可以是任意實值函式,下面我們採用一種最簡單的二值函式來定義我們的特徵函式

它表示當x和y滿足某一事實時,函式取值為1,否則取值為0。

實際的統計模型中,我們通過引入特徵(以特徵函式的形式)提高準確率。例如take翻譯為乘坐的概率小,但是當後面跟著交通工具的名詞“bus",概率就變得非常大。於是有

同理,Ep( f )表示f(x,y)在模型上關於實際聯合分佈P(X,Y)的數學期望,類似地則有

注意到P(x,y)是未知的,而建模的目標是生成P(y|x),因此我們希望將P(x,y)表示成P(y|x) 的函式。於是,利用貝葉斯公式,有P(x, y)=P(x)P(y|x),但P(x)仍然是未知的。此時,只得利用來近似。於是,我們便可以將Ep( f )重寫成

注意,以上公式中的求和號均是對的簡寫,下同。

對於概率分佈P(y|x),我們希望特徵函式f的期望 應該與 從訓練資料集中得到的特徵期望值相一致,因此提出約束:

我們把上式作為模型學習的約束條件。假如有n個特徵函式 fi(x,y),i=1,2,...,n,那麼就相應有n個約束條件。

最大熵模型

給定訓練資料集,我們的目標是:利用最大熵原理選擇一個最好的分類模型,即對於任意給定的輸入x ∈ Input,可以以概率P(y|x)輸出y ∈ Output。要利用最大熵原理,我們還需要一個熵的定義。由於我們的目標是獲取一個條件分佈,因此要採用相應的條件熵H(Y|X),或者記作H(P),更多關於條件熵的細節可以參考【9】

至此,我們就可以給出最大熵模型的完整描述了。對於給定的訓練資料集以及特徵函式 fi(x,y),i=1,2,...,n,最大熵模型就是求解

或者按照最優化問題的習慣,可以將上述求最大值的問題等價地轉化為下面這個求最小值的問題:

其中的條件∑P(y|x)=1是為了保證P(y|x)是一個合法的條件概率分佈。

現在便得到了一個帶等式約束的最優化問題,顯然需要使用拉格朗日乘數法。這部分數學推導,我們留到下一篇文章中再詳細介紹。

我們已經得到了與最大熵模型之學習等價的帶約束的最優化問題:

注意上述公式中還隱含一個不等式約束即 P(y|x)≥0。求解這個帶約束的最優化問題,所得之解即為最大熵模型學習的解。本文就來完成這個推導。

現在這裡需要使用拉格朗日乘數法,並將帶約束的最優化之原始問題轉換為無約束的最優化之對偶問題,並通過求解對偶問題來求解原始問題。首先,引入拉格朗日乘子,並定義拉格朗日函式L(P, w):

According to [7], to find the solution to the optimization problem, we appealed to the Kuhn-Tucker theorem, which states that we can (1) first solve L(P, w) for P to get a parametric form for P* in terms of w; (2) then plug P* back in to L(P, w), this time solving for w*.

原始問題與對偶問題

最優化的原始問題是

通過交換極大和極小的位置,可以得到如下這個對偶問題

由於拉格朗日函式L(P,w)是P的凸函式,原始問題與對偶問題的解是等價的。這樣便可以通過求解對偶問題來求解原始問題。

對偶問題內層的極小問題 是關於引數w的函式,將其記為

同時將其解記為

接下來,根據費馬定理,求L(P,w)對P(y|x)的偏導數

注意上述推導中運用了下面這個事實

進一步地,令

又因為,於是有

進而有

又因為

所以可得

將上面的式子帶回前面P(y|x)的表示式,則得到

其中,

Zw(x)稱為規範化因子; f i(x,y)是特徵函式;wi是特徵的權值。由上述兩式所表示的模型Pw=Pw(y|x)就是最大熵模型。這裡,w是最大熵模型中的引數向量。注意到,我們之前曾經提過,特徵函式可以是任意實值函式,如果fi(x,y)=xi,那麼這其實也就是【5】中所說的多元邏輯迴歸模型,即

此亦是萬法歸宗的第一層境界。關於上面這個式子的一個簡單例子,你還可參考文獻【6】。

極大似然估計

下面,需要求解對偶問題中外部的極大化問題

將其解記為w*,即

這就是說,可以應用最優化演算法求對偶函式的極大化,得到w*,用來表示。這裡,是學習到的最優模型(最大熵模型)。於是,最大熵模型的學習演算法現在就歸結為對偶函式的極大化問題上來。

前面我們已經給出了的表示式:

由於,其中

於是將Pw(y|x)帶入,可得

注意其中倒數第4行至倒數第3行運用了下面這個推導:

下面我們來證明對偶函式的極大化等價於最大熵模型的極大似然估計。已知訓練資料的經驗概率分佈,條件概率分佈P(Y|X)的對數似然函式表示為

當條件概率分佈P(y|x)是最大熵模型時時,對數似然函式為

對比之後,不難發現

既然對偶函式等價於對數似然函式,於是也就證明了最大熵模型學習中的對偶函式極大化等價於最大熵模型的極大似然估計這一事實。此亦是萬法歸宗的第二層境界。由此,最大熵模型的學習問題就轉換為具體求解“對數似然函式極大化的問題”或者“對偶函式極大化的問題”。