条件随机场CRF(二)

允我心安 提交于 2020-01-20 10:02:12

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

CRF前向后向概率计算

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!