条件随机场入门(三) 条件随机场的几率计算问题

条件随机场的几率计算问题是给定条件随机场 P(Y|X) ,输入序列 x 和输出序列 y ,计算条件几率  $P(Y_{i-1} = y_{i-1}Y_i = y_i|x)$ ,$P(Y_i = y_i|x)$  以及相应的数学指望的问题。为了方便起见,像 HMM 那样,引进前向-后向向量,递归地计算以上几率及指望值。这样的算法称为前向-后向算法。算法

前向-后向算法

对每一个指标 $i = 0,1,…,n+1$ ,定义前向向量 $a_i(x)$ ,对于起始状态 $i=0$:ide

\[a_0(y|x) = \left \{ \begin{aligned}
&1, \ \ y = start \\
&0, \ \ else
\end{aligned}\right.\]
函数

对于以后的状态 $i = 1,2,…,n+1$ ,递推公式为:spa

\[a_i^T(y_i|x) = a^T_{i-1}(y_{i-1}|x)M_i(y_{i-1},y_i|x)\]递归

这里 $M_i(y_{i-1},y_i|x)$ 对应的是转移矩阵中的一列,转为向量形式可表示为数学

\[a^T_i(x) = a^T_{i-1}(x)M_i(x)\]经验

$a_i(y_i|x)$ 表示在位置 i 的标记是 $y_i$ 而且到位置 i 的前部分标记序列的非规范化几率,$y_i$ 可取的值有 m 个,因此 $a_i(x)$ 是 m 维列向量。规范化

一样,对每一个指标 $i = 0,1,…,n+1$ ,定义后向向量 $\beta_i(x)$:top

\[\beta_{n+1}(y_{n+1}|x) = \left \{ \begin{aligned}
&1, \ \ y_{n+1} = stop \\
&0, \ \ else
\end{aligned}\right.\]
di

往前递推:

\[\beta_i(y_i|x) = M_i(y_i,y_{i+1}|x)\beta_{i+1}(y_{i+1}|x)\]

又能够表示为:

\[\beta_i(x) = M_{i+1}(x) \beta_{i+1}(x)\]

$\beta_i(y_i|x)$ 表示在位置 i 的标记为 $y_i$,而且从 i+1 到 n 的后部分标记序列的非规范化几率。

由前向-后向向量定义不可贵到:

\[Z(x) = a_n^T(x) \cdot \mathbf{1} = \mathbf{1}^T \cdot \beta_1(x)\]

这里,$\mathbf{1}$  是元素均为 1 的 m 维列向量。

几率计算

按照前向-后向向量的定义,很容易计算标记序列在位置 i 是标记 $y_i$ 的条件几率和在位置 i-1 与 i 是标记 $y_{i-1}$ 和 $y_i$ 的条件几率:

\begin{aligned}
P(Y_i= y_i|x) &= \frac{a_i^T(y_i|x) \beta_i(y_i|x)}{Z(x)} \\
P(Y_{i-1} = y_{i-1} ,Y_i= y_i|x) &=\frac{a_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)}
\end{aligned}

其中 $Z(x) = a_n^T(x) \cdot \mathbf{1} $

指望值的计算

利用前向-后向向量,能够计算特征函数关于联合分布 P(X,Y) 和条件分布 P(Y|X) 的数学指望。

特征函数 $ \left \{ f_k \right \}_{k=1}^K$ 关于条件分布 P(Y|X) 的数学指望是

\begin{aligned}
E_{p(Y|X)}[f_k] &= \sum_yP(y|x)f_k(y,x) \\
&=\sum_{i=1}^{n+1}\sum_{y_{i-1}\ y_i}f_k(y_{i-1},y_i,x,i) \frac{a_{i-1}^TM_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)}
\end{aligned}

其中 $Z(x) = a_n^T(x) \cdot \mathbf{1} $

假设经验分布为 $\widetilde{P}(X)$ ,特征函数  $ \left \{ f_k \right \}_{k=1}^K$  关于联合分布 P(Y|X) 的数学指望是:

\begin{aligned}
E_{P(X,Y)}[f_k] &= \sum_{x,y}P(x,y)\sum_{i=1}^{n+1}f_k(y_{i-1}.y_i,x,i) \\
&= \sum_x\widetilde{P}(x) \sum_yP(y|x)\sum_{i=1}^{n+1}f_k(y_{i-1,}y_ix,i) \\
&= \sum_x\widetilde{P}(x) \sum_{i=1}^{n+1} \sum_{y_{i-1} \ y_i}f_k(y_{i-1,}y_ix,i)\frac{a_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x) \beta_i(y_i|x)}{Z(x)}
\end{aligned}

其中,$Z(x) = a_n^T(x) \cdot \mathbf{1} $

这个式子是特征函数数学指望的通常计算公式。对于转移特征 $t_k(y_{i-1},y_i,x,i) ,k=1,2,…,K$ ,能够将式中的 $f_k$ 换成 $t_k$ ;对于状态特征,能够将式中的 $f_k$ 换成 $s_l$ , 表示为 $s_l(y_i,x,i),k = K_1+1;l=1,2,…,K_2$ 。

有了这些式子,对于给定的观测序列 x 与标记序列 y ,能够经过一次前向扫描计算 $a_i$ 及 $Z(x)$ ,经过一次后向扫描计算 $\beta_i$,从而计算全部的几率和特征的指望。

相关文章
相关标签/搜索