熵的概念在統計學習與機器學習中真是很重要,熵的介紹在這裏:信息熵 Information Theory 。今天的主題是最大熵模型(Maximum Entropy Model,如下簡稱MaxEnt),MaxEnt 是機率模型學習中一個準則,其思想爲:在學習機率模型時,全部可能的模型中熵最大的模型是最好的模型;若機率模型須要知足一些約束,則最大熵原理就是在知足已知約束的條件集合中選擇熵最大模型。最大熵原理指出,對一個隨機事件的機率分佈進行預測時,預測應當知足所有已知的約束,而對未知的狀況不要作任何主觀假設。在這種狀況下,機率分佈最均勻,預測的風險最小,所以獲得的機率分佈的熵是最大。html
直觀理解 MaxEnt 算法
在求解機率模型時,當沒有任何約束條件則只需找到熵最大的模型,好比預測一個骰子的點數,每一個面爲 $\frac{1}{6}$, 是, 當模型有一些約束條件以後,首先要知足這些約束條件, 而後在知足約束的集合中尋找熵最大的模型,該模型對未知的狀況不作任何假設,未知狀況的分佈是最均勻的。舉例來講對於隨機變量 $X$ ,其可能的取值爲 $\left \{ A,B,C\right\}$ ,沒有任何約束的狀況下下,各個值等機率獲得的 MaxEnt 模型爲:app
\[P(A) = P(B) = P(C) = \frac{1}{3}\]dom
當給定一個約束 $P(A)= \frac{1}{2}$ , 知足該約束條件下的 MaxEnt 模型是:機器學習
\[P(A) = \frac{1}{2}\]ide
\[P(B) = P(C) = \frac{1}{4}\]函數
若是用歐式空間中的 simplex 來表示隨機變量 $X$ 的話,則 simplex 中三個頂點分別表明隨機變量 $X$ 的三個取值 A, B, C , 這裏定義 simplex 中任意一點 $p$ 到三條邊的距離之和(恆等於三角形的高)爲 1,點到其所對的邊爲該取值的機率,好比任給一點 $p$ ,則$P(A)$ 等於 $p$ 到 邊 BC 的距離,若是給定以下機率:post
\[P(A) = 1 ,P(B) =P(C) = 0\]學習
\[P(A) = P(B) =P(C) = \frac{1}{3}\]優化
分別用下圖表示以上兩種狀況:
明白了 simplex 的定義以後,將其與機率模型聯繫起來,在 simplex 中,不加任何約束,整個機率空間的取值能夠是 simplex 中的任意一點,只需找到知足最大熵條件的的便可;當引入一個約束條件 $C_1$ 後,以下圖中 (b),模型被限制在 $C_1$ 表示的直線上,則應在知足約束 $C_1$ 的條件下來找到熵最大的模型;當繼續引入條件 $C_2$ 後,如圖(c),模型被限制在一點上,即此時有惟一的解;當 $C_1$ 與 $C_2$ 不一致時,如圖(d),此時模型沒法知足約束,即無解。在 MaxEnt 模型中,因爲約束從訓練數據中取得,因此不會出現不一致。即不會出現(d) 的狀況。
接下來以統計建模的形式來描述 MaxEnt 模型,給定訓練數據 $\left \{ (x_i,y_i)\right\}_{i=1}^N$ ,如今要經過Maximum Entrop 來創建一個機率判別模型,該模型的任務是對於給定的 $X = x$ 以條件機率分佈 $P(Y|X = x )$ 預測 $Y$ 的取值。根據訓練語料能得出 $(X,Y)$ 的經驗分佈, 得出部分 $(X,Y)$ 的機率值,或某些機率須要知足的條件,即問題變成求部分信息下的最大熵或知足必定約束的最優解,約束條件是靠特徵函數來引入的,首先先回憶一下函數指望的概念
對於隨機變量 $X = x_i,i = 1,2,… $,則能夠獲得:
隨機變量指望: 對於隨機變量 $X$ ,其數學指望的形式爲 $ E(X) = \sum_ix_ip_i$
隨機變量函數指望:若 $Y = f(X)$ , 則關於 $X$ 的函數 $Y$ 的指望: $E(Y) = \sum_if(x_i)p_i$.
特徵函數
特徵函數 $f(x,y)$ 描述 $x$ 與 $y$ 之間的某一事實,其定義以下:
\[ f(x,y) = \left \{ \begin{aligned}
1, & \ 當 \ x、y \ 知足某一事實.\\
0, & \ 不知足該事實.\\
\end{aligned}\right .\]
特徵函數 $f(x,y)$ 是一個二值函數, 當 $x$ 與 $y$ 知足事實時取值爲 1 ,不然取值爲 0 。好比對於以下數據集:
數據集中,第一列爲 Y ,右邊爲 X ,能夠爲該數據集寫出一些特徵函數,數據集中得特徵函數形式以下:
\[ f(x,y) = \left \{ \begin{aligned}
1, & \ if \ x= Cloudy \ and \ y=Outdoor.\\
0, & \ else.
\end{aligned}\right.\]
爲每一個 <feature,label> 對 都作一個如上的特徵函數,用來描述數據集數學化。
約束條件
接下來看經驗分佈,如今把訓練數據當作由隨機變量 $(X,Y)$ 產生,則能夠根據訓練數據肯定聯合分佈的經驗分佈 $\widetilde{P}(X,Y)$ 與邊緣分佈的經驗分佈 $\widetilde{P}(X)$ :
\begin{aligned}
\widetilde{P}(X = x,Y = y) &= \frac{count(X=x,Y= y)}{N}\\
\widetilde{P}(X = x) &= \frac{count(X=x)}{N}
\end{aligned}
用 $E _{\widetilde{P}}(f)$ 表示特徵函數 $f(x,y)$ 關於經驗分佈 $\widetilde{P}(X ,Y )$ 的指望,可得:
\[E _{\widetilde{P}}(f) = \sum_{x,y}\widetilde{P}(x ,y)f(x,y) = \frac{1}{N} \sum_{x,y}f(x,y) \]
$\widetilde{P}(x ,y)$ 前面已經獲得了,數數 $f(x,y)$ 的次數就能夠了,因爲特徵函數是對創建機率模型有益的特徵,因此應該讓 MaxEnt 模型來知足這一約束,因此模型 $P(Y|X)$ 關於函數 $f$ 的指望應該等於經驗分佈關於 $f$ 的指望,模型 $P(Y|X)$ 關於 $f$ 的指望爲:
\[E_P(f) =\sum_{x,y}P(x,y)f(x,y) \approx \sum_{x,y}\widetilde{P}(x)P(y|x)f(x,y)\]
經驗分佈與特徵函數結合便能表明機率模型須要知足的約束,只需使得兩個指望項相等, 即 $E_P(f) = E _{\widetilde{P}}(f)$ :
\[\sum_{x,y}\widetilde{P}(x)p(y|x)f(x,y) = \sum_{x,y}\widetilde{P}(x ,y)f(x,y)\]
上式便爲 MaxEnt 中須要知足的約束,給定 $n$ 個特徵函數 $f_i(x,y)$ ,則有 $n$ 個約束條件,用 $C$ 表示知足約束的模型集合:
\[C = \left\{ P \ | \ E_P(f_i) = E _{\widetilde{P}}(f_i) ,I = 1,2,…,n \right \}\]
從知足約束的模型集合 $C$ 中找到使得 $P(Y|X)$ 的熵最大的即爲 MaxEnt 模型了。
最大熵模型
關於條件分佈 $P(Y|X)$ 的熵爲:
\[H(P) =–\sum_{x,y}P(y,x)logP(y|x)= –\sum_{x,y}\widetilde{P}(x)P(y|x)logP(y|x)\]
首先知足約束條件而後使得該熵最大便可,MaxEnt 模型 $P^*$ 爲:
\[ P^* = arg\max_{P \in C} H(P) \ \ 或 \ \ P^* = arg\min_{P \in C} -H(P) \]
綜上給出形式化的最大熵模型:
給定數據集 $\left \{ (x_i,y_i)\right\}_{i=1}^N$,特徵函數 $f_i(x,y),i= 1,2…,n$ ,根據經驗分佈獲得知足約束集的模型集合 $C$ :
\begin{aligned}
& \min_{P \in C} \ \ \sum_{x,y} \widetilde{P}(x)P(y|x)logP(y|x) \\
& \ s.t. \ \ \ E_p(f_i) = E _{\widetilde{P}}(f_i) \\
& \ \ \ \ \ \ \ \ \ \sum_yP(y|x) = 1
\end{aligned}
MaxEnt 模型的求解
MaxEnt 模型最後被形式化爲帶有約束條件的最優化問題,能夠經過拉格朗日乘子法將其轉爲無約束優化的問題,引入拉格朗日乘子:
$w_0,w_1,…,w_n$, 定義朗格朗日函數 $L(P,w)$:
\begin{aligned}
L(P,w)
&= -H(P) + w_0\left (1-\sum_yP(y|x) \right ) + \sum^n_{i=1}w_i(E _{\widetilde{P}}(f_i) - E_p(f_i))\\
&=\sum_{x,y} \widetilde{P}(x)P(y|x)logP(y|x) + w_0\left (1-\sum_yP(y|x) \right ) + \sum^n_{i=1}w_i\left (\sum_{x,y}\widetilde{P}(x ,y)f(x,y) -\sum_{x,y}\widetilde{P}(x)p(y|x)f(x,y) \right )
\end{aligned}
如今問題轉化爲: $\min_{P \in C}L(P,w)$ ,拉格朗日函數 $L(P,w)$ 的約束是要知足的 ,若是不知足約束的話,只需另 $w_i \rightarrow +\infty$ ,則可得 $L(P,w) \rightarrow +\infty$ ,由於須要獲得極小值,因此約束必需要知足,知足約束後可得: $L(P,w) = \max L(P,w)$ ,如今問題能夠形式化爲便於拉格朗日對偶處理的極小極大的問題:
\[\min_{P \in C} \max_w L(P,w)\]
因爲 $L(P,w)$ 是關於 P 的凸函數,根據拉格朗日對偶可得 $L(P,w)$ 的極小極大問題與極大極小問題是等價的:
\[\min_{P \in C} \max_w L(P,w) = \max_w \min_{P \in C} L(P,w) \]
如今能夠先求內部的極小問題 $\min_{P \in C} L(P,w)$ ,$\min_{P \in C} L(P,w)$ 獲得的解爲關於 $w$ 的函數,能夠記作 $\Psi(w)$ :
\[\Psi(w) = \min_{P \in C} L(P,w) = L(P_w,w)\]
上式的解 $P_w$ 能夠記作:
\[P_w = arg \min_{P \in C}L(P,w) = P_w(y|x)\]
因爲求解 $P$ 的最小值 $P_w$ ,只需對於 $P(y|x)$ 求導便可,令導數等於 0 便可獲得 $P_w(y|x)$ :
\begin{aligned}
\frac{\partial L(P,w) }{\partial P(y|x)} &= \sum_{x,y}\widetilde{P}(x)(logP(y|x)+1)-\sum_yw_0-\sum_{x,y}\left ( \widetilde{P}(x)\sum_{i=1}^nw_if_i(x,y) \right ) \\
&= \sum_{x,y}\widetilde{P}(x)\left ( logP(y|x)+1-w_0-\sum_{i=1}^n w_if_i(x,y) \right ) = 0 \\
\Rightarrow \\
P(y|x) &= exp \left ( \sum_{i=1}^n w_if_i(x,y) +w_0-1 \right ) = \frac{exp\left(\sum_{i=1}^n w_if_i(x,y) \right )}{exp(1-w_0)}
\end{aligned}
因爲 $\sum_yP(y|x) = 1$,可得:
\[\sum_yP(y|x) = 1 \Rightarrow \frac {1} {exp(1-w_0)} \sum _y exp \left ( \sum_{i=1}^n w_if_i(x,y) \right ) = 1\]
進而能夠獲得:
\[ exp(1-w_0) = \sum _y exp \left ( \sum_{i=1}^n w_if_i(x,y) \right ) \]
這裏 $exp(1-w_0)$ 起到了歸一化的做用,令 $Z_w(x)$ 表示 $exp(1-w_0)$ ,便獲得了 MaxEnt 模型 :
\begin{aligned}
P_w(y|x) &= \frac{1}{Z_w(x) }exp \left ( \sum_{i=1}^n w_if_i(x,y) \right ) \\
Z_w(x) &=\sum _y exp \left ( \sum_{i=1}^n w_if_i(x,y) \right )
\end{aligned}
這裏 $f_i(x,y)$ 表明特徵函數,$w_i$ 表明特徵函數的權值, $P_w(y|x)$ 即爲 MaxEnt 模型,如今內部的極小化求解獲得關於 $w$ 的函數,如今求其對偶問題的外部極大化便可,將最優解記作 $w^*$:
\[w^* = arg \max_w \Psi(w)\]
因此如今最大上模型轉爲求解 $\Psi(w)$ 的極大化問題,求解最優的 $w^*$ 後, 便獲得了所要求的MaxEnt 模型,將 $P_w(y|x)$ 帶入 $\Psi(w)$ ,可得:
\begin{aligned}
\Psi(w) &=\sum_{x,y}\widetilde{P}(x)P_w(y|x)logP_w(y|x) + \sum^n_{i=1}w_i\left (\sum_{x,y}\widetilde{P}(x ,y)f(x,y) -\sum_{x,y}\widetilde{P}(x)P_w(y|x)f(x,y) \right )\\
&= \sum_{x,y} \widetilde{P}(x,y)\sum_{i=1}^nw_if_i(x,y) +\sum_{x,y}\widetilde{P}(x)P_w(y|x)\left (logP_w(y|x) - \sum_{i=1}^nw_if_i(x,y) \right) \\
&=\sum_{x,y} \widetilde{P}(x,y)\sum_{i=1}^nw_if_i(x,y) +\sum_{x,y}\widetilde{P}(x)P_w(y|x)logZ_w(x)\\
&=\sum_{x,y} \widetilde{P}(x,y)\sum_{i=1}^nw_if_i(x,y) +\sum_x\widetilde{P}(x)logZ_w(x)\sum_yP_w(y|x)\\
&=\sum_{x,y} \widetilde{P}(x,y)\sum_{i=1}^nw_if_i(x,y) +\sum_x\widetilde{P}(x)logZ_w(x)\\
\end{aligned}
以上推倒第二行到第三行用到如下結論:
\[P_w(y|x) = \frac{1}{Z_w(x) }exp \left ( \sum_{i=1}^n w_if_i(x,y) \right ) \Rightarrow logP_w(y|x) =\sum_{i=1}^n w_if_i(x,y) - logZ_w(x)\]
倒數第二行到最後一行是因爲:$\sum_yP_w(y|x) = 1$,最終經過一系列極其複雜的運算,獲得了須要極大化的式子:
\[\max_{p \in C} \sum_{x,y} \widetilde{P}(x,y)\sum_{i=1}^nw_if_i(x,y) +\sum_x\widetilde{P}(x)logZ_w(x)\]
極大化似然估計解法
這太難了,有沒有簡單又 work 的方式呢? 答案是有的,就是極大似然估計 MLE 了,這裏有訓練數據獲得經驗分佈 $\widetilde{P}(x,y)$ , 待求解的機率模型 $P(Y|X)$ 的似然函數爲:
\[L_{\widetilde{P}}(P_w) = log\prod_{x,y}P(y|x)^{\widetilde{P}(x,y)} = \sum_{x,y}\widetilde{P}(x,y)logP(y|x) \]
將 $P_w(y|x)$ 帶入如下公式能夠獲得:
\begin{aligned}
L_{\widetilde{P}}(P_w) &= \sum_{x,y}\widetilde{P}(x,y)logP(y|x)\\
&= \sum_{x,y}\widetilde{P}(x,y)\left ( \sum_{i=1}^n w_if_i(x,y) -logZ_w(x)\right )\\
&= \sum_{x,y}\widetilde{P}(x,y)\sum_{i=1}^n w_if_i(x,y) - \sum_{x,y}\widetilde{P}(x,y)logZ_w(x)\\
&= \sum_{x,y}\widetilde{P}(x,y)\sum_{i=1}^n w_if_i(x,y) - \sum_{x}\widetilde{P}(x)logZ_w(x)\\
\end{aligned}
顯而易見,拉格朗日對偶獲得的結果與極大似然獲得的結果時等價的,如今只需極大化似然函數便可,順帶優化目標中能夠加入正則項,這是一個凸優化問題,通常的梯度法、牛頓法均可解之,專門的算法有GIS IIS 算法,。
這裏給出來作下參考吧! ==
參考文獻:
《統計學習方法》
http://blog.csdn.net/itplus/article/details/26550201
http://www.cnblogs.com/hexinuaa/p/3353479.html
A Maximum Entropy Approach A Maximum Entropy Approach
Classical Probabilistic Models and Conditional Random Fields