首页 > 代码库 > 条件随机场入门(四) 条件随机场的预测算法

条件随机场入门(四) 条件随机场的预测算法

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\]

这便为条件随机场预测的维特比算法。

条件随机场入门(四) 条件随机场的预测算法