条件随机场CRF(二)

CRF主要涉及到三个问题,标记序列概率的计算、参数的学习、序列的预测(解码),本片博文主要介绍第一个问题:标记序列概率的计算–前向后向算法,在博文中提到,在BI-LSTM-CRF模型框架的CRF层,当计算序列所有路径的总得分时就用到了前向后向算法的思想。

CRF前向后向概率计算

首先定义 α i ( y i ∣ x ) \alpha_i(y_i|x) αi(yix)表示序列位置 i i i的标记是 y i y_i yi时,在位置 i i i之前的部分标记序列的非规范化概率。之所以是非规范化概率是因为我们不想加入一个不影响结果计算的规范化因子 Z ( x ) Z(x) Z(x)在分母里面。
条件随机场CRF(一)中,我们定义了下式:
M i ( y i − 1 , y i ∣ x ) = e x p ( ∑ k = 1 K w k f k ( y i − 1 , y i , x , i ) ) M_i(y_{i-1},y_i |x) = exp(\sum\limits_{k=1}^Kw_kf_k(y_{i-1},y_i, x,i)) Mi(yi1,yix)=exp(k=1Kwkfk(yi1,yi,x,i))
这个式子定义了在给定 y i − 1 y_{i−1} yi1时,从 y i − 1 y_{i−1} yi1转移到 y i y_i yi的非规范化概率。
这样,我们很容易得到序列位置 i + 1 i+1 i+1的标记是 y i + 1 y_{i+1} yi+1时,在位置 i + 1 i+1 i+1之前的部分标记序列的非规范化概率 α i + 1 ( y i + 1 ∣ x ) \alpha_{i+1}(y_{i+1}|x) αi+1(yi+1x)的递推公式:
α i + 1 ( y i + 1 ∣ x ) = α i ( y i ∣ x ) M i + 1 ( y i + 1 , y i ∣ x )      i = 1 , 2 , . . . , n + 1 \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 αi+1(yi+1x)=αi(yix)Mi+1(yi+1,yix)i=1,2,...,n+1
同样的,我们定义 β i ( y i ∣ x ) \beta_i(y_i|x) βi(yix)表示序列位置 i i i的标记是 y i y_i yi时,在位置 i i i之后的从 i + 1 i+1 i+1 n n n的部分标记序列的非规范化概率。这样,我们很容易得到序列位置 i + 1 i+1 i+1的标记是 y i + 1 y_{i+1} yi+1时,在位置 i i i之后的部分标记序列的非规范化概率 β i ( y i ∣ x ) \beta_{i}(y_{i}|x) βi(yix)的递推公式:
β i ( y i ∣ x ) = M i + 1 ( y i , y i + 1 ∣ x ) β i + 1 ( y i + 1 ∣ x ) \beta_{i}(y_{i}|x) = M_{i+1}(y_i,y_{i+1}|x)\beta_{i+1}(y_{i+1}|x) βi(yix)=Mi+1(yi,yi+1x)βi+1(yi+1x)
有了前向后向概率的定义和计算方法,我们就很容易计算序列位置 i i i的标记是 y i y_i yi时的条件概率 P ( y i ∣ x ) P(y_i|x) P(yix):
P ( y i ∣ x ) = α i T ( y i ∣ x ) β i ( y i ∣ x ) Z ( x ) = α i T ( y i ∣ x ) β i ( y i ∣ x ) α n T ( x ) ∙ 1 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}} P(yix)=Z(x)αiT(yix)βi(yix)=αnT(x)1αiT(yix)βi(yix)
也容易计算序列位置 i i i的标记是 y i y_i yi,位置 i − 1 i−1 i1的标记是 y i − 1 y_{i−1} yi1时的条件概率 P ( y i − 1 , y i ∣ x ) P(y_{i-1},y_i|x) P(yi1,yix):
P ( y i − 1 , y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) = α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) α n T ( x ) ∙ 1 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}} P(yi1,yix)=Z(x)αi1T(yi1x)Mi(yi1,yix)βi(yix)=αnT(x)1αi1T(yi1x)Mi(yi1,yix)βi(yix)
以上就是精简的CRF的前向后向算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值