本文簡單整理了如下內容:php
(一)馬爾可夫隨機場(Markov random field,無向圖模型)簡單回顧html
(二)條件隨機場(Conditional random field,CRF)git
這篇寫的很是淺,基於 [1] 和 [5] 梳理。感受 [1] 的講解很適合徹底不知道什麼是CRF的人來入門。若是有須要深刻理解CRF的需求的話,仍是應該仔細讀一下幾個英文的tutorial,好比 [4] 。github
機率圖模型(Probabilistic graphical model,PGM)是由圖表示的機率分佈。機率無向圖模型(Probabilistic undirected graphical model)又稱馬爾可夫隨機場(Markov random field),表示一個聯合機率分佈,其標準定義爲:算法
設有聯合機率分佈 P(V) 由無向圖 G=(V, E) 表示,圖 G 中的節點表示隨機變量,邊表示隨機變量間的依賴關係。若是聯合機率分佈 P(V) 知足成對、局部或全局馬爾可夫性,就稱此聯合機率分佈爲機率無向圖模型或馬爾可夫隨機場。編程
設有一組隨機變量 Y ,其聯合分佈爲 P(Y) 由無向圖 G=(V, E) 表示。圖 G 的一個節點 $v\in V$ 表示一個隨機變量 $Y_v$ ,一條邊 $e\in E$ 就表示兩個隨機變量間的依賴關係。dom
1. 成對馬爾可夫性(pairwise Markov property)ide
設無向圖 G 中的任意兩個沒有邊鏈接的節點 u 、v ,其餘全部節點爲 O ,成對馬爾可夫性指:給定 $Y_O$ 的條件下,$Y_u$ 和 $Y_v$ 條件獨立函數
$$P(Y_u,Y_v|Y_O)=P(Y_u|Y_O)P(Y_v|Y_O)$$學習
2. 局部馬爾可夫性(local)
設無向圖 G 的任一節點 v ,W 是與 v 有邊相連的全部節點,O 是 v 、W 外的其餘全部節點,局部馬爾可夫性指:給定 $Y_W$ 的條件下,$Y_v$ 和 $Y_O$ 條件獨立
$$P(Y_v,Y_O|Y_W)=P(Y_v|Y_W)P(Y_O|Y_W)$$
當 $P(Y_O|Y_W)>0$ 時,等價於
$$P(Y_v|Y_W)=P(Y_v|Y_W,Y_O)$$
若是把等式兩邊的條件裏的 $Y_W$ 遮住,$P(Y_v)=P(Y_v|Y_O)$ 這個式子表示 $Y_v$ 和 $Y_O$ 獨立,進而能夠理解這個等式爲給定條件 $Y_W$ 下的獨立。
3. 全局馬爾可夫性(global)
設節點集合 A 、B 是在無向圖 G 中被節點集合 C 分開的任意節點集合,全局馬爾可夫性指:給定 $Y_C$ 的條件下,$Y_A$ 和 $Y_B$ 條件獨立
$$P(Y_A,Y_B|Y_C)=P(Y_A|Y_C)P(Y_B|Y_C)$$
這幾個定義是等價的。
4. 機率無向圖模型
無向圖模型的優勢在於其沒有隱馬爾可夫模型那樣嚴格的獨立性假設,同時克服了最大熵馬爾可夫模型等判別式模型的標記偏置問題。
(1)有向圖的聯合機率分佈
考慮一個有向圖 $G^d=(V^d,E^d)$ ,隨機變量間的聯合機率分佈能夠利用條件機率來表示爲
$$P(v_1^d,...,v_n^d)=\prod_{i=1}^nP(v_i^d|v_{\pi i}^d)$$
其中 $v_{\pi i}^d$ 表示節點 $v_i^d$ 的父節點的集合。
(2)無向圖的因子分解(Factorization)
不一樣於有向圖模型,無向圖模型的無向性很難確保每一個節點在給定它的鄰節點的條件下的條件機率和以圖中其餘節點爲條件的條件機率一致。因爲這個緣由,無向圖模型的聯合機率並非用條件機率參數化表示的,而是定義爲由一組條件獨立的局部函數的乘積形式。因子分解就是說將無向圖所描述的聯合機率分佈表達爲若干個子聯合機率的乘積,從而便於模型的學習和計算。
實現這個分解要求的方法就是使得每一個局部函數所做用的那部分節點能夠在 G 中造成一個最大團(maximal clique)。這就確保了沒有一個局部函數是做用在任何一對沒有邊直接鏈接的節點上的;反過來講,若是兩個節點同時出如今一個團中,則在這兩個節點所在的團上定義一個局部函數來創建這樣的依賴。
無向圖模型最大的特色就是易於因子分解,標準定義爲:
將無向圖模型的聯合機率分佈表示爲其最大團(maximal clique,可能不惟一)上的隨機變量的函數的乘積形式。
給定無向圖 G ,其最大團爲 C ,那麼聯合機率分佈 P(Y) 能夠寫做圖中全部最大團 C 上的勢函數(potential function) $\psi_C(Y_C)$ 的乘積形式:
$$P(Y)=\frac1Z\prod_C\psi_C(Y_C)$$
$$Z=\sum_Y\prod_C\psi_C(Y_C)$$
其中 Z 稱爲規範化因子,對 Y 的全部可能取值求和,從而保證了 P(Y) 是一個機率分佈。要求勢函數嚴格正,一般定義爲指數函數
$$\psi_C(Y_C)=\exp(-\mathbb E[Y_C])$$
上面的因子分解過程就是 Hammersley-Clifford 定理。
條件隨機場(Conditional random field,CRF)是條件機率分佈模型 P(Y|X) ,表示的是給定一組輸入隨機變量 X 的條件下另一組輸出隨機變量 Y 的馬爾可夫隨機場,也就是說 CRF 的特色是假設輸出隨機變量構成馬爾可夫隨機場。
條件隨機場可被看做是最大熵馬爾可夫模型在標註問題上的推廣。
這裏介紹的是用於序列標註問題的線性鏈條件隨機場(linear chain conditional CRF),是由輸入序列來預測輸出序列的判別式模型。
圖片來源:[3]
圖片來源:[2]
圖片來源:[4]
從問題描述上看,對於序列標註問題,X 是須要標註的觀測序列,Y 是標記序列(狀態序列)。在學習過程時,經過 MLE 或帶正則的 MLE 來訓練出模型參數;在測試過程,對於給定的觀測序列,模型須要求出條件機率最大的輸出序列。
若是隨機變量 Y 構成一個由無向圖 G=(V, E) 表示的馬爾可夫隨機場,對任意節點 $v\in V$ 都成立,即
$$P(Y_v|X,Y_w,w\not=v)=P(Y_v|X,Y_w,w\sim v)$$
對任意節點 $v$ 都成立,則稱 P(Y|X) 是條件隨機場。式中 $w\not=v$ 表示 w 是除 v 之外的全部節點,$w\sim v$ 表示 w 是與 v 相鏈接的全部節點。不妨把等式兩遍的相同的條件 X 都遮住,那麼式子能夠用下圖示意:
很明顯,這就是馬爾可夫隨機場的定義。
線性鏈條件隨機場
在定義中並無要求 X 和 Y 具備相同的結構,而在現實中,通常假設 X 和 Y 有相同的圖結構。對於線性鏈條件隨機場來講,圖 G 的每條邊都存在於狀態序列 Y 的相鄰兩個節點,最大團 C 是相鄰兩個節點的集合,X 和 Y 有相同的圖結構意味着每一個 $X_i$ 都與 $Y_i$ 一一對應。
$$V=\{1,2,...,n\},\quad E=\{(i, i+1)\},\quad i=1,2,...,n-1$$
設兩組隨機變量 $X=(X_1,...,X_n),Y=(Y_1,...,Y_n)$ ,那麼線性鏈條件隨機場的定義爲
$$P(Y_i|X,Y_1,...,Y_{i-1},Y_{i+1},...,Y_n)=P(Y_i|X,Y_{i-1},Y_{i+1}),\quad i=1,...,n$$
其中當 i 取 1 或 n 時只考慮單邊。
1、線性鏈條件隨機場的數學表達式
1. 線性鏈條件隨機場的參數化形式:特徵函數及例子
此前咱們知道,馬爾可夫隨機場能夠利用最大團的函數來作因子分解。給定一個線性鏈條件隨機場 P(Y|X) ,當觀測序列爲 $x=x_1x_2\cdots$ 時,狀態序列爲 $y=y_1y_2\cdots$ 的機率可寫爲(實際上應該寫爲 $P(Y=y|x;\theta)$ ,參數被省略了)
$$P(Y=y|x)=\frac{1}{Z(x)}\exp\biggl(\sum_k\lambda_k\sum_it_k(y_{i-1},y_i,x,i)+\sum_l\mu_l\sum_is_l(y_i,x,i)\biggr)$$
$$Z(x)=\sum_y\exp\biggl(\sum_k\lambda_k\sum_it_k(y_{i-1},y_i,x,i)+\sum_l\mu_l\sum_is_l(y_i,x,i)\biggr)$$
$Z(x)$ 做爲規範化因子,是對 y 的全部可能取值求和。
序列標註 vs 分類
是否是和Softmax迴歸挺像的?它們都屬於對數線性模型(log linear model),線性鏈CRF用來解決序列標註問題,Softmax迴歸、最大熵模型都是用來解決分類問題。但須要注意,這兩類問題存在很是大的區別:
(1)若是把序列標註問題看做分類問題,也就是爲每個待標註的位置都看成一個樣本而後進行分類,那麼將會有很大的信息損失,由於一個序列的不一樣位置之間存在聯繫:好比說有一系列連續拍攝的照片,如今想在照片上打上表示照片裏的活動內容的標記,固然能夠將每張照片單獨作分類,可是會損失信息,例如當有一張照片上是一張嘴,應該分類到「吃飯」仍是分類到「唱K」呢?若是這張照片的上一張照片內容是吃飯或者作飯,那麼這張照片表示「吃飯」的可能性就大一些,若是上一張照片的內容是跳舞,那這張照片就更有可能在講唱K的事情。(這個例子來自 [5] 的開頭。)
(2)不一樣的序列有不一樣的長度,不便於表示成同一維度的向量。
(3)狀態序列的解集隨着序列長度指數級增加,窮舉法是不可行的。
特徵函數
對於線性鏈CRF,特徵函數是個很是重要的概念:
轉移特徵 $t_k(y_{i-1},y_i,x,i)$ 是定義在邊上的特徵函數(transition),依賴於當前位置 i 和前一位置 i-1 ;對應的權值爲 $\lambda_k$ 。
狀態特徵 $s_l(y_i,x,i)$ 是定義在節點上的特徵函數(state),依賴於當前位置 i ;對應的權值爲 $\mu_l$ 。
通常來講,特徵函數的取值爲 1 或 0 ,當知足規定好的特徵條件時取值爲 1 ,不然爲 0 。
以詞性標註爲例
下面給出一些特徵函數的例子,參考自 [5] 。詞性標註(Part-of-Speech Tagging,POS)任務是指 the goal is to label a sentence (a sequence of words or tokens) with tags like ADJECTIVE, NOUN, PREPOSITION, VERB, ADVERB, ARTICLE. 在對英文序列進行詞性標註時可使用如下特徵:
(1)$s_1(y_i,x,i)=1$ ,若是 $y_i=ADVERB$ 且 $x_i$ 以「-ly」結尾;不然爲 0 。若是該特徵函數有一個較大的正權重,就代表傾向於將 「-ly」 結尾的單詞標註爲副詞。
(2)$s_2(y_i,x,i)=1$,若是 $i=1$ 、$y_i=VERB$ 且 x 以「?」結尾;不然爲 0 。若是該特徵函數有一個較大的正權重,就代表傾向於將問句的首詞標註爲動詞,例如「Is this a sentence beginning with a verb?」
(3)$t_3(y_{i-1},y_i,x,i)=1$,若是 $y_{i-1}=ADJECTIVE$ 且 $y_{i}=NOUN$;不然爲 0 。 若是該特徵函數有一個較大的正權重,就代表傾向於認爲形容詞後面跟着名詞。
(4)$t_4(y_{i-1},y_i,x,i)=1$,若是 $y_{i-1}=PREPOSITION$ 且 $y_{i}=PREPOSITION$;不然爲 0 。 若是該特徵函數有一個較大的負權重,就代表傾向於認爲介詞不會連用。
CRF vs HMM
[5] 中還比較了 HMM 和 CRF在序列標註的異同,做者認爲CRF更增強大,理由以下:
(1)能夠爲每一個 HMM 都創建一個等價的 CRF(記號中的 s、l 就是本文的 x、y ):
圖片來源:[5]
(2)CRF 的特徵能夠囊括更加普遍的信息:HMM 基於「上一狀態to當前狀態」的轉移機率以及「當前狀態to當前觀測」的釋放機率,使得當前位置的詞(觀測)只能夠利用當前的狀態(詞性)、當前位置的狀態又只能利用上一位置的狀態。但 CRF 的特徵函數中,輸入包含 $(y_{i-1},y_i,x,i)$ ,對於當前位置 i 來講能夠利用完整的 x 信息。
(3)CRF 的參數的取值沒有限制,而 HMM 的參數(轉移機率矩陣、釋放機率矩陣、初始機率向量)都須要知足一些限制。
2. 線性鏈條件隨機場的簡化形式
須要注意的是,以 $\sum_k\lambda_k\sum_it_k(y_{i-1},y_i,x,i)$ 這項爲例,能夠看出外面那個求和號是套着裏面的求和號的,這種雙重求和就代表了對於同一個特徵(k),在各個位置(i)上都有定義。
基於此,很直覺的想法就是把同一個特徵在各個位置 i 求和,造成一個全局的特徵函數,也就是說讓裏面那一層求和號消失。在此以前,爲了把加號的兩項合併成一項,首先將各個特徵函數 t(設其共有 $K_1$ 個)、s(設共 ${K_2}$ 個)都換成統一的記號 f :
$$t_1=f_1,t_2=f_2,\cdots,t_{K_1}=f_{K_1},\quad s_1=f_{K_1+1},s_2=f_{K_1+2},\cdots,s_{K_2}=f_{K_1+K_2}$$
相應的權重同理:
$$\lambda_1=w_1,\lambda_2=w_2,\cdots,\lambda_{K_1}=w_{K_1},\quad \mu_1=w_{K_1+1},\mu_2=w_{K_1+2},\cdots,\mu_{K_2}=w_{K_1+K_2}$$
那麼就能夠記爲
$$f_k(y_{i-1},y_i,x,i)=\begin{cases}t_k(y_{i-1},y_i,x,i), & k=1,2,...,K_1 \\s_l(y_i,x,i), & k=K_1+l;l=1,2,...,K_2\end{cases}$$
$$w_k=\begin{cases}\lambda_k, & k=1,2,...,K_1 \\\mu_l, & k=K_1+l;l=1,2,...,K_2\end{cases}$$
而後就能夠把特徵在各個位置 i 求和,即
$$f_k(y,x)=\sum_{i=1}^n f_k(y_{i-1},y_i,x,i), \quad k=1,2,...,K$$
其中 $K=K_1+K_2$ 。進而能夠獲得簡化表示形式
$$P(Y=y|x)=\frac{1}{Z(x)}\exp\sum_{k=1}^Kw_kf_k(y,x)$$
$$Z(x)=\sum_y\exp\sum_{k=1}^Kw_kf_k(y,x)$$
若是進一步,記 $\textbf w=(w_1,w_2,...,w_K)^{\top}$ ,$F(y,x)=(f_1(y,x),...,f_K(y,x))^{\top}$ ,那麼可得內積形式:
$$P_{\textbf w}(Y=y|x)=\frac{1}{Z_{\textbf w}(x)}\exp(\textbf w^{\top}F(y,x))$$
$$Z_{\textbf w}(x)=\sum_y\exp(\textbf w^{\top}F(y,x))$$
3. 線性鏈條件隨機場的矩陣形式
這種形式依託於線性鏈條件隨機場對應的圖模型僅在兩個相鄰節點之間存在邊。在狀態序列的兩側添加兩個新的狀態 $y_0 = start$ 、$y_{n+1}=stop$ 。
這裏,引入一個新的量 $M_i(y_{i-1},y_i|x)$ :
$$M_i(y_{i-1},y_i|x)=\exp\sum_{k=1}^Kw_kf_k(y_{i-1},y_i,x,i),\quad i=1,2,...,n+1$$
首先,這個量融合了參數和特徵,是一個描述模型的比較簡潔的量;其次,不難發現,這個量相比於原來的非規範化機率 $P(Y=y|x)\propto\exp\displaystyle\sum_{k=1}^Kw_kf_k(y,x)$ ,少了對位置的內層求和,換句話說這個量是針對於某個位置 i (及其前一個位置 i-1 )的。那麼,假設狀態序列的狀態存在 m 個可能的取值,對於任一位置 i = 1,2,...,n+1 ,定義一個 m 階方陣:
$$\begin{aligned}M_i(x)&=[\exp\sum_{k=1}^Kf_k(y_{i-1},y_i,x,i)]_{m\times m}\\&=[M_i(y_{i-1},y_i|x)]_{m\times m}\end{aligned}$$
由於有等式 $\displaystyle\prod_i\biggl[\exp\sum_{k=1}^Kw_kf_k(y_{i-1},y_i,x,i)\biggr]=\exp\biggl(\sum_{k=1}^Kw_k\sum_i f_k(y_{i-1},y_i,x,i)\biggr)$ 成立,因此線性鏈條件隨機場能夠表述爲以下的矩陣形式:
$$P_{\textbf w}(Y=y|x)=\frac{1}{Z_{\textbf w}(x)}\prod_{i=1}^{n+1}M_i(y_{i-1},y_i|x)$$
$$Z_{\textbf w}(x)=(M_1(x)M_2(x)\cdots M_{n+1}(x))_{(start,stop)}$$
其中規範化因子 $Z_{\textbf w}(x)$ 是這 n+1 個矩陣的乘積矩陣的索引爲 $(start,stop)$ 的元素。 $Z_{\textbf w}(x)$ 它就等於以 start 爲起點、以 stop 爲終點的全部狀態路徑的非規範化機率 $\prod_{i=1}^{n+1}M_i(y_{i-1},y_i|x)$ 之和(證實略)。
上面的描述或多或少有些抽象,[1] 中給出了一個具體的例子:給定一個線性鏈條件隨機場,n = 3 ,狀態的可能取值爲 5 和 7 。設 $y_0 = start = 5$ 、$y_{n+1}=stop=5$ ,且 M 矩陣在 i = 1,2,...,n+1 的值已知,求狀態序列以 start 爲起點、以stop爲終點的全部狀態路徑的非規範化及規範化機率。
$$M_1(x)=\begin{pmatrix}a_{01} & a_{01}\\0&0\end{pmatrix},\quad M_2(x)=\begin{pmatrix}b_{11} & b_{12}\\b_{21} & b_{22}\end{pmatrix}$$
$$M_3(x)=\begin{pmatrix}c_{11} & c_{12}\\c_{21} & c_{22}\end{pmatrix},\quad M_4(x)=\begin{pmatrix}1 & 0\\1 & 0\end{pmatrix}$$
全部可能的狀態路徑,共8條(沒有刻意區分 Y 和 y 這兩種記號):
先看一下 M 矩陣的含義。以 $M_3(x)$ 爲例:行索引就是當前位置(此處爲3)的上一位置(此處爲2)的狀態可能取值,列索引就是當前位置的狀態可能取值。
每一個 M 矩陣的行/列索引都是一致的,對應於狀態的可能取值。所以,M 矩陣的每一個元素值就有點Markov chain裏的「轉移機率」的意思:以 $M_3(x)$ 的 $c_{12}$ 爲例,它的行索引是5,列索引是7,能夠「看做」是上一位置(2)的狀態是5且當前位置(3)的狀態是7的「非規範化轉移機率」。
那麼根據公式 $P_{\textbf w}(Y=y|x)\propto\displaystyle\prod_{i=1}^{n+1}M_i(y_{i-1},y_i|x) $ ,可知狀態序列 $y_0y_1\cdots y_{4}$ 爲 (5, 5, 5, 7, 5) 的非規範化機率爲 $a_{01}\times b_{11}\times c_{12}\times 1$ ,其中 $a_{01}$ 是位置0的狀態爲5且位置1的狀態爲7的「轉移機率」,其餘三項亦能夠看做「轉移機率」。同理,可求得其餘七條路徑的非規範化機率。
規範化因子就等於 $M_1(x)M_2(x)M_3(x)M_4(x)$ 的行索引爲五、列索引爲5的值,經計算,等於全部8條路徑的非規範化機率之和。
2、線性鏈條件隨機場的計算問題
與隱馬爾可夫模型相似,條件隨機場也有三個基本問題:計算問題、解碼問題和學習問題,其中前兩個問題屬於inference,第三個問題固然是learning。下面簡單介紹。
CRF的計算問題是指,給定一個條件隨機場 P(Y|X) 、觀測序列 x 和狀態序列 y ,計算 $P(Y_i=y_i|x)$ 、$P(Y_{i-1}=y_{i-1},Y_i=y_i|x)$ 以及特徵函數關於分佈的指望。
回顧一下HMM,當時解決這個問題使用的是前向算法/後向算法。這裏相似,對每一個位置 i =0,1,...,n+1 ,定義前向向量 $\boldsymbol\alpha_i(x)$ :
$$\alpha_0(y|x)=\begin{cases}1, & y=start\\0, & otherwise\end{cases}$$
$$\alpha_i(y_i|x)=\sum_{y_{i-1}}\alpha_{i-1}(y_{i-1}|x)M_i(y_{i-1},y_i|x),\quad i=1,2,...,n+1$$
$\alpha_i(y_i|x)$ 的含義是在位置 i 的標記 $Y_i=y_i$ 且從起始位置到位置 i 的局部標記序列的非規範化機率,這個遞推式子能夠直觀地把 $M_i(y_{i-1},y_i|x)$ 理解爲「轉移機率」,求和號表示對 $y_{i-1}$ 的全部可能取值求和。寫成矩陣的形式就是下式
$$\boldsymbol\alpha_i^{\top}(x)=\boldsymbol\alpha_{i-1}^{\top}(x)M_i(x)$$
這裏的 $\boldsymbol\alpha_i(x)$ 是 m 維列向量,由於每一個位置的標記都有 m 種可能取值,每個維度都對應一個 $\alpha_i(y_i|x)$ 。
相似地,能夠定義後向向量 $\boldsymbol\beta_i(x)$ :
$$\beta_{n+1}(y_{n+1}|x)=\begin{cases}1, & y_{n+1}=stop\\0, & otherwise\end{cases}$$
$$\beta_i(y_i|x)=\sum_{y_{i+1}}M_{i+1}(y_{i},y_{i+1}|x)\beta_{i+1}(y_{i+1}|x),\quad i=0,1,...,n$$
$\beta_i(y_i|x)$ 的含義是在位置 i 的標記 $Y_i=y_i$ 且從位置 i+1 到位置 n 的局部標記序列的非規範化機率。寫成矩陣的形式就是
$$\boldsymbol\beta_i^{\top}(x)=M_{i+1}(x)\boldsymbol\beta_{i+1}(x)$$
另外,規範化因子 $Z(x)=\boldsymbol\alpha^{\top}_n(x)\boldsymbol 1=\boldsymbol 1^{\top}\boldsymbol\beta_1(x)$ 。
1. 機率值的計算
給定一個CRF模型,那麼 $P(Y_i=y_i|x)$ 、$P(Y_{i-1}=y_{i-1},Y_i=y_i|x)$ 能夠利用前向向量和後向向量計算爲
$$P(Y_i=y_i|x)=\frac{\alpha_i(y_i|x)\beta_i(y_i|x)}{Z(x)}$$
$$P(Y_{i-1}=y_{i-1},Y_i=y_i|x)=\frac{\alpha_{i-1}(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)}$$
2. 指望值的計算
(1)特徵函數 $f_k$ 關於條件分佈 P(Y|X) 的指望:
$$\begin{aligned}\mathbb E_{P(Y|x)}[f_k]&=\sum_{y}P(Y=y|x)f_k(y,x)\\&=\sum_{y}P(Y=y|x)\sum_{i=1}^{n+1} f_k(y_{i-1},y_i,x,i)\\&=\sum_{i=1}^{n+1}\sum_{y_{i-1}y_i}f_k(y_{i-1},y_i,x,i)P(Y_{i-1}=y_{i-1},Y_i=y_i|x)\\&=\sum_{i=1}^{n+1}\sum_{y_{i-1}y_i}f_k(y_{i-1},y_i,x,i)\frac{\alpha_{i-1}(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)}\end{aligned}$$
第一個等號,能夠看出計算代價很是大,但轉化爲第二個等號後,即可利用前向向量和後向向量來高效計算。
(2)特徵函數 $f_k$ 關於聯合分佈 P(X,Y) 的指望:
這裏假設已知邊緣分佈 P(X) 的經驗分佈爲 $\widetilde P(X)$ ,經驗分佈就是根據訓練數據,用頻數估計的方式獲得 $\widetilde P(X=x)=\dfrac{\#x}{N}$。
$$\begin{aligned}\mathbb E_{P(X,Y)}[f_k]&=\sum_{x,y}P(x,y)f_k(y,x)\\&=\sum_x\widetilde P(x)\sum_{y}P(Y=y|x)\sum_{i=1}^{n+1} f_k(y_{i-1},y_i,x,i)\\&=\sum_x\widetilde P(x)\sum_{i=1}^{n+1}\sum_{y_{i-1}y_i}f_k(y_{i-1},y_i,x,i)\frac{\alpha_{i-1}(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)}\end{aligned}$$
第二個等號那裏相似於最大熵模型的條件熵的定義。
對於給定的觀測序列 x 和標記序列 y ,經過一次前向掃描計算 $\boldsymbol\alpha_i$ 及 $Z(x)$ ,一次後向掃描計算 $\boldsymbol\beta_i$ ,進而計算全部的機率值,以及特徵的指望。
3、線性鏈條件隨機場的解碼問題
解碼問題即預測問題,給定條件隨機場 P(Y|X) 和觀測序列 x ,求最有可能的狀態序列 y* 。與 HMM 相似,使用維特比算法求解。
4、線性鏈條件隨機場的學習問題
CRF是定義在時序數據上的對數線性模型,使用 MLE 和帶正則的 MLE 來訓練。相似於最大熵模型,能夠用改進的迭代尺度法(IIS)和擬牛頓法(如BFGS算法)來訓練。
訓練數據 $\{(x^{(j)},y^{(j)})\}_{j=1}^N$ 的對數似然函數爲
$$\begin{aligned}L(\textbf w)=L_{\widetilde P}(P_\textbf w)&=\ln\prod_{j=1}^NP_{\textbf w}(Y=y^{(j)}|x^{(j)})\\&=\sum_{j=1}^N\ln P_{\textbf w}(Y=y^{(j)}|x^{(j)})\\&=\sum_{j=1}^N\ln \frac{\exp\sum_{k=1}^Kw_kf_k(y^{(j)},x^{(j)})}{Z_{\textbf w}(x^{(j)})}\\&=\sum_{j=1}^N\biggl(\sum_{k=1}^Kw_kf_k(y^{(j)},x^{(j)})-\ln Z_{\textbf w}(x^{(j)})\biggr)\end{aligned}$$
或者能夠這樣寫:
$$\begin{aligned}L(\textbf w)=L_{\widetilde P}(P_\textbf w)&=\ln\prod_{x,y}P_{\textbf w}(Y=y|x)^{\widetilde P(x,y)}\\&=\sum_{x,y}\widetilde P(x,y)\ln P_{\textbf w}(Y=y|x)\\&=\sum_{x,y}\widetilde P(x,y)\ln \frac{\exp\sum_{k=1}^Kw_kf_k(y,x)}{Z_{\textbf w}(x)}\\&=\sum_{x,y}\widetilde P(x,y)\sum_{k=1}^Kw_kf_k(y,x)-\sum_{x,y}\widetilde P(x,y)\ln Z_{\textbf w}(x)\\&=\sum_{x,y}\widetilde P(x,y)\sum_{k=1}^Kw_kf_k(y,x)-\sum_{x}\widetilde P(x)\ln Z_{\textbf w}(x)\end{aligned}$$
最後一個等號是由於 $\sum_yP(Y=y|x)=1$ 。順便求個導:
$$\begin{aligned}\frac{\partial L(\textbf w)}{\partial w_i}&=\sum_{x,y}\widetilde P(x,y)f_i(x,y)-\sum_{x,y}\widetilde P(x)P_{\textbf w}(Y=y|x)f_i(x,y)\\&=\mathbb E_{\widetilde P(X,Y)}[f_i]-\sum_{x,y}\widetilde P(x)P_{\textbf w}(Y=y|x)f_i(x,y)\end{aligned}$$
似然函數中的 $\ln Z_{\textbf w}(x)$ 項是一個指數函數的和的對數的形式。關於這一項在編程過程當中須要注意的地方能夠參考這篇博客。
參考:
[1] 統計學習方法
[2] Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data
[3] Conditional Random Fields: An Introduction
[4] An Introduction to Conditional Random Fields for Relational Learning
[5] Introduction to Conditional Random Fields
[6] Log-Linear Models, MEMMs, and CRFs
[7] 基於條件隨機場的中文命名實體識別(向曉雯,2006 thesis)
[8] CRF++: CRF++代碼分析 CRF++中文分詞 CRF++詞性標註
[9] 數值優化:理解L-BFGS算法 牛頓法與擬牛頓法學習筆記(五)L-BFGS 算法
[10] 漫步條件隨機場系列文章