最大熵模型是指在滿足約束條件的模型集合中選取熵最大的模型,即不確定性最大的模型。
最大熵原理
最大熵思想:當你要猜一個概率分布時,如果你對這個分布一無所知,那就猜熵最大的均勻分布,如果你對這個分布知道一些情況,那么,就猜滿足這些情況的熵最大的分布。
算法推導
按照最大熵原理,我們應該優先保證模型滿足已知的所有約束。那么如何得到這些約束呢?
思路是:從訓練數據\(T\)中抽取若干特征,然后要求這些特征在\(T\)上關於經驗分布的期望與它們在模型中關於\(p(x,y)\)的數學期望相等,這樣,一個特征就對應一個約束。
假設訓練集為\(T={(x1,y1),(x2,y2),…,(xn,yn)}\)。則聯合分布\(P(x,y)\)的經驗分布和邊緣分布\(P(x)\)的經驗分布為:
\[\tilde{P}(x,y)=\tilde{P}(X=x,Y=y)=\frac{count(x,y)}{N} \]
\[\tilde{P}(x)=\tilde{P}(X=x)=\frac{count(x)}{N} \]
我們定義特征函數
\[f(x,y)= \begin{cases} 1& \text{x,y滿足某一事實}\\ 0& \text{否則} \end{cases}\]
設\(E_{\tilde{P}}(f)\):表示特征函數\(f\)在訓練數據\(T\)上關於\(\tilde{P}(x,y)\)的數學期望:
\[E_{\tilde{P}}(f)=\sum_{x,y}{\tilde{P}(x,y)f(x,y)} \]
設\(E_p(f)\):表示特征函數\(f\)在模型上關於\(P(x,y)\)的數學期望
\[E_{{P}}(f)=\sum_{x,y}{P(x,y)f(x,y)} =\sum_{x,y}{P(x)P(y|x)f(x,y)} \]
由於\(P(x)\)是未知的,我們使用\(\tilde{P}(x)\)來近似表示。於是有
\[E_{{P}}(f)=\sum_{x,y}{\tilde{P}(x)P(y|x)f(x,y)} \]
最終我們需要計算的條件概率為:\(P(Y|X)\)。
我們的條件熵為:
\[H(P) = -\sum_{x,y}P(x)P(y|x)\log{P(y|x)} \]
同樣,我們需要將\(P(x)\)的值進行近似處理:
\[H(P) = -\sum_{x,y}\tilde{P}(x)P(y|x)\log{P(y|x)} \]
另外,對於任意輸入樣例,它總是屬於某一個輸出類別,因而
\[\sum_{y}P(y|x)=1 \]
因此,現在我們將上述問題轉變成了一個有條件的最優化問題:
\[\begin{aligned} \max\ \ &{H(P)= -\sum_{x,y}\tilde{P}(x)P(y|x)\log{P(y|x)}} \\ s.t.\ \ &E_{P}(f)=E_{\tilde{P}}(f)\\ &\sum_{y}P(y|x)=1 \end{aligned} \]
即,
\[\begin{aligned} \min\ \ &{-H(P)= \sum_{x,y}\tilde{P}(x)P(y|x)\log{P(y|x)}} \\ s.t.\ \ &E_{P}(f)=E_{\tilde{P}}(f)\\ &\sum_{y}P(y|x)=1 \end{aligned} \]
這里,將約束最小化的原始問題轉換為無約束最優化的對偶問題,通過對偶問題來求解原始問題。
首先,引入拉格朗日乘子\(w_0,w_1,…,w_n\),定義拉格朗日函數\(L(P,w)\),
\[\begin{aligned} L(P,w)=&-H(P)+w_0\left(1-\sum_y{P(y|x)}\right)+\sum_{i=1}^n{w_i(E_{\tilde{P}}(f_i)-E_{P}(f_i))}\\ =&\sum_{x,y}\tilde{P}(x)P(y|x)\log{P(y|x)}+w_0\left(1-\sum_y{P(y|x)}\right)+\sum_{i=1}^n{w_i(E_{\tilde{P}}(f_i)-E_{P}(f_i))} \end{aligned} \]
最優化原始問題的對偶問題是:
\[\max_w{\min_P{L(P,w)}} \]
由於\(L(P,w)\)是\(P\)的凸函數,原始問題的解與對偶問題的解是等價的。
將\(L(P,w)\)對\(P(y│x)\)求偏導數,得
\[\begin{aligned} \frac{\partial L(P,w)}{\partial P(y│x)}=&\sum_{x,y}{\tilde{P}(x)(\log{P(y|x)}}+1)-\sum_y{w_0}-\sum_{x,y}(\tilde{P}(x)\sum_{i=1}^nw_if_i(x,y))\\ =&\sum_{x,y}\tilde{P}(x)\left(\log{P(y|x)}+1-w_0-\sum_i^nw_if_i(x,y)\right) \end{aligned} \]
令偏導數為0,解得
\[\begin{aligned} P(y|x)=&\exp({\sum_{i=1}^nw_if_i(x,y)+w_0-1})\\ =&\exp({\sum_{i=1}^nw_if_i(x,y)})\exp({w_0-1}) \end{aligned} \]
由於
\[\sum_{y}P(y|x)=1 \]
有,
\[\sum_{y}P(y|x)=\sum_{y}\exp({\sum_{i=1}^nw_if_i(x,y)})\exp({w_0-1})=1 \]
得,
\[\exp({w_0-1})=\frac{1}{\sum_{y}\exp({\sum_{i=1}^nw_if_i(x,y)})} \]
令規范化因子\(Z_w (x)\)為
\[Z_w(x)=\sum_{y}\exp({\sum_{i=1}^nw_if_i(x,y)}) \]
此時得到對偶問題的極小解為:
\[P_w(y|x)=\frac{1}{Z_w(x)}e^{\sum_{i=1}^nw_if_i(x,y)} \]
這就是我們所需要的最大熵模型下的概率估計。
我們再回顧下推導流程,
- 首先定義我們的約束條件:1、定義特征函數,約束為其在數據集上關於經驗分布的期望與它們在模型中的數學期望相等;2、關於x的條件概率總和為1。
- 確定我們的目標:最大化在條件概率分布\(P(Y|X)\)上的條件熵,在約束上構建構建我們的最優化問題。
- 引進拉格朗日乘子,定義拉格朗日函數,通過求解對偶問題來求解原始問題。
實際上,對偶問題的極大化等價於最大熵模型的極大似然估計。
至此,我們已經得到了最大熵模型的目標估計,而模型中的最優參數則是對偶問題最大時的參數。
具體學習算法有改進的迭代尺度法(IIS)與擬牛頓法。
最大熵與邏輯回歸
邏輯回歸是最大熵對應類別為兩類時的特殊情況,也就是當邏輯回歸類別擴展到多類別時,就是最大熵。
其聯系在於:
最大熵與邏輯回歸均屬於對數線性模型。它們的學習一般采用極大似然估計,或正則化的極大似然估計,可以形式化為無約束最優化問題。求解該優化問題的算法有改進的迭代尺度法、梯度下降法、擬牛頓法。
指數簇分布的最大熵等價於其指數形式的最大似然界;二項式的最大熵解等價於二項式指數形式(sigmoid)的最大似然,多項式分布的最大熵等價於多項式分布指數形式(softmax)的最大似然。
因此為什么用sigmoid函數,那是因為指數簇分布最大熵的特性的必然性。
另外,邏輯回歸模型與最大熵模型都屬於對數線性模型。
優缺點
-
最大熵模型的優點有:
- 最大熵統計模型獲得的是所有滿足約束條件的模型中信息熵極大的模型,作為經典的分類模型時准確率較高。
- 可以靈活地設置約束條件,通過約束條件的多少可以調節模型對未知數據的適應度和對已知數據的擬合程度。
-
最大熵模型的缺點有:
- 由於約束函數數量和樣本數目有關系,導致迭代過程計算量巨大,實際應用比較難。