【ML-13-6】條件隨機場的三個問題(CRF-Conditional Random Field)


目錄

  1. 條件隨機場CRF—— 前向后向算法評估標記序列概率
  2. 條件隨機場CRF—— 模型參數學習
  3. 條件隨機場CRF—— 維特比算法解碼

一、條件隨機場CRF—— 前向后向算法評估標記序列概率

   linear-CRF第一個問題是評估推斷(Inference),即給定 linear-CRF的條件概率分布P(y|x), 在給定輸入序列x和輸出序列y時,計算條件概率P(yi|x)和P(yi−1,yi|x)以及對應的期望。

1.1 linear-CRF的前向后向概率概述

要計算條件概率,我們也可以使用和HMM類似的方法(也是分成左右兩個部分,分別進行求解),使用前向后向算法來完成。首先我們來看前向概率的計算。

我們定義 αi(yi|x)表示序列位置 i 的標記是 時,在位置 i 之前的部分標記序列的非規范化概率。之所以是非規范化概率是因為我們不想加入一個不影響結果計算的規范化因子Z(x) 在分母里面。

這個式子定義了在給定 時,從的非規范化概率。

這樣,我們很容易得到序列位置i+1 的標記是 時,在位置 i+1之前的部分標記序列的非規范化概率 的遞推公式:

在起點處,我們定義:

假設我們可能的標記總數是m , 則yi 的取值就有m個,我們用 表示這m個值組成的前向向量如下:

同時用矩陣Mi(x) 表示由Mi(yi−1, yi|x) 形成的 m × m 階矩陣:

這樣遞推公式可以用矩陣乘積表示:

同樣的。我們定義βi(yi|x) 表示序列位置 i 的標記是yi 時,在位置 i 之后的從 i+1 到 n 的部分標記序列的非規范化概率。

這樣,我們很容易得到序列位置 i+1 的標記是 y_{i+1} 時,在位置 i之后的部分標記序列的非規范化概率 βi(yi|x)的遞推公式:

在終點處,我們定義:

如果用向量表示,則有

由於規范化因子Z(x) 的表達式是:

也可以用向量來表示 Z(x):

其中, 1m 維全1向量。

1.2 linear-CRF的前向后向概率計算

有了前向后向概率的定義和計算方法,我們就很容易計算序列位置i 的標記是y_i 時的條件概率 P(yi|x):

也容易計算序列位置 i的標記是yi ,位置 i+1 的標記是 時的條件概率 P(yi−1, yi|x) :

注意到我們上面的非規范化概率 Mi(yi-1, yi|x)起的作用和HMM中的隱藏狀態轉移概率很像。但是這兒的概率是非規范化的,也就是不強制要求所有的狀態的概率和為1。而HMM中的隱藏狀態轉移概率也規范化的。從這一點看,linear-CRF對序列狀態轉移的處理要比HMM靈活。

1.3 linear-CRF的期望計算

有了上一節計算的條件概率,我們也可以很方便的計算聯合分布 P (x, y) 與條件分布 P (y|x)的期望

特征函數 fk(x, y) 關於條件分布 P (y|x) 的期望表達式是:

同樣可以計算聯合分布 P (x, y) 的期望:

假設一共有 K個特征函數,則 k = 1, 2, . . . K

二、條件隨機場CRF—— 模型參數學習

   linear-CRF第二個問題是學習(Learning),即給定訓練數據集X和Y,學習linear-CRF的模型參數wk和條件概率Pw(y|x),這個問題的求解比HMM的學習算法簡單的多,普通的梯度下降法,擬牛頓法都可以解決。

2.1 linear-CRF模型參數學習思路

在linear-CRF模型參數學習問題中,我們給定訓練數據集X 和對應的標記序列 Y, K個特征函數 ,【這里是特征函數的規則,可以舉個小例子,fk(y2=名詞,y3=動詞,X,3)=1或0】需要學習linear-CRF的模型參數概率 ,其中條件概率 和模型參數 滿足一下關系:

所以我們的目標就是求出所有的模型參數 ,這樣條件概率 可以從上式計算出來。

求解這個問題有很多思路,比如梯度下降法,牛頓法,擬牛頓法。同時,這個模型中 的表達式,也可以使用最大熵模型中使用的改進的迭代尺度法(improved iterative scaling, IIS)來求解。

下面我們只簡要介紹用梯度下降法的求解思路

2.2 linear-CRF模型參數學習之梯度下降法求解

在使用梯度下降法求解模型參數之前,我們需要定義我們的優化函數,一般極大化條件分布 的對數似然函數如下

為經驗分布,可以從先驗知識和訓練集樣本中得到,這點和最大熵模型類似。為了使用梯度下降法,我們現在極小化如下:

W求導可以得到:

有了W 的導數表達書,就可以用梯度下降法來迭代求解最優的 W了。注意在迭代過程中,每次更新W 后,需要同步更新 ,以用於下一次迭代的梯度計算 。

(PS:實際的使用中,梯度上升法收斂速度太慢,我們會采用其他的計算方式,這里僅做理論指引了)。

三、條件隨機場CRF——維特比算法解碼

  linear-CRF第三個問題是解碼(Decoding),即給定 linear-CRF的條件概率分布P(y|x),和輸入觀察序列x, 計算使條件概率最大的輸出序列y。類似於HMM,使用維特比算法可以很方便的解決這個問題。

3.1 linear-CRF模型維特比算法解碼思路

這個解碼算法最常用的還是和HMM解碼類似的維特比算法。HMM維特比算法解碼隱藏狀態序列中用於HMM解碼。這里也同樣采用這種方法。

維特比算法本身是一個動態規划算法,利用了兩個局部狀態和對應的遞推公式,從局部遞推到整體,進而得解。對於具體不同的問題,僅僅是這兩個局部狀態的定義和對應的遞推公式不同而已。由於在之前已詳述維特比算法,這里就是做一個簡略的流程描述。

對於linear-CRF中的維特比算法,我們的第一個局部狀態定義為 ,表示在位置 i標記 l 各個可能取值(1,2...m)對應的非規范化概率的最大值。之所以用非規范化概率是,規范化因子 Z(x)不影響最大值的比較。根據 的定義,我們遞推在位置i+1 標記 l 的表達式為:

和HMM的維特比算法類似,我們需要用另一個局部狀態來記錄使達到最大的位置 i 的標記取值,這個值用來最終回溯最優解, 的遞推表達式為:

3.2 linear-CRF模型維特比算法流程

現在我們總結下 linear-CRF模型維特比算法流程:

輸入:模型的 K個特征函數,和對應的K個權重。觀測序列x = (x1, x2, . . . xn) ,可能的標記個數m

輸出:最優標記序列y = (y1, y2, . . . yn)

1) 初始化:

2) 對於i = 1, 2...n − 1 ,進行遞推:

3) 終止:

4)回溯:

最終得到最優標記序列

3.3 linear-CRF模型維特比算法實例

下面用一個具體的例子來描述 linear-CRF模型維特比算法:
例子的模型和CRF系列【ML-13-5】中一樣,都來源於《統計學習方法》。假設輸入的都是三個詞的句子,即X = (X1, X2, X3) ,輸出的詞性標記為Y = (Y1, Y2, Y3) Y ∈ {1(名詞),2(動詞)} ,其中這里只標記出取值為1的特征函數如下:

求標記(1,2,2)--【這里式觀測序列x】的最可能的標記序列。

求解

首先初始化( ,表示在位置來記錄使達到最大的位置 i 的標記取值):

接下來開始遞推,先看位置2的:

說明:以它在序列位置2的取值為1, 那么此時有兩種情況,即:a) 它在位置1的取值為1,b)它在位置1的取值為2。a的情況:在位置1的取值為1, 那么對應y1=1,y2=1, 最終可以命中的特征函數是:

因此a)情況下,它的取值是δ1(1)+t2λ2+μ3s3

同理可以得到b)情況下取值是δ1(2)+t4λ4+μ3s3

最終找到a)和b)的最大值作為δ2(1)的值。 】

再看位置3的:

最終得到,遞推回去,得到:

即最終的結果為(1, 2, 1) ,即標記為(名詞,動詞,名詞)。

參考文獻

【1】劉建平博客:https://www.cnblogs.com/pinard/p/7055072.html#!comments

【2】劉建平博客:https://www.cnblogs.com/pinard/p/7068574.html#!comments


免責聲明!

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



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