CRF 的預測問題是給定模型參數和輸入序列(觀測序列)x, 求條件概率最大的輸出序列(標記序列)$y^*$,即對觀測序列進行標注。條件隨機場的預測算法同 HMM 還是維特比算法,根據 CRF模型可得:
\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}
於是,條件隨機場的預測問題成為求非規范化概率最大的最優路徑問題
\[\arg \max_y \ w \cdot F(y,x)\]
注意,這時只需計算非規范化概率,而不必計算概率,可以大大提高效率。為了求解最優路徑,將優化目標寫成如下形式:
\[\max_y \sum_{i=1}^n w \cdot F_i(y_{i-1},y_i,x)\]
其中,
\[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\]
為局部特征向量。
下面敘述維特比算法。首先求出位置 1 的各個標記 j=1,2,…,m 的非規范化概率:
\[\delta_1(j) = w \cdot F_1(y_0 = start,y_1 = j,x)\]
一般地,由遞推公式,求出到位置 i 的各個標記 $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 = n 時終止。這時求得非規范化概率的最大值為
\[\max_y(w \cdot F(y,x)) = \max_{1 \le j \le m} \delta_n(j)\]
及最優路徑的終點
\[y_n^* = \arg \max_{1 \le j \le m} \delta _n(j)\]
由此最優路徑終點返回,不斷的找到各個時刻的最優值:
\[y_i^* = \Psi_{i+1}(y^*_{i+1}) , \ i = n-1,n-2,…,1\]
以上便是一條最優路徑了,求得該最優路徑:
\[y^* = (y_1^*,y_2^*,…,y_n^*)^T\]
這便為條件隨機場預測的維特比算法。