CRF 的预测问题是给定模型参数和输入序列(观测序列)x, 求条件概率最大的输出序列(标记序列)$y^*$,即对观测序列进行标注。条件随机场的预测算法同 HMM 还是维特比算法,根据 CRF模型可得:
egin{aligned}
y^* &= arg max_yP_w(y|x) \
&= arg max_yfrac{ exp left {w cdot F(y,x)
ight}}{Z_w(x)} \
&= arg max_y exp left {w cdot F(y,x)
ight} \
&= 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) ight }^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$ 的非规范化概率的最大值,同时记录非规范化概率最大值的路径:
egin{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)
ight}, & l= 1,2,...,m\
Psi_i(l) &=argmax_{1 le j le m} left {delta_{i-1}(l) + w cdot F_i(y_{i-1} = j,y_i = l,x)
ight}, & 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]
这便为条件随机场预测的维特比算法。