Overview
統計建模方法是用來modeling隨機過程行為的。在構造模型時,通常供我們使用的是隨機過程的采樣,也就是訓練數據。這些樣本所具有的知識(較少),事實上,不能完整地反映整個隨機過程的狀態。建模的目的,就是將這些不完整的知識轉化成簡潔但准確的模型。我們可以用這個模型去預測隨機過程未來的行為。
在統計建模這個領域,指數模型被證明是非常好用的。因此,自世紀之交以來,它成為每個統計物理學家們手中不可或缺的工具。最大熵模型是百花齊放的指數模型的一種,它表示的這類分布有着有趣的數學和哲學性質。盡管最大熵的概念可以追溯到遠古時代,但直到近年來計算機速度提升之后,才允許我們將最大熵模型應用到統計評估和模式識別的諸多現實問題中(最大熵才在現實問題上大展身手)。
下面幾頁討論基於最大熵的統計建模方法,尤其是它在自然語言處理上的應用。我們提供大量的結果和benchmarks, 以及一些實用的用來訓練最大熵模型的算法。最后我們介紹下條件最大熵模型(Conditional maxent model)和馬爾科夫隨機場(Markov random fields) (在計算機視覺領域廣泛使用的模型)之間的聯系。
我們下面要討論的算法能從一組數據中自動抽取出數據之間的內在關系(規則),並組合這些規則生成准確而緊湊的數據模型。For instance, starting from a corpus of English text with no linguistic knowledge whatsoever, the algorithms can automatically induce a set of rules for determining the appropriate meaning of a word in context. Since this inductive learning procedure is computationally taxing, we are also obliged to provide a set of heuristics to ease the computational burden.
盡管本篇討論的主題是NLP,但我保證沒有內容是只適應NLP的,最大熵模型已經成功應用到天體物理學和醫學領域。
Motivating Example
我們通過一個簡單的例子來介紹最大熵概念。假設我們模擬一個翻譯專家的決策過程,關於英文單詞in到法語單詞的翻譯。我們的翻譯決策模型p給每一個單詞或短語分配一個估計值p(f),即專家選擇f作為翻譯的概率。為了幫助我們開發模型p,我們收集大量的專家翻譯的樣本。我們的目標有兩個,一是從樣本中抽取一組決策過程的事實(規則),二是基於這些事實構建這一翻譯過程的模型。
我們能從樣本中得到的一個明顯的線索是允許的翻譯候選列表。例如,我們可能發現翻譯專家總是選擇下面這5個法語詞匯:{dans, en, à, au cours de, pendant}。一旦有了這些信息,我們可以給模型p施加第一個約束條件:
p(dans)+p(en)+ p(à)+p(au cours de)+p(pendant) = 1
這個等式代表了這一翻譯過程的第一個統計信息,我們現在可以進行尋找滿足這一條件的模型了。顯然,有無數滿足這個條件的模型可供選擇。其中一個模型是p(dans)=1,換句話說這個模型總是預測dans。另外一個滿足這一約束的模型是p(pendant)=1/2 and p(à)=1/2。 這兩個模型都有違常理:只知道翻譯專家總是選擇這5個法語詞匯,我們哪知道哪個概率分布是對的。兩個模型每個都在沒有經驗支持的情況下,做了大膽的假設。最符合直覺的模型是:
p(dans) = 1/5
p(en) = 1/5
p(à) = 1/5
p(au cours de) = 1/5
p(pendant) = 1/5
這個模型將概率均勻分配給5個可能的詞匯,是與我們已有知識最一致的模型。我們可能希望從樣本中收集更多的關於翻譯決策的線索。假設我們發現到有30%時間in被翻譯成dans 或者en. 我們可以運用這些知識更新我們的模型,讓其滿足兩個約束條件:
p(dans) + p(en) = 3/10
p(dans)+p(en)+ p(à)+p(au cours de)+p(pendant) = 1
同樣,還是有很多概率分布滿足這兩個約束。在沒有其他知識的情況下,最合理的模型p是最均勻的模型,也就是在滿足約束的條件下,將概率盡可能均勻的分配。
p(dans) = 3/20
p(en) = 3/20
p(à) = 7/30
p(au cours de) = 7/30
p(pendant) = 7/30
假設我們又一次檢查數據,這次發現了另外一個有趣的事實:有一般的情況,專家會選擇翻譯成dans 或 à.我們可以將這一信息列為第三個約束:
p(dans) + p(en) = 3/10
p(dans)+p(en)+ p(à)+p(au cours de)+p(pendant) = 1
p(dans)+ p(à)=1/2
我們可以再一次尋找滿足這些約束的最均勻分配的模型p,但這一次的結果沒有那么明顯。由於我們增加了問題的復雜度,我們碰到了兩個問題:首先,"uniform(均勻)"究竟是什么意思?我們如何度量一個模型的均勻度(uniformity)?第二,有了這些問題答案之后,我們如何找到滿足一組約束且最均勻的模型?就像前面我們看到的模型。
最大熵的方法回答了這兩個問題。直觀上講,很簡單,即:對已知的知識建模,對未知的不過任何假設(model all that is known and assume nothing about that which is unknown)。換句話說,在給定一組事實(features+output)的條件下,選擇符合所有事實,且在其他方面近可能均勻的模型,這恰恰是我們在上面例子每一步選擇模型p所采取的方法。
Maxent Modeling
我們考慮一個隨機過程,它產生一個輸出y,y屬於一個有窮集合。對於剛才討論的翻譯的例子,該過程輸出單詞in的翻譯,輸出值y可以是集合{dans, en, à, au cours de, pendant}中任何一個單詞。在輸出y時,該過程可能會被上下文信息x影響,x屬於有窮的集合
。在目前的例子中,這信息可能包括英文句子中in周圍的單詞。
我們的任務是構造一個統計模型,該模型能夠准確表示隨機過程的行為。該模型任務是預測在給定上下文x的情況下,輸出y的概率:p(y|x).
Training Data
為了研究這一過程,我們觀察一段時間隨機過程的行為,收集大量的樣本:
。在我們討論的例子中,每一個樣本由包含in周圍單詞的詞匯x,和in的翻譯y組成。現在,我們可以假設這些訓練樣本已經由一個專家搞定了,我們提供大量包含in的隨機的短語要求她選擇一個合適的翻譯。
我們可以通過它的經驗分布來總結訓練樣本的特性:
通常,對於一個特定的pair (x, y),它要么不出現在樣本中,要么最多出現幾次。
Features and constraints
我們的目標是構造一個產生訓練樣本這一隨機過程的統計模型。組成這個模型的模塊將是一組訓練樣本的統計值。在目前的例子中,我們已經采用了幾個統計數據:(1)in被翻譯成dans 或者en的頻率是3/10;(2) in被翻譯成dans 或 à的概率是1/2 ;…等。這些統計數據是上下文獨立的,但我們也可以考慮依賴上下文信息x的統計數據。例如,我們可能注意到,在訓練樣本中,如果 April 是一個出現在in之后,那么in翻譯成en的頻率有9/10.
為了表示這個事件(event),即當Aprial出現在in之后,in被翻譯成en,我們引入了指示函數:
特征f 關於經驗分布的期望值,正是我們感興趣的統計數據。我們將這個期望值表示為:
(1)
我們可以將任何樣本的統計表示成一個適當的二值指示函數的期望值,我們把這個函數叫做特征函數(feature function)或簡稱特征(feature)。
當我們發現一個統計量,我們覺得有用時,我們讓模型去符合它(擬合),來利用這一重要性。擬合過程通過約束模型p分配給相應特征函數的期望值來實現。特征f關於模型p(y|x)的期望值是:
(2)
這里,是x在訓練樣本中的經驗分布。我們約束這一期望值和訓練樣本中f的期望值相同。那就要求:
(3)
組合(1),(2) 和(3),我們得到等式:
我們稱(3)為約束等式(constraint equation)或者簡稱約束(constraint)。我們只關注那么滿足(3)的模型,不再考慮那些和訓練樣本中特征f頻率不一致的模型。
目前總結來看,我們現在有辦法表示樣本數據中內在的統計現象(叫做),也有辦法使我們的模型繼承這一現象(叫做
)。
最后,仍我關於特征和約束再羅嗦兩句:單詞 ``feature'' and ``constraint''在討論最大熵時經常被混用,我們希望讀者注意區分這兩者的概念:特征(feature)是(x,y)的二值函數;約束是一個等式:即模型的特征函數期望值等於訓練樣本中特征函數的期望值。
The maxent prinple
假設給我們n個特征函數fi,它們的期望值決定了在建模過程中重要的統計數據。我們想要我們的模型符合這些統計,就是說,我們想要模型p屬於的子集
。
圖1是這一限制的幾何解釋。這里,P是三點上所有可能的概率分布空間。如果我們不施加任何約束(圖a),所有概率模型都是允許的。施加一個線性約束C1后,模型被限制在C1定義的區域,如圖b示。如果兩個約束是可滿足的, 施加第二個線性約束后可以准確確定p,如圖c所示。另一種情形是,第二個線性約束與第一個不一致,例如,第一個約束可能需要第一個點的概率是1/3,第二個約束需要第三個點的概率是3/4,圖d所示。在目前的設置中,線性約束是從訓練數據集中抽取的,不可能手工構造,因此不可能不一致。進一步來說,在我們應用中的線性約束甚至不會接近唯一確定的p,就象圖c那樣。相反,集合中的模型是無窮的。
屬於集合C的所有模型p中,最大熵的理念決定我們選擇最均勻的分布。但現在,我們面臨一個前面遺留的問題:什么是"uniform(均勻)"?
數學上,條件分布p(y|x)的均勻度就是條件熵定義:
熵的下界是0, 這時模型沒有任何不確定性;熵的上界是log|Y|,即在所有可能(|Y|個)的y上均勻分布。有了這個定義,我們准備提出最大熵原則。
當從允許的概率分布集合C中選擇一個模型時,選擇模型,使得熵H(p)最大。
(6)
可以證明是well-defined的,就是說,在任何的約束集合C中,總是存在唯一的模型
取得最大熵。
Exponential form
最大熵原理呈現給我們的是一個約束優化問題:find the which maximizes H(p)。簡單的情況,我們可以分析求出問題的解。如翻譯模型中我們施加前兩個約束時,容易求得p的分布。不幸的是,通常最大熵模型的解無法明顯得出,我們需要一個相對間接的方法。
為了解決這個問題,我們采用約束優化理論中Lagrange multipliers的方法。這里僅概述相關步驟,請參考進一步閱讀以更深入了解約束優化理論如何應用到最大熵模型中的。
我們的約束優化問題是:
我們將這個稱為原始問題(primal)。簡單的講,我們目標是在滿足以下約束的情況下,最大化H(p)。
-
for all x,y.
-
. This and the previous condition guarantee that p is a conditional probability distribution.
-
In other words,
, and so satisfies the active constraints C .
為了解決這個優化問題,引入Lagrangian 乘子。
實值參數和
對應施加在解上的n+1個約束。
下面的策略可以求出p的最優解(),但我們不打算證明它。
首先,將和
看成常量,尋找p最大化公式(8)。這會產生以
和
為參數的表示式p,(參數沒有解決)。接着,將該表達式代回(8)中,這次求
和
的最優解(
and
, respectively)。
按照這一方式,我們保證和
不變,計算在所有
空間下,計算
的無約束的最大值。
令該式等於0, 求解 p(y|x):
可以看出公式(10)的第二個因子對應第二個約束:
將上式帶入公式(10)得到:
將公式(11)帶入(10),我們得到:
因此,
Z(x)是正則化因子。
現在我們要求解最優值,
。顯然,我們已經知道了
,還不知道
。
為此,我們介紹新的符號,定義對偶函數:
對偶優化問題是:
因為p*和是固定的,公式(15)的右邊只有自由變量
。
參數值等於的p*就是一開始約束優化問題的最優解。這辦法不明顯看出為什么,但這的確是Lagrange multipliers理論的基本原理,通常叫做Kuhn-Tucker theorem(KTT)。詳細的解釋已經超出本文討論的范圍。我們簡單地陳述最后結論:
滿足約束C最大熵模型具有(13)參數化形式,最優參數可以通過最小化對偶函數
求得。
補充說明:
究竟是什么樣呢? (記住我們要求
的最小值, 這是Lagrange multipliers理論的基本原理)
Maximum likelihood
最大似然率:找出與樣本的分布最接近的概率分布模型。
比如:10次拋硬幣的結果是:
畫畫字畫畫畫字字畫畫
假設p是每次拋硬幣結果為"畫"的概率。
得到這樣試驗結果的概率是:
P = pp(1-p)ppp(1-p)(1-p)pp=p7(1-p)3
最大化似然率的方法就是:
最優解是:p=0.7
似然率的一般定義為:
p(x)是模型估計的概率分布,是結果樣本的概率分布。
在我們的問題里,要估計的是p(y|x),最大似然率為:
(15)
因此,有:
這里的p具有公式(13)的形式,我們的結果進一步可以表述為:
最大熵模型是具有公式(13)形式,且最大化樣本似然率的模型。最大熵模型與最大似然率模型一致。
Computing the Parameters
要算λ,解析解肯定是行不通的。對於最大熵模型對應的最優化問題,GIS,lbfgs,sgd等等最優化算法都能解。相比之下,GIS大概是最好實現的。這里只介紹GIS算法。
具體步驟如下:
(1)set 等於任意值, 比如等於0.
(2) 重復直到收斂:
這里,(t)是迭代下標,常數C定義為:
, 實踐中C是訓練樣本里最大的特征個數。盡管C再大些也沒關系,但是它決定了收斂速度,還是取最小的好。
實際上,GIS算法用第N次迭代的模型來估算每個特征在訓練數據中的分布。如果超過了實際的,就把相應參數變小。否則,將它們變大。當訓練樣本的特征分布和模型的特征分布相同時,就求得了最優參數。