最大熵模型 Maximum Entropy Model


熵的概念在統計學習與機器學習中真是很重要,熵的介紹在這里:信息熵 Information Theory 。今天的主題是最大熵模型(Maximum Entropy Model,以下簡稱MaxEnt),MaxEnt 是概率模型學習中一個准則,其思想為:在學習概率模型時,所有可能的模型中熵最大的模型是最好的模型;若概率模型需要滿足一些約束,則最大熵原理就是在滿足已知約束的條件集合中選擇熵最大模型。最大熵原理指出,對一個隨機事件的概率分布進行預測時,預測應當滿足全部已知的約束,而對未知的情況不要做任何主觀假設。在這種情況下,概率分布最均勻,預測的風險最小,因此得到的概率分布的熵是最大

直觀理解 MaxEnt

在求解概率模型時,當沒有任何約束條件則只需找到熵最大的模型,比如預測一個骰子的點數,每個面為 $\frac{1}{6}$, 是, 當模型有一些約束條件之后,首先要滿足這些約束條件, 然后在滿足約束的集合中尋找熵最大的模型,該模型對未知的情況不做任何假設,未知情況的分布是最均勻的。舉例來說對於隨機變量 $X$ ,其可能的取值為 $\left \{ A,B,C\right\}$ ,沒有任何約束的情況下下,各個值等概率得到的 MaxEnt 模型為:

\[P(A) = P(B) = P(C)  = \frac{1}{3}\]

當給定一個約束 $P(A)=  \frac{1}{2}$ , 滿足該約束條件下的 MaxEnt 模型是:

\[P(A) = \frac{1}{2}\]

\[P(B) = P(C) = \frac{1}{4}\]

如果用歐式空間中的 simplex 來表示隨機變量 $X$ 的話,則 simplex 中三個頂點分別代表隨機變量 $X$ 的三個取值 A, B, C , 這里定義 simplex  中任意一點 $p$ 到三條邊的距離之和(恆等於三角形的高)為 1,點到其所對的邊為該取值的概率,比如任給一點 $p$ ,則$P(A)$ 等於 $p$ 到  邊 BC 的距離,如果給定如下概率:

\[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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM