最大熵模型 Maximum Entropy Model

熵的概念在統計學習與機器學習中真是很重要,熵的介紹在這裏:信息熵 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}\]優化

分別用下圖表示以上兩種狀況:

12明白了 simplex 的定義以後,將其與機率模型聯繫起來,在 simplex 中,不加任何約束,整個機率空間的取值能夠是 simplex 中的任意一點,只需找到知足最大熵條件的的便可;當引入一個約束條件 $C_1$ 後,以下圖中 (b),模型被限制在 $C_1$ 表示的直線上,則應在知足約束 $C_1$ 的條件下來找到熵最大的模型;當繼續引入條件 $C_2$ 後,如圖(c),模型被限制在一點上,即此時有惟一的解;當 $C_1$ 與 $C_2$ 不一致時,如圖(d),此時模型沒法知足約束,即無解。在 MaxEnt 模型中,因爲約束從訓練數據中取得,因此不會出現不一致。即不會出現(d) 的狀況。1

接下來以統計建模的形式來描述 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 。好比對於以下數據集:

1

數據集中,第一列爲 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

相關文章
相關標籤/搜索