機器學習模型之最大熵模型

1、最大熵模型

最大熵模型描述的是這麼一種情況,即在有約束條件的情況下,如何得到最好的模型。我們先來考慮如果沒有約束的條件下,如何獲得最好的模型,舉個栗子,比如一個骰子,有6個面,轉一次,求每個面的概率,根據經驗,每個面的概率是1/6,這其實就是我們讓整個系統熵最大。

那麼什麼是在有約束條件下概率最大呢,比如這時告訴你其中點數爲4的概率爲1/3,那麼現在這種情況下,每個面的概率是多少呢?\(p(點數=4) = 1/ 3\),\(p(點數=1) = p(點數=2) = p(點數=3) = p(點數=5) = p(點數=6) = (2/3) / 5\),這種就是在約束條件下熵最大。本文介紹將最大熵模型如何用於分類任務。

給定一個訓練數據集

\[ {(x_{1},y_{1}), (x_{2},y_{2}),(x_{3},y_{3}) .........(x_{n},y_{n})} \]

我們的目標是得到條件概率\(p(y|x)\)即我們對於給定未知的一個變量\(X\),我們會得到在每個標籤上最大的概率值,我們取最大的概率值所對應的標籤作爲最終的標籤。計算條件概率\(p(y|x)\)的方法有很多,其中,樸素貝葉斯是一種方法,當然,我們也可以利用最大熵模型來得到這個概率值。首先,根據熵最大的模型是最好的模型,我們這裏定義條件熵。即

\[ H(p(y|x)) = - \sum\limits_{x,y} \tilde{p}(x) p(y|x) \log p(y|x) \tag{1} \]

如果在沒有約束的條件下,我們直接求式子(1)即可,但是這樣算下來所有的條件概率是均等的,沒有意義,所以我們想有哪些約束條件呢?首先,我們肯定希望得到的模型和能夠和數據集的整體分佈是一樣的。我們先定義一個特徵函數

\[ f(x,y) = \left \{ \begin{array}{**lr**} 1 , x,y滿足某些條件 & \\ 0 否則 & \end{array} \right. \]

這裏滿足某些條件聽起來不知道是在幹什麼,當我看來GIS用於文本分類的代碼後,才發現,其實如果一條數據中,如果\((x_{i},y_{j})\)出現,那麼f(x,y)就爲1,不出現,則爲0。我們的約束條件是希望得到的模型可以很好的表現數據集,那用什麼表示呢,我們用特徵函數關於經驗分佈\(\tilde{p}(X|Y)\)的期望值和特徵函數關於模型\(P(Y|X)\)的期望來表示,先給出特徵函數關於經驗分佈\(\tilde{p}(X|Y)\)的期望值

\[ E_{\tilde{p}}(f) = \sum\limits_{x,y} \tilde{P}(y|x) f(x,y) \tag{2} \]

這個經驗分佈的數學期望是一個定值,我們可以根據數據集來求出,對於文本分類來說,$E_{\tilde{p}} (f_{i}) = $ x,y出現的個數/文檔總數。接着我們給出特徵函數關於模型的的期望值

\[ E_{p}(f) = \sum\limits_{x,y} P(y|x) f(x,y) \\ = \sum\limits_{x,y} p(x,y)f(x,y) \\ = \sum\limits_{x,y} p(x)p(y|x) f(x,y) \\ = \sum\limits_{x,y} \tilde{p}(x)p(y|x) f(x,y) \tag{3} \]

由於\(p(x),p(x,y)\)不好求,所以用\(p(x,y) = \tilde{p}(x) p(y|x)\)來代替。那麼,我們的期望是將兩者劃等號,即

\[ E_{\tilde{p}}(f) = E_{p}(f) \tag{4} \]

那麼根據上述公式,我們可以得到最大熵模型的公式和其約束條件

\[ \max \limits_{P \in C } H(p(y|x)) = - \sum\limits_{x,y} \tilde{p}(x) p(y|x) \log p(y|x) \\ s.t E_{\tilde{p}}(f) = E_{p}(f) i=1,2,3....n \\ \sum\limits_{y} p(y|x) = 1 \]

至此我們得到最大熵模型的公式,接下來,我們就求解p(y|x)

2、最大熵模型推導

我們將公式進行轉換,將最大值改爲求最小值,這樣我們就能引入拉格朗日乘子

\[ \min \limits_{P \in C } - H(p(y|x)) = \sum\limits_{x,y} \tilde{p}(x) p(y|x) \log p(y|x) \\ s.t E_{\tilde{p}}(f) = E_{p}(f) i=1,2,3....n \\ \sum\limits_{y} p(y|x) = 1 \]

引入拉格朗日乘子得到

\[ L(p,w) = \sum\limits_{x,y} \tilde{p}(x) p(y|x) \log p(y|x) + w_{0}(\sum\limits_{y} p(y|x) - 1) + \sum\limits_{i=1}{n} w_{i}(E_{\tilde{p}}(f) - E_{p}(f)) \tag{5} \]

最優化的原始問題是

\[ \min \limits_{P \in C } \max \limits_{w} L(p,w) \tag{6} \]

對偶問題是

\[ \max \limits_{w} \min \limits_{P \in C } L(p,w) \tag{7} \]

首先對p(y|x)進行求導

\[ \frac {\partial L(p)}{p(y|x)} = \sum\limits_{x,y} \tilde{p}(x) (\log p(y|x) + 1) + \sum\limits_{y} w_{0} - \sum\limits_{i=1}{n} w_{i} \sum \limits_{x,y} \tilde{p}(x) f_{i}(x,y) \]

由於\(\sum\limits_{x} \tilde{p}(x) = 1\),所以原式等於

\[ \frac {\partial L(p)}{p(y|x)} = \sum\limits_{x,y} \tilde{p}(x) (\log p(y|x) + 1) + \sum\limits_{x} \tilde{p}(x) \sum\limits_{y} w_{0} - \sum \limits_{x,y} \tilde{p}(x) \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y) \\ = \sum\limits_{x,y} \tilde{p}(x) ( \log p(y|x) + 1 + w_{0} - \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y) ) \tag{8} \]

由於\(\sum\limits_{x,y} \tilde{p}(x) > 0\)那麼我們令後面部分爲0

\[ \log p(y|x) + 1 + w_{0} - \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y) = 0 \\ \log p(y|x) = \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y) - w_{0} - 1 \\ p(y|x) = \frac {\exp \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y)} {\exp (w_{0} + 1)} \\ 由於 \sum\limits_{y} p(y|x) = 1 \\ 所以 \exp (w_{0} + 1) = \sum\limits_{y} \exp \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y) \\ 帶入得 \\ p(y|x) = \frac{1} {Z_{w}(x)} * \exp \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y) \\ Z_{w}(x) = \sum\limits_{y} \exp \sum\limits_{i=1}^{n} w_{i} f_{i}(x,y) \]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章