中文分词词性和序列标注之CRF-6-试验效果
6 工程中算法需做变换,避免超出计算机浮点数范围
在实践中,因为规范因子$ Z_w(x) $在序列较长时值会非常大,因此所有和规范因子相关运算全部使用$ \log \sum \exp $替代。对应的概率操作也需要变换。
在实践中,因为规范因子$ Z_w(x) $在序列较长时值会非常大,因此所有和规范因子相关运算全部使用$ \log \sum \exp $替代。对应的概率操作也需要变换。
$ \tilde{p} $是经验分布概率,由样本简单统计得到。
$$ \begin{align} L_\tilde{P}(P_w) &= \log \prod_{x,y}p(y|x)^{\tilde{p}(x,y)} \\ &= \sum_{x,y} \tilde{p}(x,y) \log p(y|x) \\ &= \sum_{x,y} \tilde{p}(x,y) \sum_{k=1} w_k f_k(x,y) – \sum_{x} \tilde{p}(x) \log Z_w(x) \end{align} $$
超找给定$ x $序列最大概率输出序列$ y^\ast $。
与 HMM/MEMM viterbi 类似的搜索方法,但在CRF中并不用计算规范化概率。
$$ \begin{align} y^\ast &= \arg\max_y p(y|x) \\ &= \arg\max_y \frac{ \exp( w \cdot F(y,x) ) }{Z_w(x)} \\ &= \arg\max_y \exp( w \cdot F(y,x) ) \\ &= \arg\max_y w \cdot F(y,x) \\ &= \arg\max_y \sum_k w_k f_k(y, x) \\ &= \arg\max_y \sum_k w_k \sum_i f_k(y_{i-1}, y_i, x_i) \\ &= \arg\max_y \sum_i \sum_k w_k f_k(y_{i-1}, y_i, x_i) \\ &= \arg\max_y \sum_i f^\prime(y_{i-1}, y_i, x_i) \end{align} $$
$$ f^\prime(y_{i-1}, y_i, x_i)=\sum_k w_k f_k(y_{i-1}, y_i, x_i) $$
也就是说只需计算连续最大特征函数求和路径。
可看到线行链中只有前后两个$ y_{i-1}, y_i$是互相依赖的,因此这里和HMM类似,只是把求积换成求和。
和HMM第一大问题相似,计算给定x,y序列的条件概率。
定义 $ \alpha_i(x) $为在时刻$ i $止之前所有时刻的所有可能$ y $取值联合当前$y_i$取值的非规范化概率。$ m=|y| $。类似再定义和$ \alpha $相反,从 $n+1$时刻开始的反向计算的向量$ \beta_i(x) $。