條件隨機場(2)——概率計算
1.CRF簡化表示
先回顧一下線性鏈CRF引數化形式
和都可以表示為隨機變數的函式,因此,可以將和統一成
其中,是轉移特徵的個數,是狀態特徵的個數。特徵函式所代表的特徵集合一共有K個值,。
用來表示特徵的權重,是和的集合,k=1,2,3,…,K。
所以,CRF的形式可簡化為
對轉移特徵和狀態特徵在各位置i求和
將權重集合組合成向量w,將特徵函式包含的所有特徵表示為全域性向量 , 可表示為w和F(y,x)的內積w∙F(y,x)
其中
這裡,剛開始有點懵的是,前一篇舉例計算條件概率時,Y序列有5個節點,2個取值,轉移特徵一共有16個,狀態特徵有9個,條件概率的分子一共有9項相加(轉移特徵5-1項,狀態特徵5項),而這裡,w∙F(y,x)一共有K項,相當於例子中的16+9項,這就對不上了呀!
後來終於注意到
而
不滿足條件的項就是0,而對於,那種和當前狀態不滿足的,可能權重會變得接近於0.這樣一來,兩個計算方式就不衝突了。
2. CRF矩陣表示
CRF計算公式也可表示為
令
則
令
表示序列第i-1,i位置的所有可能可能標註的概率矩陣,如果Y有m個取值,那麼是m階方陣。
CRF可表示為
這裡序列取n+1個,實際上是給序列添加了start和stop標誌後,序列結點個數實際上上n+2,從0到n+1。
Z(x)表示從start到stop整個序列的所有路徑的概率和,p(y│x)表示從start到stop某條路徑的概率(看到這裡才理解p(y│x)所表示的含義)。Z(x)為規範化因子。
依然用上一篇的例子,
圖1
的取值為y={S,O},那麼新增start和stop之後,start到stop的全部路徑為下圖中所有路徑
圖2
而表示紅色路徑的概率。
3.概率的計算方式
從
由於序列的遞推關係,從前往後推,到位置i,i位置為關於位置i-1為的條件概率為
同時,從圖1可以看出,Y的各節點之間是無向的,也就是不僅依賴,同時也依賴,要確定,那麼和也需要確定(個人理解)。
因此,引入前向後-後向演算法,前向演算法計算對的依賴,後面演算法計算對的依賴。
以標註序列為例,p(y|x)是整個序列的概率,而實際標註過程中,每個位置上Y的可能取值的概率才是決定每個位置該標註為哪一個值的關鍵。我們的計算目標更多在於
而根據前面的依賴關係,要計算位置i為的概率,需要先計算位置i-1和i+1各可能標註值的概率,所以,還需要計算(將此公式中i替換為i+1就是)
在前向演算法中,定義
對每個指標i=0,1,2,…,n+1定義前向向量:
遞推公式
又可表示為
表示在位置i的標記為並且i前面的位置確定的非規範概率, 表示位置i上Y的所有可能取值的概率,可看做是一個矩陣,如果Y的取值個數為m,那麼它是m維向量。
同樣,定義後向向量為:
又可表示為
根據土遞推關係,start和stop之間所有路徑的概率和,實際上就是從start往stop推,第n位置的所有取值的概率和,因為序列最後一個包含全部可能取值,那麼前面位置的所有可能全部包含在內,同理,也等同於從stop往後推,推到start,位置1的所有可能取值的概率和等同於start和stop之間的所有路徑概率和。因此
計算位置i-1和i的條件概率為
4.期望計算
在學習引數時,需要用到轉移特徵的期望和狀態特徵的期望,前面已經把轉移和狀態兩特徵函式統一成特徵函式,所以,除了計算概率,還得計算特徵函式的期望。
特徵函式f_k關於條件分佈P(Y|X)的數學期望是
假設經驗分佈為 ,特徵函式關於聯合分佈P(Y,X)的數學期望是
其中
最重要的計算公式是第i和i-1位置的條件概率計算和特徵函式的兩個期望計算,前者在學習和預測時都要用到,後者主要用在學習引數。在學習引數,計算梯度時,需用實際的和來替換。
參考資料
《統計學習方法》
《統計自然語言處理》