條件隨機場CRF(二) 前向後向演算法評估標記序列概率
在條件隨機場CRF(一)中我們總結了CRF的模型,主要是linear-CRF的模型原理。本文就繼續討論linear-CRF需要解決的三個問題:評估,學習和解碼。這三個問題和HMM是非常類似的,本文關注於第一個問題:評估。第二個和第三個問題會在下一篇總結。
1. linear-CRF的三個基本問題
在隱馬爾科夫模型HMM中,我們講到了HMM的三個基本問題,而linear-CRF也有三個類似的的基本問題。不過和HMM不同,在linear-CRF中,我們對於給出的觀測序列$x$是一直作為一個整體看待的,也就是不會拆開看$(x_1,x_2,...)$,因此linear-CRF的問題模型要比HMM簡單一些,如果你很熟悉HMM,那麼CRF的這三個問題的求解就不難了。
linear-CRF第一個問題是評估,即給定 linear-CRF的條件概率分佈$P(y|x)$, 在給定輸入序列$x$和輸出序列$y$時,計算條件概率$P(y_i|x)$和$P(y_{i-1},y_i|x)$以及對應的期望. 本文接下來會詳細討論問題一。
linear-CRF第二個問題是學習,即給定訓練資料集$X$和$Y$,學習linear-CRF的模型引數$w_k$和條件概率$P_w(y|x)$,這個問題的求解比HMM的學習演算法簡單的多,普通的梯度下降法,擬牛頓法都可以解決。
linear-CRF第三個問題是解碼,即給定 linear-CRF的條件概率分佈$P(y|x)$,和輸入序列$x$, 計算使條件概率最大的輸出序列$y$。類似於HMM,使用維特比演算法可以很方便的解決這個問題。
2.linear-CRF的前向後向概率概述
要計算條件概率$P(y_i|x)$和$P(y_{i-1},y_i|x)$,我們也可以使用和HMM類似的方法,使用前向後向演算法來完成。首先我們來看前向概率的計算。
我們定義$\alpha_i(y_i|x)$表示序列位置$i$的標記是$y_i$時,在位置$i$之前的部分標記序列的非規範化概率。之所以是非規範化概率是因為我們不想加入一個不影響結果計算的規範化因子$Z(x)$在分母裡面。
在條件隨機場CRF(一)第八節中,我們定義了下式:$$M_i(y_{i-1},y_i |x) = exp(\sum\limits_{k=1}^Kw_kf_k(y_{i-1},y_i, x,i))$$
這個式子定義了在給定$y_{i-1}$時,從$y_{i-1}$轉移到$y_i$的非規範化概率。
這樣,我們很容易得到序列位置$i+1$的標記是$y_{i+1}$時,在位置$i+1$之前的部分標記序列的非規範化概率$\alpha_{i+1}(y_{i+1}|x)$的遞推公式:$$\alpha_{i+1}(y_{i+1}|x) = \alpha_i(y_i|x)M_{i+1}(y_{i+1},y_i|x) \;\; i=1,2,...,n+1$$
在起點處,我們定義:$$\alpha_0(y_0|x)= \begin{cases} 1 & {y_0 =start}\\ 0 & {else} \end{cases}$$
假設我們可能的標記總數是$m$, 則$y_i$的取值就有$m$個,我們用$\alpha_i(x)$表示這$m$個值組成的前向向量如下:$$\alpha_i(x) = (\alpha_i(y_i=1|x), \alpha_i(y_i=2|x), ... \alpha_i(y_i=m|x))^T$$
同時用矩陣$M_i(x)$表示由$M_i(y_{i-1},y_i |x) $形成的$m \times m$階矩陣:$$M_i(x) = \Big[ M_i(y_{i-1},y_i |x)\Big]$$
這樣遞推公式可以用矩陣乘積表示:$$\alpha_{i+1}^T(x) = \alpha_i^T(x)M_{i+1}(x)$$
同樣的。我們定義$\beta_i(y_i|x)$表示序列位置$i$的標記是$y_i$時,在位置$i$之後的從$i+1$到$n$的部分標記序列的非規範化概率。
這樣,我們很容易得到序列位置$i+1$的標記是$y_{i+1}$時,在位置$i$之後的部分標記序列的非規範化概率$\beta_{i}(y_{i}|x)$的遞推公式:$$\beta_{i}(y_{i}|x) = M_{i+1}(y_i,y_{i+1}|x)\beta_{i+1}(y_{i+1}|x)$$
在終點處,我們定義:$$\beta_{n+1}(y_{n+1}|x)= \begin{cases} 1 & {y_{n+1} =stop}\\ 0 & {else} \end{cases}$$
如果用向量表示,則有:$$\beta_i(x) = M_{i+1}(x)\beta_{i+1}(x)$$
由於規範化因子$Z(x)$的表示式是:$$Z(x) = \sum\limits_{c=1}^m\alpha_{n}(y_c|x) = \sum\limits_{c=1}^m\beta_{1}(y_c|x)$$
也可以用向量來表示$Z(x)$:$$Z(x) = \alpha_{n}^T(x) \bullet \mathbf{1} = \mathbf{1}^T \bullet \beta_{1}(x)$$
其中,$\mathbf{1}$是$m$維全1向量。
3. linear-CRF的前向後向概率計算
有了前向後向概率的定義和計算方法,我們就很容易計算序列位置$i$的標記是$y_i$時的條件概率$P(y_i|x)$:$$P(y_i|x) = \frac{\alpha_i^T(y_i|x)\beta_i(y_i|x)}{Z(x)} = \frac{\alpha_i^T(y_i|x)\beta_i(y_i|x)}{ \alpha_{n}^T(x) \bullet \mathbf{1}}$$
也容易計算序列位置$i$的標記是$y_i$,位置$i-1$的標記是$y_{i-1}$ 時的條件概率$P(y_{i-1},y_i|x)$:$$P(y_{i-1},y_i|x) = \frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)} = \frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{ \alpha_{n}^T(x) \bullet \mathbf{1}}$$
4. linear-CRF的期望計算
有了上一節計算的條件概率,我們也可以很方便的計算聯合分佈$P(x,y)$與條件分佈$P(y|x)$的期望。
特徵函式$f_k(x,y)$關於條件分佈$P(y|x)$的期望表示式是:$$\begin{align} E_{P(y|x)}[f_k] & = E_{P(y|x)}[f_k(y,x)] \\ & = \sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1}\;\;y_i}P(y_{i-1},y_i|x)f_k(y_{i-1},y_i,x, i) \\ & = \sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1}\;\;y_i}f_k(y_{i-1},y_i,x, i) \frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{ \alpha_{n}^T(x) \bullet \mathbf{1}} \end{align}$$
同樣可以計算聯合分佈$P(x,y)$的期望:$$\begin{align} E_{P(x,y)}[f_k] & = \sum\limits_{x,y}P(x,y) \sum\limits_{i=1}^{n+1}f_k(y_{i-1},y_i,x, i) \\& = \sum\limits_{x}\overline{P}(x) \sum\limits_{y}P(y|x) \sum\limits_{i=1}^{n+1}f_k(y_{i-1},y_i,x, i) \\& = \sum\limits_{x}\overline{P}(x)\sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1}\;\;y_i}f_k(y_{i-1},y_i,x, i) \frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{ \alpha_{n}^T(x) \bullet \mathbf{1}} \end{align}$$
假設一共有$K$個特徵函式,則$k=1,2,...K$
5. linear-CRF前向後向演算法總結
以上就是linear-CRF的前向後向演算法,個人覺得比HMM簡單的多,因此大家如果理解了HMM的前向後向演算法,這一篇是很容易理解的。
注意到我們上面的非規範化概率$M_{i+1}(y_{i+1},y_i|x)$起的作用和HMM中的隱藏狀態轉移概率很像。但是這兒的概率是非規範化的,也就是不強制要求所有的狀態的概率和為1。而HMM中的隱藏狀態轉移概率也規範化的。從這一點看,linear-CRF對序列狀態轉移的處理要比HMM靈活。
(歡迎轉載,轉載請註明出處。歡迎溝通交流: liujianping-ok@163.com)