條件隨機場(二)

前面介紹隱馬爾可夫模型時,講到其能夠做爲天然語言處理的一種方法,可是隱馬爾可夫作了很強的假設:齊次馬爾可夫性假設和觀測獨立性假設,這兩個假設卻也影響了分類的準確性。而本篇介紹的條件隨機場能彌補這一不足,由於去掉了觀測獨立性假設。參考文獻1,咱們簡單介紹四個機率模型,並分析其之間的關係,最後再引出條件隨機場,這樣會顯然天然些,也比較容易理解。html

機率模型

樸素貝葉斯模型是給定一個特徵向量從而決定單個分類變量值。設輸入爲特徵向量$x \in \cal X = \bf R^n$,輸出爲類標記$y \in \cal Y$,X是定義在輸入空間$\cal X$上的隨機變量,Y是定義在輸出空間上的$\cal Y$上的隨機變量,聯合機率分佈爲P(X,Y),當輸入爲x時,預測其分類y。隱馬爾可夫則是樸素貝葉斯模型的擴展,處理分類的序列而非單個分類,好比(x1,x2,...,xt),對應分類爲(y1,y2,...,yt)。樸素貝葉斯模型和隱馬爾可夫模型都是生成模型(Generative,即 X和Y的聯合機率分佈)。dom

聯合機率分佈的缺點是計算的複雜度很高。而相反地,最大熵模型基於條件機率p(y|x),與樸素貝葉斯模型相似,最大熵模型也是處理對應單個特徵向量的單個分類值。隱馬爾可夫模型對樸素貝葉斯模型擴展到輸入序列上來,條件隨機場能夠理解爲對最大熵模型擴展到輸入序列上來,最大熵模型和條件隨機場模型都是判別模型(Discriminative,即Y關於X的條件機率分佈)。函數

它們的關係以下圖學習

如上圖所示,左邊兩個模型考慮聯合機率分佈,右邊兩個模型考慮條件機率分佈,上面兩個模型考慮單個分類判斷,而下面兩個模型考慮分類序列判斷。優化

樸素貝葉斯模型

咱們使用條件機率分佈來預測,條件機率爲,htm

\begin{equation} p(y|\vec{x}) = \frac {p(y)p(\vec {x} |y)} {p(\vec x)} \end{equation}blog

給定一個輸入向量$\vec x$後,計算(1)的條件機率,值最大時對應的那個分類y 就是最終預測的分類,那麼,既然給定了$\vec x$,計算不一樣的y所對應的條件機率,那麼(1)式的分母就不重要了,由於都同樣,可看做常數(這裏變量是y),而(1)式分子就是聯合機率$p(y)p(\vec {x} |y) = p(y, \vec x)$,而這個聯合機率計算有些複雜,尤爲在輸入向量$\vec x$的份量不少時更加複雜。假設向量$\vec {x} = (x_1, x_2, ..., x_m)$,那麼jsx

\begin{equation} \begin{aligned} p(x_1,x_2,...x_m) & = p(x_m|x_{m-1},...,x_1)p(x_{m-1},...x_1) \\ & = p(x_m|x_{m-1},...,x_1)p(x_{m-1}|x_{m-2},...x_1)p(x_{m-2},...,x_1) \\ & = p(x_m|x_{m-1},...,x_1)p(x_{m-1}|x_{m-2},...x_1) ... p(x_2|x_1)p(x_1) \\ & = p(x_1) \prod_{i=2}^m p(x_i|x_{i-1},...x_1) \end{aligned} \end{equation}get

結合(1)和(2),有it

\begin{equation} p(y,\vec{x})=p(y)p(x_1|y) \prod_{i=2}^m p(x_i|x_{i-1},...x_1,y) \end{equation}

實際中一般假設份量 $x_i$ 關於y 的條件獨立於$\vec x$其餘份量,這就是樸素貝葉斯假設。那麼$p(x_i|y,x_j)=p(x_i|y)$,其中 $i \neq j$。因而樸素貝葉斯模型爲

\begin{equation} p(y|\vec x) \propto p(y, \vec x) = p(y) \prod_{i=1}^m p(x_i|y) \end{equation}

顯然,上式簡單多了,可是樸素貝葉斯的條件獨立性假設會使得實際上分類沒那麼準確。

隱馬爾可夫模型

樸素貝葉斯模型中,咱們僅考慮單個分類預測。若是要考慮分類序列的預測,假設觀測序列爲$\vec x = (x_1,x_2,...,x_n)$,要預測的分類序列爲$\vec y = (y_1, y_2,...,y_n)$,注意這裏的下標對應序列中的下標,那麼天然而然地,能夠將序列看到一個個樸素貝葉斯模型,而後將它們連乘,就表示這個序列中各項同時發生。不考慮序列中各項的依賴性,而且與樸素貝葉斯稍有不一樣的是,序列中每一項僅對應一個輸入特徵,即觀測實體,那麼根據(4)式有

\begin{equation} p(\vec {y},\vec {x}) = \prod_{i=1}^n p(y_i) p(x_i|y_i) \end{equation}

在對應位置上,每一個觀測$x_i$只依賴於分類值$y_i$,因爲這個獨立性假設,此模型並未包含轉移機率。然而實際中很難知足這個獨立性假設,這也致使此模型的實用性受限。所以,能夠假設在序列的連續位置上分類之間有必定的相關性,因而模型變爲,

\begin{equation} p(\vec y, \vec x) = \prod_{i=1}^n p(y_i|y_{i-1})p(x_i|y_i) \end{equation}

其中因爲沒有第0位置觀測,因此咱們爲了上式書寫的一致性,令$p(y_1|y_0)=p(y_1)$,因而能夠獲得觀測序列出現的機率能夠經過對全部分類序列求和,爲

\begin{equation} P(\vec x) = \sum_{y \in \mathcal{Y} } \prod_{i=1}^n p(y_i|y_{i-1}) p(x_i|y_i) \end{equation}

其中,$\mathcal {Y}$表示全部的分類序列$\vec y$。

此模型考慮了分類序列$\vec y$中的各連續分類之間的依賴性,可是缺點是觀測序列之間的條件獨立性的假設,這使得模型不能很好的表徵實際狀況。後面咱們將看到,CRF能夠解決這一問題。

最大熵模型

前兩個模型是學習聯合機率分佈,而這裏最大熵模型則是條件機率模型,因爲其與咱們要討論的CRF比較接近,CRF是最大熵模型從單個分類擴展到分類序列上的,因此能夠着重討論一下最大熵模型,然而也能夠與前面幾篇專門講最大熵模型對比一下,加深最大熵模型的印象。

最大熵模型基於最大熵原理,表述以下:給定一個機率分佈的不徹底信息,那麼除了這個已知信息以外對於那些未知部分的機率分佈,老是認爲是均勻分佈的。基於這個設定,從訓練數據集中找到約束條件後,在這些約束條件下,使得熵達到最大的那個機率分佈正是咱們所要的。

咱們知道對於隨機變量X,其熵定義爲

\begin{equation} H(P)=-\sum\limits_{x}P(x)logP(x)\end{equation}

那麼,對於條件機率P(Y|X),其中Y表示輸出隨機變量,X表示輸入隨機變量,那麼條件熵定義爲,

\begin{equation} H(y|x) = - \sum_{(x,y) \in \mathcal{Z}} p(y,x) \log p(y|x) \end{equation}

其中,$\mathcal{Z}= X \times Y$表示全部可能的輸入X與全部可能的輸出Y的組合,注意這是指全部輸入空間X的值和輸出空間的Y的值的組合,而不只僅是存在於訓練數據集中的樣本點(x,y)。若是對上式還不那麼容易看透的話,能夠這麼理解,

$$ H(P) = - \sum_{x}p(x)H(Y|X=x) = -\sum_{x}p(x) \sum_{y} p(y|x) \log p(y|x) = - \sum_{x} \sum_{y} p(x)p(y|x) \log p(y|x) = - \sum_{x,y} p(x,y) \log p(y|x) $$

最大熵模型就是要找到機率分佈$p^{*}(y|x)$,使得條件熵值最大,因而目標函數爲

\begin{equation} p^{*}(y|x) = arg \max_{p(y|x) \in P} H(y|x) \end{equation}

其中P是全部可能的機率模型,可是這些機率模型必需要與訓練數據集一致沒有衝突,好比說訓練數據集有 m 個特徵函數,爲了簡單,咱們假設特徵函數爲二值函數$f_{i}(x,y) \in \lbrace 0,1 \rbrace (1 \leq i \leq m)$,當輸入x 和輸出y 知足某一條件時,特徵函數值爲1,不然爲0,須要注意的是對任意一個特徵函數$f_{i}(x,y)$,都是針對全部輸入x和全部輸出y,而非某一個輸入輸出(x,y),這個要特別注意。

\begin{equation} f_{i}(x,y) = \begin{cases} 1 & \text {x與y知足某一事實} \\ 0 & \text {不然} \end{cases} \end{equation}

其中 ${(x,y)| (x,y) \in \mathcal{Z}}$

特徵函數$f_i$的指望根據經驗機率分佈$\tilde{p}(x,y)$來估計,因而

\begin{equation} \tilde{E}(f_i) = \sum_{(x,y) \in \mathcal{Z}} \tilde{p}(x,y)f_{i}(x,y) \end{equation}

這裏(x,y)屬於整個輸入空間和輸出空間全部值的組合,然而若是某個(x,y)在訓練數據集中並不存在對應的樣本點,那麼其經驗機率$\tilde{p}(x,y) = 0$,因此能夠去掉那些在訓練數據集中不存在的(x,y),因而上式能夠改寫爲

\begin{equation} \tilde{E}(f_i) = \frac 1 N \sum_{(x,y) \in \mathcal{T}} f_{i}(x,y) \end{equation}

其中 $N = |\mathcal T|$,$\mathcal T$表示訓練數據集,$\mathcal T$可能存在重複的(x,y),因而上式能夠理解爲:訓練數據集中知足某一特徵函數值爲1的樣本點(x,y)的個數除以訓練數據集的大小,就是這一個特徵函數的經驗指望。

而特徵函數的指望爲

\begin{equation} E(f_i) = \sum_{(x,y) \in \mathcal{Z}} p(x,y) f_{i}(x,y) \end{equation}

因爲聯合機率分佈p(x,y)沒法計算,由於輸入空間和輸出空間的值的組合(x,y)數量巨大,能夠轉爲計算條件機率,因而上式能夠寫爲

\begin{equation} E(f_i) = \sum_{(x,y) \in \mathcal{Z}} p(x) p(y|x) f_{i}(x,y) \end{equation}

上式中,可使用$\tilde{p}(x)$代替$p(x)$,因而有

\begin{equation} E(f_i) = \sum_{(x,y) \in \mathcal{Z}} \tilde{p}(x) p(y|x) f_{i}(x,y) \end{equation}

 類比上面(13)式,因爲只有$\tilde{p}(x)$是經驗機率,且$\tilde{p}(x) = \frac {N(x)} N$,N(x)表示輸入x 在訓練數據集中出現的次數,因此將x和y拆分兩個獨立的維度進行求和,y仍是對輸出空間$\mathcal Y$的全部可能值求和,而x對訓練數據集中出現的每個輸入求和(包括重複出現的輸入),因而上式變換爲,

\begin{equation} E(f_i) = \sum_{(x,y) \in \mathcal{Z}} \frac {N(x)} N p(y|x) f_{i}(x,y) = \frac 1 N \sum_{x \in \mathcal{T}} \sum_{y \in \mathcal{Y}} p(y|x) f_{i}(x,y) \end{equation}

其中N表示訓練數據集$\mathcal T$的大小,兩重求和,內層求和是對全部輸出空間的可能值y求和,而外層求和是對訓練數據集中全部出現的輸入x(x能夠出現重複)求和,理解上式的變換須要注意求和符號Sigma下標的變化。

實際問題中,輸出空間$\cal Y$每每可能的取值數量比較小,能夠保證上式的計算量不會很大。

咱們要求$p^{*}(y|x)$與訓練數據集中數據某些特徵相一致,也就是說假設求得$p^{*}(x,y)$,那麼代入(17)式計算獲得特徵函數的指望,應該與這個特徵函數的經驗指望((12)式)相等,因而有,

\begin{equation} E(f_i) = \tilde{E}(f_i) \end{equation}

另外還有一個限制,既然是求條件機率p(y|x),那麼必須知足機率的基本性質,即

\begin{equation} p(y|x) \geq 0 \quad for \forall(x,y) \quad \quad \sum_{y \in \mathcal{Y}} p(y|x) = 1 \quad for \forall x \end{equation}

假設特徵函數有m個,那麼限制條件總共爲m+1個,目標函數由(11)式給出,這是一個帶約束條件的優化問題,因而採用拉格朗日乘子法,爲每一個約束條件引入一個乘子$\lambda_i$,拉格朗日函數爲

\begin{equation} L(p,\vec {\lambda}) = H(y|x) + \sum_{i=1}^m \lambda_{i} \left( E(f_i) - \tilde{E}(f_i) \right) + \lambda_{m+1} \left( \sum_{y \in \mathcal{Y}} p(y|x) - 1 \right) \end{equation}

下面作簡單的推導,

 根據(9)式,相似地近似計算條件熵爲

\begin{equation} H(y|x) = - \sum_{(x,y) \in \mathcal{Z}} \tilde{p}(x)p(y|x) \log p(y|x) \end{equation}

對p(y|x)求偏導,這裏須要注意的是,實際上是對$p(x_i,y_i)$求偏導,此時其餘全部$p(x_j,y_j), (j \neq i)$能夠看做常數(另外,$\tilde{p}(x)$也是常數),也就是說,求得的偏導不僅一個式子,而是一系列的偏導式子,理論上共有$|\mathcal Z|$個,

\begin{equation} \frac {\partial H(y|x)} {\partial p(y|x)} = -\tilde{p}(x) \left(\log p(y|x) + \frac {p(y|x)}{p(y|x)} \right) = -\tilde{p}(x)(logp(y|x)+1) \end{equation}

對拉格朗日函數中關於m個特徵函數的那一項求p(y|x)的偏導,由於$E(f_i)$中的變量包括p(y|x),因此能夠對其求偏導,以下

\begin{equation} \begin{aligned} \frac {\partial} {\partial p(y|x)} \sum_{i=1}^m \lambda_i \left( E(f_i) - \tilde{E}(f_i) \right) & = \frac {\partial} {\partial p(y|x)} \sum_{i=1}^m \lambda_i \left(\sum_{(x,y) \in \mathcal{Z}} \tilde{p}(x) p(y|x) f_{i}(x,y) - \sum_{(x,y) \in \mathcal{Z}} \tilde{p}(x,y)f_{i}(x,y)\right) \\ & = \sum_{i=1}^m \lambda_i \tilde{p}(x) f_i (x,y) \end{aligned} \end{equation}

上式中,$\tilde{p}(x), f_i(x,y), \tilde{p}(x,y)$均爲常數,此外,與H(y|x)的偏導相似,這裏一樣是獲得一系列的偏導式子。

因而拉格朗日函數對p(y|x)的偏導爲,

\begin{equation} \frac { \partial L(p, \vec \lambda)} {\partial p(y|x)} = -\tilde{p}(x)(logp(y|x)+1)+\sum_{i=1}^m \lambda_i \tilde{p}(x) f_i (x,y)+ \lambda_{m+1} \end{equation}

令其等於0,即

\begin{equation} -\tilde{p}(x)(logp(y|x)+1)+\sum_{i=1}^m \lambda_i \tilde{p}(x) f_i (x,y)+ \lambda_{m+1} = 0 \end{equation}

求解上式,得

\begin{equation} p(y|x) = \exp \left( \sum_{i=1}^m \lambda_i f_i (x,y) \right) exp(\frac {\lambda_{m+1}}{\tilde{p}(x)} - 1) \end{equation}

由上面(19)式的第二個限制條件,機率分佈的求和爲1,因此對上式求和

$$ \sum_{y \in \mathcal{Y}} \exp \left( \sum_{i=1}^m \lambda_i f_i (x,y) \right) exp(\frac {\lambda_{m+1}}{\tilde{p}(x)} - 1) = 1 $$

注意到上式第二個指數項與y無關,能夠提到求和符號的左邊,即

$$ exp(\frac {\lambda_{m+1}}{\tilde{p}(x)} - 1) \sum_{y \in \mathcal{Y}} \exp \left( \sum_{i=1}^m \lambda_i f_i (x,y) \right) = 1$$

將上式代入(26)式,解得

$$ p(y|x) = \exp \left( \sum_{i=1}^m \lambda_i f_i (x,y) \right) \frac 1 {\sum_{y \in \mathcal{Y}} \exp \left( \sum_{i=1}^m \lambda_i f_i (x,y) \right)} $$

注意上式適用任何(x,y)。因而,知足限制條件的最大熵模型求解出來了,即(10)式的解,整理以下

\begin{equation} p_{\vec {\lambda}}^* (y|x) = \frac 1 {Z_{\vec x}(x)} \exp(\sum_{i=1}^m \lambda_i f_i (x,y)) \end{equation}

其中

\begin{equation} Z_{\vec {\lambda}}(x) = \sum_{y \in \mathcal Y} \exp(\sum_{i=1}^m \lambda_i f_i (x,y)) \end{equation}

上面這個條件機率分佈是一個對數線性模型。固然了上面式子中還存在參數$\lambda_i$,要計算最終的條件機率分佈,須要將上式代入拉格朗日函數,而後對$\lambda_i$求極大值,具體是求偏導並令其等於0,求得$\lambda_i$再代入上式解得最終的條件機率分佈,具體可參考前面專門講的最大熵模型

雖說本篇標題是條件隨機場,可是爲了引出條件隨機場,又複習了一遍其餘三個機率模型,這也是沒辦法,一切都是爲了更好的理解透徹條件隨機場,下一篇將講述兩種機率模型(生成模型和判別模型)的圖表示。

ref

Classical Probabilistic Models and Conditional Random Fields

相關文章
相關標籤/搜索