条件随机场 CRF

简介

在命名实体识别(后简称 NER)中,迄今绝大多数模型都使用神经网络和条件随机场结合的方法实现。所以,需要稍微了解一下 CRF 的原理。

NER 是自然语言处理中一个非常基础的任务,简单的说,就是识别句中的成份。比如 " 小明去学校 ",其中“小明”是人名,“去”是动词,“学校”是地点。如果把字当作处理单元,“学”字是动词还是地点,不仅取决于该字的意思,还取决于它的上下文。

CRF 可用于解决序列问题(前后状态存在相关性),比如根据第 i-1 个字来判断第 i 个字所充当的成份。当 CRF 与神经网络共同工作时,神经网络负责提取词义,CRF 将词义与上下文结合,以实现更准确地判断。

原理

这里涉及很多概念,比如最大团、马尔可夫性、马尔可夫链等等,本文不做展开,以免过长、过于复杂。

直奔主题,CRF 最大的特点是它使用了特征函数。可以把特征函数想象成对输入 x 提取多个特征,每个特征函数提取一个特征。

\[ \sum_i^T\sum_k^M\lambda_kf_k(x,y_{i-1},y_i,i) \]

序列中共有 T 个时间步(NER 句中有 T 个字),用 i 遍历每一时间步(每个字),共有 M 个特征函数(提取 M 个特征),用 k 遍历每个特征函数,特征函数用 f 表示,其权重用λ表示,不同特征函数的权重各不相同。特征函数是事先定义好的,权重是训练中学出来的。

特征函数的输入包含观测序列 x(NER 里的句子),状态序列 y(成份)的第 i-1 和第 i 个位置,以及具体位置的索引 i。

上面公式也常常表示成:

\[ \sum_{i,k}\lambda_kt_k(y_{i-1},y_i,x,i)+\sum_{i,l}\mu_ls_l(y_i,x,i) \]

它把前式中的特征函数 f 拆成了两部分,第一部分是当前项与上下文的关系,第二部分是具体词 x 与词的成份 y 之间的关系。两部分有各自的特征函数及权重。

我们看到 CRF 写成啥样的都有,但无论用什么字符表示,拆成一部分或两部分,其原理都是一样的。

最常见的 CRF 公式如下,它用于计算:文本序列 x 的条件下出现成份序列 y 的概率。

\[ P(y|x)=\frac{1}{Z(x)}exp\left(\sum_{i,k}\lambda_kt_k(y_{i-1},y_i,x,i)+\sum_{i,l}\mu_ls_l(y_i,x,i)\right) \]

其中,Z(x) 用于归一化:

\[ Z(x)=\sum_yexp\left(\sum_{i,k}\lambda_kt_k(y_{i-1},y_i,x,i)+\sum_{i,l}\mu_ls_l(y_i,x,i)\right) \]

公式也被简化成:

\[ P_w(y|x)=\frac{exp(w \cdot F(y,x))}{Z_w(x)} \]

其中的 w 是训练求得的模型参数。这么看,就像是一个求参数 w 的回归问题。

隐马尔可夫模型与条件随机场

隐马尔可夫模型(HMM)与条件随机场模型(CRF)常放在一起比较,这是由于它们实现的功能基本一致。

HMM 公式如下:

\[ p(y,x) = \prod_{t=1}^Tp(y_t|y_{t-1})p(x_t|y_t) \]

对比公式可以看出:

  • 相同:二项者考虑了前项 y-1 对后项 y 的影响,以及 x 对 y 的影响。
  • 差异:HMM 求联合概率 p(y,x),CRF 求条件概率 p(y|x)。
  • 差异:HMM 仅考虑 x->y,yi-1->yi 的转移关系。
  • 差异:CRF 引入了事先设定好的特征函数,计算特征函数时还加入了整个 x,考虑到了整句上下文对该点成份的影响。

参考

如何用简单易懂的例子解释条件随机场(CRF)模型?它和HMM有什么区别?

NLP --- 条件随机场CRF(预测算法详解)