條件隨機場(conditional random field,以下簡稱CRF) 是給定一組輸入隨機變量條件下另一組輸出隨機變量的條件概率分佈模型,其特點是假設輸出隨機變量構成馬爾可夫隨機場(HMM 是狀態序列的 Markov Chain)。CRF 可以用於不同的預測問題,在 Machine Learning 領域裏 CRF 一般用作處理標註問題。常用的就是線性鏈(linear-chain) 條件隨機場了,這時,問題變成了由輸入序列對輸出序列預測的判別模型,形式爲對數線性模型,其學習方法通常是極大似然估計或正則化的極大似然估計。
概率無向圖模型
概率無向圖模型又稱爲馬爾可夫隨機場(Markov random field),是一個可以由無向圖表示的聯合概率分佈。
模型定義
圖是由結點及連接結點的邊組成的集合。結點和邊分別記作 v 和 e ,結點和邊的集合分別記作 V 和 E ,圖記作 G=(V,E) ,無向圖是指邊沒有方向的圖。概率圖模型(PGM) 是由圖表示的概率分佈。設有聯合概率分佈 P(Y) ,Y ∈ Y Y \in \mathcal{Y} Y ∈ Y 是一組隨機變量。由無向圖 G 表示概率分佈,即在圖 G 中,結點 v∈V 表示一個隨機變量 Y v Y_v Y v , Y = Y v ∣ v ∈ V Y = Y_v|_{v \in V} Y = Y v ∣ v ∈ V ;邊 e∈E 表示隨機變量之間的概率依賴關係。
給定一個聯合概率分佈 P(Y) 和表示它的無向圖 G。首先定義無向圖表示的隨機變量之間存在的成對馬爾可夫性局、部馬爾可夫性和全局馬爾可夫性。分別介紹一下三個概念:
成對馬爾可夫性 :設 u 和 v 是無向圖G中任意兩個沒有邊連接的結點,結點u和v分別對應隨機變量 Yu 和 Yv。其他所有結點爲 O(集合),對應的隨機變量組是 YO。成對馬爾可夫性是指給定隨機變量組 YO 的條件下隨機變量 Yu 和 Yv 是條件獨立的,其實意思就是說沒有直連邊的任意兩個節點是獨立的,即
P ( Y v , Y O ∣ Y W ) = P ( Y v ∣ Y W ) P ( Y O ∣ Y W ) P(Y_v,Y_O |Y_W) = P(Y_v|Y_W)P(Y_O|Y_W) P ( Y v , Y O ∣ Y W ) = P ( Y v ∣ Y W ) P ( Y O ∣ Y W )
局部馬爾可夫性 :設 v \in V 是無向圖 G 中任意一個結點,W 是與 v 有邊連接的所有結點,O 是 v,W 以外的其他所有結點。v 表示的隨機變量是 Yv ,W 表示的隨機變量組是 Y_w,O 表示的隨機變量組是 Y_O。局部馬爾可夫性是指在給定隨機變量組 Y_W 的條件下隨機變量 v 與隨機變量組 Y_O 是獨立的,即
P ( Y v , Y O ∣ Y W ) = P ( Y v ∣ Y W ) P ( Y O ∣ Y W ) P(Y_v,Y_O |Y_W) = P(Y_v|Y_W)P(Y_O|Y_W) 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_O|Y_W) >0 P ( Y O ∣ Y W ) > 0 時,等價地
p ( Y v ∣ Y W ) = P ( Y v ∣ Y W , Y O ) p(Y_v |Y_W) = P(Y_v|Y_W,Y_O) p ( Y v ∣ Y W ) = P ( Y v ∣ Y W , Y O )
下圖表示了局部馬爾可夫性
全局馬爾可夫性 :設結點集合 A,B 是在無向圖 G 中被結點集合 C 分開的任意結點集合,如圖所示。結點集合 A,B 和 C 所對應的隨機變量組分別是 YA,YB 和 YC。全局馬爾可夫性是指給定隨機變量組條件下隨機變量組 YA 和 YB 是條件獨立的,即
P ( Y A , Y B ∣ Y C ) = P ( Y A ∣ Y C ) P ( Y B ∣ Y C ) P(Y_A,Y_B|Y_C) = P(Y_A|Y_C)P(Y_B|Y_C) P ( Y A , Y B ∣ Y C ) = P ( Y A ∣ Y C ) P ( Y B ∣ Y C )
概率無向圖模型:
設有聯合概率分佈 P(Y) ,由無向圖 G=(V,E) 表示,在圖 G 中,結點表示隨機變量,邊表示隨機變量之間的依賴關係。如果聯合概率分佈 P(Y) 滿足成對、局部或全局馬爾可夫性,就稱此聯合概率分佈爲概率無向圖模型或馬爾可夫隨機場。
以上是概率無向圖模型的定義,實際上,我們更關心的是如何求其聯合概率分佈。對給定的概率無向圖模型,我們希望將整體的聯合概率寫成若干子聯合概率的乘積的形式,也就是將聯合概率進行因子分解,這樣便於模型的學習與計算。事實上,概率無向圖模型的最大特點就是易於因子分解。下面介紹這一結果。
概率無向圖模型的因子分解
首先給出無向圖中的團與最大團的定義,無向圖 G 中任何兩個結點均有邊連接的結點子集稱爲團(clique)。若 C 是無向圖 G 的一個團,並且不能再加進任何一個 G 的結點使其成爲一個更大的團,則稱此 C 爲最大團(maximal clique)。
下圖 (a) 表示由4個結點組成的無向圖。圖中由2個結點組成的團有5個:{Y 1 , Y 2 Y_1,Y_2 Y 1 , Y 2 }, {Y 2 , Y 3 Y_2,Y_3 Y 2 , Y 3 }, {Y 3 , Y 4 Y_3,Y_4 Y 3 , Y 4 },{Y 4 , Y 2 Y_4,Y_2 Y 4 , Y 2 },{Y 1 , Y 3 Y_1,Y_3 Y 1 , Y 3 }.有2個最大團:{Y 1 , Y 2 , Y 3 Y_1,Y_2,Y_3 Y 1 , Y 2 , Y 3 },{Y 2 , Y 3 , Y 4 Y_2,Y_3,Y_4 Y 2 , Y 3 , Y 4 },而 {Y 1 , Y 2 , Y 3 , Y 4 Y_1,Y_2,Y_3,Y_4 Y 1 , Y 2 , Y 3 , Y 4 } 不是一個團,因爲 Y1 和 Y4 沒有邊連接。
將概率無向圖模型的聯合概率分佈表示爲其最大團上的隨機變量的函數的乘積形式的操作,稱爲概率無向圖模型的因子分解,譬如在解高次方程的時候,我們非常希望方程能夠分解爲多個低次方程的乘積。那麼,對於概率分佈函數而言,我們也希望能夠這樣做,即給定概率無向圖模型,設無向圖爲 G , C 爲 G 上的最大團, YC 表示 C 對應的隨機變量。那麼概率無向圖模型的聯合概率分佈 P(Y) 可分解爲圖中所有最大團 C 上的函數Ψ C ( Y C ) \Psi_C(Y_C) Ψ C ( Y C ) 的乘積形式,分解後的因子圖如 (b) 所示,每個黑色的正方形便代表一個函數,圖中將無向圖拆分爲兩個最大團上勢函數的乘積,具體的拆分公式爲:
P ( Y ) = 1 Z ∏ C Ψ C ( Y C ) P(Y) = \frac{1}{Z} \prod_C \Psi_C(Y_C) P ( Y ) = Z 1 C ∏ Ψ C ( Y C )
其中,Z 是規範化因子(normalization factor),形式如下:Z = ∑ Y ∏ C Ψ C ( Y C ) Z = \sum_Y\prod_C \Psi_C(Y_C) Z = Y ∑ C ∏ Ψ C ( Y C )
規範化因子保證 P(Y) 構成一個概率分佈。Ψ C ( Y C ) \Psi_C(Y_C) Ψ C ( Y C ) →R 稱爲勢函數 (potential function)。這裏要求勢函數 Ψ C ( Y C ) \Psi_C(Y_C) Ψ C ( Y C ) 是嚴格正的,通常定義爲指數函數Ψ C ( Y C ) = exp { − E ( Y C ) } \Psi_C(Y_C) = \exp \left \{-E(Y_C) \right \} Ψ C ( Y C ) = exp { − E ( Y C ) }
總結一下,便得到 Hammersley-Clifford定理 ,概率無向圖模型的聯合概率分佈可以表示爲如下形式:
P ( Y ) = 1 Z ∏ C Ψ C ( Y C ) Z = ∑ Y ∏ C Ψ C ( Y C ) \begin{aligned} P(Y) &= \frac{1}{Z} \prod_C \Psi_C(Y_C) \\ Z &= \sum_Y\prod_C \Psi_C(Y_C) \end{aligned} P ( Y ) Z = Z 1 C ∏ Ψ C ( Y C ) = Y ∑ C ∏ Ψ C ( Y C )
其中,C 是無向圖的最大團, YC 是 C 的結點對應的隨機變量, ΨC(YC) 是 C 上定義的嚴格正函數,乘積是在無向圖所有的最大團上進行的。
條件隨機場的模型表示
linear-chain 條件隨機場
條件隨機場(conditional random field)是給定隨機變量 X 條件下,隨機變量 Y 的馬爾可夫隨機場。本文主要介紹定義在線性鏈上的特殊的條件隨機場,稱爲線性鏈條件隨機場(linear-chain CRF)。線性鏈條件隨機場可以用於機器學習裏的標註問題。這時,在條件概率模型 P(Y|X) 中,Y 是輸出變量,表示標記序列,也把標記序列稱爲狀態序列(同 HMM 中的狀態序列);X 是輸入變量,表示觀測序。學習時,利用訓練數據集通過極大似然估計或正則化的極大似然估計得到條件概率模型 P ^ ( Y ∣ X ) \hat{P}(Y|X) P ^ ( Y ∣ X ) ;然後使用該模型預測即可。
CRF 的定義
設 X 與 Y 是隨機變量,P(Y|X) 是在給定 X 的條件下 Y 的條件概率分佈。若隨機變量 Y 構成一個由無向圖 G = (V,E) 表示的馬爾可夫隨機場,即:P ( Y v ∣ X , Y w , w ≠ v ) = P ( Y v ∣ X , Y w , w ∼ v ) P(Y_v|X,Y_w,w \ne v) =P(Y_v|X,Y_w,w \sim v) P ( Y v ∣ X , Y w , w ̸ = v ) = P ( Y v ∣ X , Y w , w ∼ v )
對任意結點 v 成立,則稱條件概率分佈 P(Y|X) 爲條件隨機場。式中 w∼v 表示在圖 G = (V,E) 中與結點 v 有邊連接的所有結點 w, w≠v 表示結點 v 以外的所有結點,Y u , Y v , Y w Y_u,Y_v,Y_w Y u , Y v , Y w 爲結點 u,v,w 對應的隨機變量,從定義來看,左邊到右邊點的數量大大減小,w≠v 的點有 |V|−1 個,而 w∼v 就少了,其實就是說當前變量只跟與之相鄰的變量有關係,而獨立於沒有直接連接的變量。
在定義中並沒有要求 X 和 Y 具有相同的結構。現實中,一般假設 X 和 Y 有相同的圖結構。本書主要考慮無向圖爲線性鏈的情況,即對於節點 1 到 n,邊的情爲: E = { ( i , i + 1 ) } i = 1 n − 1 E = \left \{ (i,i+1) \right \}_{i=1}^{n-1} E = { ( i , i + 1 ) } i = 1 n − 1 ,在此情況下 X = { X i } i = 1 n , Y = { Y i } i = 1 n X =\left \{ X_i \right \}_{i=1}^{n} ,Y =\left \{ Y_i \right \}_{i=1}^{n} X = { X i } i = 1 n , Y = { Y i } i = 1 n ,最大團是相鄰兩個結點的集合,下圖即爲 liner-chain CRF:
線性鏈條件隨機場的定義:設 X = { X i } i = 1 n , Y = { Y i } i = 1 n X =\left \{ X_i \right \}_{i=1}^{n} ,Y =\left \{ Y_i \right \}_{i=1}^{n} X = { X i } i = 1 n , Y = { Y i } i = 1 n 均爲線性鏈表示的隨機變量序列,若在給定隨機變量序列 X 的條件下,隨機變量序列 Y 的條件概率分佈 P(Y|X)構成條件隨機場,即滿足馬爾可夫性
P ( Y i ∣ X , Y 1 , … , Y i − 1 , Y i + 1 , … , Y n ) = P ( Y i ∣ X , Y i − 1 , Y i + 1 ) P(Y_i | X,Y_1,…,Y_{i-1},Y_{i+1},…,Y_n) = P(Y_i | X,Y_{i-1},Y_{i+1}) P ( Y i ∣ X , Y 1 , … , Y i − 1 , Y i + 1 , … , Y n ) = P ( Y i ∣ X , Y i − 1 , Y i + 1 )
則稱 P(Y|X) 爲線性鏈條件隨機場。注意當 i=1 或 i=n 時只考慮一側,在標註問題中,X 表示輸入觀測序列,Y 表示對應的輸出標記序列或狀態序列。
CRF 的參數化形式
根據 Hammersley-Clifford 定理,可以給出線性鏈條件隨機場 P(Y|X)的因子分解式,各因子是定義在相鄰兩個結點上的函數。在隨機變量 X 取值爲 x 的條件下,隨機變量 Y 取值爲 y 的條件概率具有如下形式:
P ( y ∣ x ) = 1 Z ( x ) exp { ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) } P(y|x) = \frac{1}{Z(x)}\exp \left \{ \sum_{i,k}\lambda_k t_k (y_{i-1},y_i,x,i)+ \sum_{i,l}\mu_l s_l(y_i,x,i) \right \} P ( y ∣ x ) = Z ( x ) 1 exp { ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) }
其中 Z(x) 爲歸一化項:Z ( x ) = ∑ y { ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) } Z(x) = \sum_y \left \{ \sum_{i,k}\lambda_k t_k (y_{i-1},y_i,x,i)+ \sum_{i,l}\mu_l s_l(y_i,x,i) \right \} Z ( x ) = y ∑ ⎩ ⎨ ⎧ i , k ∑ λ k t k ( y i − 1 , y i , x , i ) + i , l ∑ μ l s l ( y i , x , i ) ⎭ ⎬ ⎫
式中,t k t_k t k 和 s l s_l s l 是特徵函數,λ k \lambda_k λ k 和 μ l \mu_l μ l 是對應的權值。 Z(x) 是規範化因子,求和是在所有可能的輸出序列上進行的。以上兩個式子是線性鏈條件隨機場模型的基本形式,表示給定輸入序列 x ,對輸出序列 y 預測的條件概率。其中t k t_k t k 是定義在邊上的特徵函數,稱爲轉移特徵( t 是transition的縮寫),依賴於當前和前一個位置, s l s_l s l 是定義在結點上的特徵函數,稱爲狀態特徵(s 是status的縮寫),依賴於當前位置(無論哪種特徵函數,都將當前可能的 yi 作爲數)。t k t_k t k 和 s l s_l s l 都依賴於位置,是局部特徵函數。通常,特徵函數 t k t_k t k 和 s l s_l s l 取值爲 1 或 0 ;當滿足特徵條件時取值爲 1 ,否則爲 0 。CRF 完全由特徵函數和對應的權值 λ k \lambda_k λ k ,μ l \mu_l μ l 確定,線性鏈條件隨機場也是對數線性模型(loglinear model)。
CRF 的簡化形式
CRF 還可以由簡化形式表示。注意到條件隨機場式中同一特徵在各個位置都有定義,可以對同一個特徵在各個位置求和,將局部特徵函數轉化爲一個全局特徵函數,這樣就可以將條件隨機場寫成權值向量和特徵向量的內積形式,即條件隨機場的簡化形式,爲簡便起見,首先將轉移特徵和狀態特徵及其權值用統一的符號表示。設有 K1 個轉移特徵,K2 個狀態特徵,記f k ( y i − 1 , y i , x , i ) = { t k ( y i − 1 , y i , x , i ) , k = 1 , 2 , . . . , K 1 s t ( y i , x , i ) , k = K 1 + l ; l = 1 , 2 , . . . , K 2 f_k(y_{i-1},y_i,x,i) = \left \{ \begin{aligned} &t_k(y_{i-1},y_i,x,i), \ \ k = 1,2,...,K_1 \\ &s_t(y_i,x,i), \ \ \ \ \ \ \ \ \ \ k = K_1 + l ; l = 1,2,...,K_2 \end{aligned}\right. f k ( y i − 1 , y i , x , i ) = { t k ( y i − 1 , y i , x , i ) , k = 1 , 2 , . . . , K 1 s t ( y i , x , i ) , k = K 1 + l ; l = 1 , 2 , . . . , K 2
上式其實是對特徵函數進行編碼,編號的前 K1 個屬於轉移特徵,後 K2 個屬於狀態特徵。記 K=K1+K2 ,編號統一了,後面就可以放到同一個矩陣裏了。
然後,對轉移與狀態特徵在各個位置 i 求和,記作
f k ( y , x ) = ∑ i = 1 n f k ( y i − 1 , y i , x , i ) , k = 1 , 2 , … , K f_k(y,x) = \sum_{i=1}^nf_k(y_{i-1},y_i,x,i), \ \ \ k = 1,2,…,K f k ( y , x ) = i = 1 ∑ n f k ( y i − 1 , y i , x , i ) , k = 1 , 2 , … , K
上式的特徵函數雖然都寫成接受 4 個參數的形式,但對狀態特徵函數而言,y i − 1 y_{i-1} y i − 1 是會被忽略掉的,用w k w_k w k 表示特徵f k ( y , x ) f_k(y,x) f k ( y , x ) 的權值,即
w k = { λ k , k = 1 , 2 , . . . , K 1 μ l , k = K 1 + l ; l = 1 , 2 , . . . , K 2 w_k = \left \{ \begin{aligned} &\lambda_k, \ \ k = 1,2,...,K_1 \\ &\mu_l, \ \ k = K_1 + l ; l = 1,2,...,K_2 \end{aligned}\right. w k = { λ k , k = 1 , 2 , . . . , K 1 μ l , k = K 1 + l ; l = 1 , 2 , . . . , K 2
於是,條件隨機場可表示爲:
P ( y ∣ x ) = 1 Z ( x ) exp { ∑ k = 1 K w k f k ( y , x ) } Z ( x ) = ∑ y exp { ∑ k = 1 K w k f k ( y , x ) } \begin{aligned} P(y|x) &= \frac{1}{Z(x)} \exp \left \{ \sum_{k=1}^K w_k f_k(y,x) \right \}\\ Z(x) &= \sum_y \exp \left \{ \sum_{k=1}^Kw_kf_k(y,x)\right \} \end{aligned} P ( y ∣ x ) Z ( x ) = Z ( x ) 1 exp { k = 1 ∑ K w k f k ( y , x ) } = y ∑ exp { k = 1 ∑ K w k f k ( y , x ) }
若 w 表示權值向量,即
w = ( w 1 , w 2 , … , w K ) T w= (w_1,w_2,…,w_K)^T w = ( w 1 , w 2 , … , w K ) T
以 F(y,x) 表示全局特徵向量,即:F ( y , x ) = { f 1 ( y , x ) , f 2 ( y , x ) , … , f K ( y , x ) } T F(y,x) = \left \{ f_1(y,x), f_2(y,x),…,f_K(y,x) \right \}^T F ( y , x ) = { f 1 ( y , x ) , f 2 ( y , x ) , … , f K ( y , x ) } T
則條件隨機場可以寫成向量 w 與 F(y,x) 的內積的形式:
P w ( y ∣ x ) = exp { w ⋅ F ( y , x ) } Z w ( x ) P_w(y|x) = \frac{\exp\left \{w \cdot F(y,x)\right \} }{Z_w(x)} P w ( y ∣ x ) = Z w ( x ) exp { w ⋅ F ( y , x ) }
其中,
Z w ( x ) = ∑ y exp { w ⋅ F ( y , x ) } Z_w(x) = \sum_y \exp \left \{ w \cdot F(y,x) \right \} Z w ( x ) = y ∑ exp { w ⋅ F ( y , x ) }
條件隨機場的矩陣形式
條件隨機場還可以由矩陣表示。假設P w ( y ∣ x ) P_w(y|x) P w ( y ∣ x ) 是由內積形式給出的線性鏈條件隨機場,表示對給定觀測序列 x ,相應的標記序列 y 的條件概率。引進特殊的起點和終點狀態標記 y 0 = s t a r t , y n + 1 = s t o p y_0 = start , y_{n+1} = stop y 0 = s t a r t , y n + 1 = s t o p ,這時P w ( y ∣ x ) P_w(y|x) P w ( y ∣ x ) 可以通過矩陣形式表示。
對觀測序列 x 的每一個位置 i = 1 , 2 , … , n + 1 i=1,2,…,n+1 i = 1 , 2 , … , n + 1 ,定義一個 m 階矩陣(m 是標記 yi 取值的個數,因爲 x 是給定的,$ i-1 和位置 i 各有 m 種可能,所以是 m 階矩陣):
M i ( x ) = { M i ( y i − 1 , y i ∣ x ) } M i ( y i − 1 , y i ∣ x ) = exp { W i ( y i − 1 , y i ∣ x ) } M i ( y i − 1 , y i ∣ x ) = ∑ k = 1 K w k ⋅ f k ( y i − 1 , y i , x , i ) \begin{aligned} M_i(x) &= \left \{ M_i(y_{i-1},y_i|x)\right \} \\ M_i(y_{i-1},y_i|x)&= \exp \left \{ W_i(y_{i-1} ,y_i|x)\right \}\\ M_i(y_{i-1},y_i|x)&= \sum_{k=1}^Kw_k \cdot f_k(y_{i-1},y_i,x,i) \end{aligned} M i ( x ) M i ( y i − 1 , y i ∣ x ) M i ( y i − 1 , y i ∣ x ) = { M i ( y i − 1 , y i ∣ x ) } = exp { W i ( y i − 1 , y i ∣ x ) } = k = 1 ∑ K w k ⋅ f k ( y i − 1 , y i , x , i )
其實矩陣定義了一個 狀態 yi−1 的 m 種狀態到 yi 的 m 種狀態的轉移的概率:
M i ( y i − 1 , y i ∣ x ) = exp { ∑ k λ k f k ( y i − 1 , y i , x , i ) } = exp { ∑ k λ k t k ( y i − 1 , y i , x , i ) + ∑ l μ l s l ( y i , x , i ) } \begin{aligned} M_i(y_{i-1} ,y_i|x) &= \exp\left\{ \sum_k\lambda_kf_k(y_{i-1},y_i,x,i)\right\} \\ &=\exp\left\{ \sum_k\lambda_kt_k(y_{i-1},y_i,x,i) + \sum_l\mu_l s_l(y_i,x,i) \right\} \end{aligned} M i ( y i − 1 , y i ∣ x ) = exp { k ∑ λ k f k ( y i − 1 , y i , x , i ) } = exp { k ∑ λ k t k ( y i − 1 , y i , x , i ) + l ∑ μ l s l ( y i , x , i ) }
舉例來說,當 m = 3 時,除了 i =1 或者 i = n-1 ,每個矩陣 M i ( x ) ∈ R 3 × 3 M_i(x) \in\mathbb{R}^{3 \times 3} M i ( x ) ∈ R 3 × 3 , 如下圖所示
矩陣的形式類似於 HMM 中的轉移矩陣,代表了狀態之間轉移的概率,其形式是這樣的:
M 1 ( x ) = [ M 1 ( y 0 , y 1 ∣ x ) M 1 ( y 0 , y 3 ∣ x ) M 1 ( y 0 , y 3 ∣ x ) ] M 2 ( x ) = [ M 2 ( y 1 , y 1 ∣ x ) M 2 ( y 1 , y 2 ∣ x ) M 2 ( y 1 , y 3 ∣ x ) M 2 ( y 2 , y 1 ∣ x ) M 2 ( y 2 , y 2 ∣ x ) M 2 ( y 2 , y 3 ∣ x ) M 2 ( y 3 , y 1 ∣ x ) M 2 ( y 3 , y 2 ∣ x ) M 2 ( y 3 , y 3 ∣ x ) ] M i ( x ) h a s t h e s a m e f o r m w i t h M 2 ( X ) , i = 3 , . . . , n M n + 1 ( x ) = [ M n + 1 ( y 1 , y n ∣ x ) M n + 1 ( y 2 , y n ∣ x ) M n + 1 ( y 3 , y n ∣ x ) ] \begin{aligned} M_1(x) &= \begin{bmatrix} M_1(y_0,y_1|x) & M_1(y_0,y_3|x) &M_1(y_0,y_3|x) \end{bmatrix} \\ \\ M_2(x) &=\begin{bmatrix} M_2(y_1,y_1|x) & M_2(y_1,y_2|x) & M_2(y_1,y_3|x)\\ M_2(y_2,y_1|x) & M_2(y_2,y_2|x) & M_2(y_2,y_3|x)\\ M_2(y_3,y_1|x) & M_2(y_3,y_2|x) & M_2(y_3,y_3|x) \end{bmatrix} \\ \\ M_i(x) \ &\mathbf{has \ the \ same \ form \ with} \ M_2(X), \ i = 3,...,n\\ \\ M_{n+1}(x) &=\begin{bmatrix} M_{n+1}(y_1,y_n|x)& \\ M_{n+1}(y_2,y_n|x) & \\ M_{n+1}(y_3,y_n|x)& \end{bmatrix} \\ \end{aligned} M 1 ( x ) M 2 ( x ) M i ( x ) M n + 1 ( x ) = [ M 1 ( y 0 , y 1 ∣ x ) M 1 ( y 0 , y 3 ∣ x ) M 1 ( y 0 , y 3 ∣ x ) ] = ⎣ ⎡ M 2 ( y 1 , y 1 ∣ x ) M 2 ( y 2 , y 1 ∣ x ) M 2 ( y 3 , y 1 ∣ x ) M 2 ( y 1 , y 2 ∣ x ) M 2 ( y 2 , y 2 ∣ x ) M 2 ( y 3 , y 2 ∣ x ) M 2 ( y 1 , y 3 ∣ x ) M 2 ( y 2 , y 3 ∣ x ) M 2 ( y 3 , y 3 ∣ x ) ⎦ ⎤ h a s t h e s a m e f o r m w i t h M 2 ( X ) , i = 3 , . . . , n = ⎣ ⎡ M n + 1 ( y 1 , y n ∣ x ) M n + 1 ( y 2 , y n ∣ x ) M n + 1 ( y 3 , y n ∣ x ) ⎦ ⎤
這樣,給定觀測序列x,標記序列 y 的非規範化概率可以通過 n+1 個矩陣的乘積 ∏ i = 1 n + 1 M i ( y i − 1 , y i ∣ x ) \prod_{i=1}^{n+1}M_i(y_{i-1},y_i|x) ∏ i = 1 n + 1 M i ( y i − 1 , y i ∣ x ) 表示,於是,條件概率 Pw(y|x) 是:
P w ( y ∣ x ) = 1 Z w ( x ) ∏ i = 1 n + 1 M i ( y i − 1 , y i ∣ x ) P_w(y|x) = \frac{1}{Z_w(x)} \prod_{i=1}^{n+1} M_i(y_{i-1},y_i|x) P w ( y ∣ x ) = Z w ( x ) 1 i = 1 ∏ n + 1 M i ( y i − 1 , y i ∣ x )
其中,Zw(x) 爲規範化因子,是 n+1 個矩陣的乘積的 (start,stop) 元素:
Z w ( x ) = { M 1 ( x ) , M 2 ( x ) … M n + 1 ( x ) } s t a r t s t o p Z_w(x) = \left \{M_1(x),M_2(x)…M_{n+1}(x) \right \} _{start}^{stop} Z w ( x ) = { M 1 ( x ) , M 2 ( x ) … M n + 1 ( x ) } s t a r t s t o p
注意,y 0 = s t a r t y_0 = start y 0 = s t a r t 與y n + 1 = s t o p y_{n+1} = stop y n + 1 = s t o p 表示開始狀態與終止狀態,規範化因子 Zw(x) 是以 start 爲起點 stop 爲終點通過狀態的所有路徑的非規範化概率 y1,y2,…,yn 之和。
這裏的 M 矩陣像極了 HMM 中的轉移概率矩陣,因爲鏈式 CRF 中只有相鄰兩個節點間纔有連接邊。
條件隨機場的概率計算問題
條件隨機場的概率計算問題是給定條件隨機場 P(Y|X) ,輸入序列 x 和輸出序列 y ,計算條件概率 P ( Y i − 1 = y i − 1 Y i = y i ∣ x ) P(Y_{i-1} = y_{i-1}Y_i = y_i|x) P ( Y i − 1 = y i − 1 Y i = y i ∣ x ) ,P ( Y i = y i ∣ x ) P(Y_i = y_i|x) P ( Y i = y i ∣ x ) 以及相應的數學期望的問題。爲了方便起見,像 HMM 那樣,引進前向-後向向量,遞歸地計算以上概率及期望值。這樣的算法稱爲前向-後向算法。
前向-後向算法
對每個指標i = 0 , 1 , … , n + 1 i = 0,1,…,n+1 i = 0 , 1 , … , n + 1 ,定義前向向量 a i ( x ) a_i(x) a i ( x ) ,對於起始狀態 i=0:
a 0 ( y ∣ x ) = { 1 , y = s t a r t 0 , e l s e a_0(y|x) = \left \{ \begin{aligned} &1, \ \ y = start \\ &0, \ \ else \end{aligned}\right. a 0 ( y ∣ x ) = { 1 , y = s t a r t 0 , e l s e
對於之後的狀態i = 1 , 2 , … , n + 1 i = 1,2,…,n+1 i = 1 , 2 , … , n + 1 ,遞推公式爲:
a i T ( y i ∣ x ) = a i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) a_i^T(y_i|x) = a^T_{i-1}(y_{i-1}|x)M_i(y_{i-1},y_i|x) a i T ( y i ∣ x ) = a i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x )
這裏M i ( y i − 1 , y i ∣ x ) M_i(y_{i-1},y_i|x) M i ( y i − 1 , y i ∣ x ) 對應的是轉移矩陣中的一列,轉爲向量形式可表示爲
a i T ( x ) = a i − 1 T ( x ) M i ( x ) a^T_i(x) = a^T_{i-1}(x)M_i(x) a i T ( x ) = a i − 1 T ( x ) M i ( x )
a i ( y i ∣ x ) a_i(y_i|x) a i ( y i ∣ x ) 表示在位置 i 的標記是 yi 並且到位置 i 的前部分標記序列的非規範化概率,yi 可取的值有 m 個,所以 ai(x) 是 m 維列向量。
同樣,對每個指標i = 0 , 1 , … , n + 1 i = 0,1,…,n+1 i = 0 , 1 , … , n + 1 ,定義後向向量β i ( x ) \beta_i(x) β i ( x ) :
β n + 1 ( y n + 1 ∣ x ) = { 1 , y n + 1 = s t o p 0 , e l s e \beta_{n+1}(y_{n+1}|x) = \left \{ \begin{aligned} &1, \ \ y_{n+1} = stop \\ &0, \ \ else \end{aligned}\right. β n + 1 ( y n + 1 ∣ x ) = { 1 , y n + 1 = s t o p 0 , e l s e
往前遞推:
β i ( y i ∣ x ) = M i ( y i , y i + 1 ∣ x ) β i + 1 ( y i + 1 ∣ x ) \beta_i(y_i|x) = M_i(y_i,y_{i+1}|x)\beta_{i+1}(y_{i+1}|x) β i ( y i ∣ x ) = M i ( y i , y i + 1 ∣ x ) β i + 1 ( y i + 1 ∣ x )
又可以表示爲:
β i ( x ) = M i + 1 ( x ) β i + 1 ( x ) \beta_i(x) = M_{i+1}(x) \beta_{i+1}(x) β i ( x ) = M i + 1 ( x ) β i + 1 ( x )
β i ( y i ∣ x ) \beta_i(y_i|x) β i ( y i ∣ x ) 表示在位置 i 的標記爲 y i y_i y i ,並且從 i+1 到 n 的後部分標記序列的非規範化概率。
由前向-後向向量定義不難得到:
Z ( x ) = a n T ( x ) ⋅ 1 = 1 T ⋅ β 1 ( x ) Z(x) = a_n^T(x) \cdot \mathbf{1} = \mathbf{1}^T \cdot \beta_1(x) Z ( x ) = a n T ( x ) ⋅ 1 = 1 T ⋅ β 1 ( x )
這裏,1 是元素均爲 1 的 m 維列向量。
概率計算
按照前向-後向向量的定義,很容易計算標記序列在位置 i 是標記 yi 的條件概率和在位置 i-1 與 i 是標記y i − 1 y_{i-1} y i − 1 和y i y_{i} y i 的條件概率:
P ( Y i = y i ∣ x ) = a i T ( y i ∣ x ) β i ( y i ∣ x ) Z ( x ) P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) = a i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) \begin{aligned} P(Y_i= y_i|x) &= \frac{a_i^T(y_i|x) \beta_i(y_i|x)}{Z(x)} \\ P(Y_{i-1} = y_{i-1} ,Y_i= y_i|x) &=\frac{a_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)} \end{aligned} P ( Y i = y i ∣ x ) P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) = Z ( x ) a i T ( y i ∣ x ) β i ( y i ∣ x ) = Z ( x ) a i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x )
其中 Z ( x ) = a n T ( x ) ⋅ 1 Z(x) = a_n^T(x) \cdot \mathbf{1} Z ( x ) = a n T ( x ) ⋅ 1
期望值的計算
利用前向-後向向量,可以計算特徵函數關於聯合分佈 P(X,Y) 和條件分佈 P(Y|X) 的數學期望。
特徵函數 { f k } k = 1 K \left \{ f_k \right \}_{k=1}^K { f k } k = 1 K 關於條件分佈 P(Y|X) 的數學期望是
E p ( Y ∣ X ) [ f k ] = ∑ y P ( y ∣ x ) f k ( y , x ) = ∑ i = 1 n + 1 ∑ y i − 1 y i f k ( y i − 1 , y i , x , i ) a i − 1 T M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) \begin{aligned} E_{p(Y|X)}[f_k] &= \sum_yP(y|x)f_k(y,x) \\ &=\sum_{i=1}^{n+1}\sum_{y_{i-1}\ y_i}f_k(y_{i-1},y_i,x,i) \frac{a_{i-1}^TM_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)} \end{aligned} E p ( Y ∣ X ) [ f k ] = y ∑ P ( y ∣ x ) f k ( y , x ) = i = 1 ∑ n + 1 y i − 1 y i ∑ f k ( y i − 1 , y i , x , i ) Z ( x ) a i − 1 T M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x )
其中 Z ( x ) = a n T ( x ) ⋅ 1 Z(x) = a_n^T(x) \cdot \mathbf{1} Z ( x ) = a n T ( x ) ⋅ 1
假設經驗分佈爲 P˜(X) ,特徵函數 { f k } k = 1 K \left \{ f_k \right \}_{k=1}^K { f k } k = 1 K 關於聯合分佈 P(Y|X) 的數學期望是:
E P ( X , Y ) [ f k ] = ∑ x , y P ( x , y ) ∑ i = 1 n + 1 f k ( y i − 1 . y i , x , i ) = ∑ x P ~ ( x ) ∑ y P ( y ∣ x ) ∑ i = 1 n + 1 f k ( y i − 1 , y i x , i ) = ∑ x P ~ ( x ) ∑ i = 1 n + 1 ∑ y i − 1 y i f k ( y i − 1 , y i x , i ) a i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) \begin{aligned} E_{P(X,Y)}[f_k] &= \sum_{x,y}P(x,y)\sum_{i=1}^{n+1}f_k(y_{i-1}.y_i,x,i) \\ &= \sum_x\widetilde{P}(x) \sum_yP(y|x)\sum_{i=1}^{n+1}f_k(y_{i-1,}y_ix,i) \\ &= \sum_x\widetilde{P}(x) \sum_{i=1}^{n+1} \sum_{y_{i-1} \ y_i}f_k(y_{i-1,}y_ix,i)\frac{a_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x) \beta_i(y_i|x)}{Z(x)} \end{aligned} E P ( X , Y ) [ f k ] = x , y ∑ P ( x , y ) i = 1 ∑ n + 1 f k ( y i − 1 . y i , x , i ) = x ∑ P ( x ) y ∑ P ( y ∣ x ) i = 1 ∑ n + 1 f k ( y i − 1 , y i x , i ) = x ∑ P ( x ) i = 1 ∑ n + 1 y i − 1 y i ∑ f k ( y i − 1 , y i x , i ) Z ( x ) a i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x )
其中 Z ( x ) = a n T ( x ) ⋅ 1 Z(x) = a_n^T(x) \cdot \mathbf{1} Z ( x ) = a n T ( x ) ⋅ 1
這個式子是特徵函數數學期望的一般計算公式。對於轉移特徵t k ( y i − 1 , y i , x , i ) , k = 1 , 2 , … , K t_k(y_{i-1},y_i,x,i) ,k=1,2,…,K t k ( y i − 1 , y i , x , i ) , k = 1 , 2 , … , K ,可以將式中的f k f_k f k 換成 t k t_k t k ;對於狀態特徵,可以將式中的 f k f_k f k 換成 s l s_l s l , 表示爲s l ( y i , x , i ) , k = K 1 + 1 ; l = 1 , 2 , … , K 2 s_l(y_i,x,i),k = K_1+1;l=1,2,…,K_2 s l ( y i , x , i ) , k = K 1 + 1 ; l = 1 , 2 , … , K 2 。
有了這些式子,對於給定的觀測序列 x 與標記序列 y ,可以通過一次前向掃描計算 a i a_i a i 及Z ( x ) Z(x) Z ( x ) ,通過一次後向掃描計算β i \beta_i β i ,從而計算所有的概率和特徵的期望。
條件隨機場的訓練
本節討論給定訓練數據集估計條件隨機場模型參數的問題,即條件隨機場的學習問題。條件隨機場模型實際上是定義在時序數據上的對數線形模型,其學習方法包括極大似然估計和正則化的極大似然估計。具體的優化實現算法有改進的迭代尺度法IIS、梯度下降法以及 L-BFGS 算法。(crf++ 採用了 L-BFGS 優化的方式,所以着重看這種訓練方法即可)
L-BFGS算法
對於條件隨機場模型:
P w ( y ∣ x ) = exp { ∑ k = 1 K w k f k ( x , y ) } ∑ y { exp ∑ i = 1 n w i f i ( x , y ) } P_w(y|x) = \frac{\exp \left \{ \sum_{k=1}^K w_kf_k(x,y)\right \}}{ \sum_y \left \{ \exp \sum_{i=1}^n w_if_i(x,y)\right \}} P w ( y ∣ x ) = ∑ y { exp ∑ i = 1 n w i f i ( x , y ) } exp { ∑ k = 1 K w k f k ( x , y ) }
已知訓練數據集,由此可知經驗概率分佈 P ~ ( X , Y ) \widetilde{P}(X,Y) P ( X , Y ) 可以通過極大化訓練數據的對數似然函數來求模型參數,訓練數據的對數似然函數爲:
L ( w ) = L P ~ ( P w ) = log ∏ x , y P w ( y ∣ x ) P ~ ( x , y ) = ∑ x , y P ~ ( x , y ) log P w ( y ∣ x ) L(w) = L_{\widetilde{P}}(P_w) = \log \prod_{x,y}P_w(y|x)^{\widetilde{P}(x,y)} = \sum_{x,y}\widetilde{P}(x,y) \log P_w(y|x) L ( w ) = L P ( P w ) = log x , y ∏ P w ( y ∣ x ) P ( x , y ) = x , y ∑ P ( x , y ) log P w ( y ∣ x )
接下來給出 log 似然函數:
L ( w ) = ∑ x , y P ~ ( x , y ) log P w ( y ∣ x ) = ∑ x , y { P ~ ( x , y ) ∑ k = 1 K w k f k ( y , x ) − P ~ ( x , y ) log Z w ( x ) } = ∑ x , y P ~ ( x , y ) ∑ k = 1 K w k f k ( x , y ) − ∑ x P ~ ( x ) log ∑ y exp { ∑ i = 1 n w i f i ( x , y ) } \begin{aligned} L(w) &= \sum_{x,y} \widetilde{P}(x,y) \log P_w(y|x) \\ &= \sum_{x,y} \left \{ \widetilde{P}(x,y)\sum_{k=1}^Kw_kf_k(y,x)-\widetilde{P}(x,y) \log Z_w(x) \right \} \\ &= \sum_{x,y} \widetilde{P}(x,y) \sum_{k=1}^K w_kf_k(x,y) - \sum_x\widetilde{P}(x)\log\sum_y\exp\left \{ \sum_{i=1} ^nw_if_i(x,y)\right \} \end{aligned} L ( w ) = x , y ∑ P ( x , y ) log P w ( y ∣ x ) = x , y ∑ { P ( x , y ) k = 1 ∑ K w k f k ( y , x ) − P ( x , y ) log Z w ( x ) } = x , y ∑ P ( x , y ) k = 1 ∑ K w k f k ( x , y ) − x ∑ P ( x ) log y ∑ exp { i = 1 ∑ n w i f i ( x , y ) }
對目標進行 MLE 等價於極小化以下優化目標函數:
min w f ( w ) = ∑ x P ~ ( x ) log ∑ y exp { ∑ i = 1 n w i f i ( x , y ) } − ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) \min_w f(w) = \sum_x\widetilde{P}(x) \log \sum_y \exp \left \{ \sum_{i=1}^n w_if_i(x,y)\right \} -\sum_{x,y}\widetilde{P}(x,y)\sum_{i=1}^nw_i f_i(x,y) w min f ( w ) = x ∑ P ( x ) log y ∑ exp { i = 1 ∑ n w i f i ( x , y ) } − x , y ∑ P ( x , y ) i = 1 ∑ n w i f i ( x , y )
其一階梯度函數在 BFGS 算法的過程中有用到,形式如下:
g ( w ) = { ∂ f ( w ) ∂ w 1 , ∂ f ( w ) ∂ w 2 , … , ∂ f ( w ) ∂ w n } g(w) = \left \{ \frac{\partial f(w)}{\partial w_1},\frac{\partial f(w)}{\partial w_2},…,\frac{\partial f(w)}{\partial w_n} \right \} g ( w ) = { ∂ w 1 ∂ f ( w ) , ∂ w 2 ∂ f ( w ) , … , ∂ w n ∂ f ( w ) }
具體其形式如下:
g ( w ) = ∑ x , y P ~ ( x ) P w ( y ∣ x ) f ( x , y ) − E P ~ ( f ) = E P ( f ) − E P ~ ( f ) g(w) = \sum_{x,y}\widetilde{P}(x)P_w(y|x)f(x,y)-E_{\widetilde{P}}(f) = E_P(f) - E_{\widetilde{P}}(f) g ( w ) = x , y ∑ P ( x ) P w ( y ∣ x ) f ( x , y ) − E P ( f ) = E P ( f ) − E P ( f )
可以看到,這是要使得真實期望與經驗期望的差值儘可能小,也正是我們的初衷,還可以爲目標函數加上一個權重爲1 / δ 2 1/ \delta^2 1 / δ 2 的 L2 正則項(貝葉斯先驗),因此 g(w) 的形式變爲
g ( w ) = E P ( f ) − E P ~ ( f ) + w δ 2 g(w) = E_P(f) - E_{\widetilde{P}}(f) + \frac{w}{\delta^2} g ( w ) = E P ( f ) − E P ( f ) + δ 2 w
總結一下便得到求解 CRF 的 BFGS 算法:
輸入:特徵函數f 1 , f 2 , … , f n f_1,f_2,…,f_n f 1 , f 2 , … , f n ;經驗分佈 P ~ ( X , Y ) \widetilde{P}(X,Y) P ( X , Y ) ;
輸出:最優參數值 w ^ \hat{w} w ^ ;最優模型P w ^ ( y ∣ x ) P_{\hat{w}}(y|x) P w ^ ( y ∣ x ) 。
(1) 選定初始點 w ( 0 ) w^{(0)} w ( 0 ) ,取 B0 爲正定對稱矩陣,置 k=0;
(2) 計算g k = g ( w ( k ) ) g_k = g(w^{(k)}) g k = g ( w ( k ) ) 。若 gk=0 ,則停止計算;否則轉(3)
(3) 由擬牛頓條件 B k p k = – g k B_kp_k = –g_k B k p k = – g k 求出 p k p_k p k
(4) 線性搜索:求λ k \lambda_k λ k 使得:
f ( w ( k ) + λ k p k ) = min λ ≥ 0 f ( w ( k ) + λ p k ) f(w^{(k)} + \lambda_kp_k) = \min_{\lambda \ge 0}f(w^{(k)} + \lambda p_k) f ( w ( k ) + λ k p k ) = λ ≥ 0 min f ( w ( k ) + λ p k )
(5) 置w ( k + 1 ) = w ( k ) + λ k p k w^{(k+1)} = w^{(k)} + \lambda_k p_k w ( k + 1 ) = w ( k ) + λ k p k
(6) 計算 g k + 1 = g ( w ( k + 1 ) ) g_{k+1} = g(w^{(k+1)}) g k + 1 = g ( w ( k + 1 ) ) ,若 g k = 0 g_k = 0 g k = 0 則停止計算;否則,按下式求出 B k + 1 B_{k+1} B k + 1 :
B k + 1 = B k + y k y k T y k T δ k – B k δ k δ k T B k δ k T B k δ k B_{k+1} = B_k + \frac{y_ky_k^T}{y_k^T \delta_k} – \frac{B_k \delta_k \delta_k^TB_k}{\delta_k^TB_k\delta_k} B k + 1 = B k + y k T δ k y k y k T – δ k T B k δ k B k δ k δ k T B k
其中:
y k = g k + 1 − g k , δ k = w ( k + 1 ) − w ( k ) y_k = g_{k+1}-g_k , \ \ \delta_k = w^{(k+1)} - w^{(k)} y k = g k + 1 − g k , δ k = w ( k + 1 ) − w ( k )
(7) 置 k = k+1,轉(3)
條件隨機場的預測算法
CRF 的預測問題是給定模型參數和輸入序列(觀測序列)x, 求條件概率最大的輸出序列(標記序列)y∗,即對觀測序列進行標註。條件隨機場的預測算法同 HMM 還是維特比算法,根據 CRF模型可得:
y ∗ = arg max y P w ( y ∣ x ) = arg max y exp { w ⋅ F ( y , x ) } Z w ( x ) = arg max y exp { w ⋅ F ( y , x ) } = arg max y w ⋅ F ( y , x ) \begin{aligned} y^* &= \arg \max_yP_w(y|x) \\ &= \arg \max_y\frac{ \exp \left \{w \cdot F(y,x) \right\}}{Z_w(x)} \\ &= \arg \max_y \exp \left \{w \cdot F(y,x) \right\} \\ &= \arg \max_y \ w \cdot F(y,x) \end{aligned} y ∗ = arg y max P w ( y ∣ x ) = arg y max Z w ( x ) exp { w ⋅ F ( y , x ) } = arg y max exp { w ⋅ F ( y , x ) } = arg y max w ⋅ F ( y , x )
於是,條件隨機場的預測問題成爲求非規範化概率最大的最優路徑問題
arg max y w ⋅ F ( y , x ) \arg \max_y \ w \cdot F(y,x) arg y max w ⋅ F ( y , x )
其中
F i ( y i − 1 , y i , x ) = { f 1 ( y i − 1 , y i , x ) , f 2 ( y i − 1 , y i , x ) , … , F K ( y i − 1 , y i , x ) } T F_i(y_{i-1},y_i,x) = \left \{f_1(y_{i-1},y_i,x),f_2(y_{i-1},y_i,x),…,F_K(y_{i-1},y_i,x) \right \}^T F i ( y i − 1 , y i , x ) = { f 1 ( y i − 1 , y i , x ) , f 2 ( y i − 1 , y i , x ) , … , F K ( y i − 1 , y i , x ) } T
爲局部特徵向量。
下面敘述維特比算法。首先求出位置 1 的各個標記 j=1,2,…,m 的非規範化概率:
δ 1 ( j ) = w ⋅ F 1 ( y 0 = s t a r t , y 1 = j , x ) \delta_1(j) = w \cdot F_1(y_0 = start,y_1 = j,x) δ 1 ( j ) = w ⋅ F 1 ( y 0 = s t a r t , y 1 = j , x )
一般地,由遞推公式,求出到位置 i 的各個標記 l=1,2,…m 的非規範化概率的最大值,同時記錄非規範化概率最大值的路徑:
δ i ( l ) = max 1 ≤ j ≤ m { δ i ( l − 1 ) + w ⋅ F i ( y i − 1 = j , y i = l , x ) } , l = 1 , 2 , . . . , m Ψ i ( l ) = arg max 1 ≤ j ≤ m { δ i − 1 ( l ) + w ⋅ F i ( y i − 1 = j , y i = l , x ) } , l = 1 , 2 , . . . , m \begin{aligned} \delta_i(l) &= \max_{1 \le j \le m} \left \{\delta_i(l-1) + w \cdot F_i(y_{i-1} = j,y_i = l,x) \right\}, &\ l= 1,2,...,m\\ \Psi_i(l) &=\arg\max_{1 \le j \le m} \left \{\delta_{i-1}(l) + w \cdot F_i(y_{i-1} = j,y_i = l,x) \right\}, & \ l= 1,2,...,m \end{aligned} δ i ( l ) Ψ i ( l ) = 1 ≤ j ≤ m max { δ i ( l − 1 ) + w ⋅ F i ( y i − 1 = j , y i = l , x ) } , = arg 1 ≤ j ≤ m max { δ i − 1 ( l ) + w ⋅ F i ( y i − 1 = j , y i = l , x ) } , l = 1 , 2 , . . . , m l = 1 , 2 , . . . , m
直到i = n 時終止。這時求得非規範化概率的最大值爲
max y ( w ⋅ F ( y , x ) ) = max 1 ≤ j ≤ m δ n ( j ) \max_y(w \cdot F(y,x)) = \max_{1 \le j \le m} \delta_n(j) y max ( w ⋅ F ( y , x ) ) = 1 ≤ j ≤ m max δ n ( j )
及最優路徑的終點
y n ∗ = arg max 1 ≤ j ≤ m δ n ( j ) y_n^* = \arg \max_{1 \le j \le m} \delta _n(j) y n ∗ = arg 1 ≤ j ≤ m max δ n ( j )
由此最優路徑終點返回,不斷的找到各個時刻的最優值:
y i ∗ = Ψ i + 1 ( y i + 1 ∗ ) , i = n − 1 , n − 2 , … , 1 y_i^* = \Psi_{i+1}(y^*_{i+1}) , \ i = n-1,n-2,…,1 y i ∗ = Ψ i + 1 ( y i + 1 ∗ ) , i = n − 1 , n − 2 , … , 1
以上便是一條最優路徑了,求得該最優路徑:
y ∗ = ( y 1 ∗ , y 2 ∗ , … , y n ∗ ) T y^* = (y_1^*,y_2^*,…,y_n^*)^T y ∗ = ( y 1 ∗ , y 2 ∗ , … , y n ∗ ) T
這便爲條件隨機場預測的維特比算法。