机器学习_条件随机场CRF
条件随机场 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,考虑到了整句上下文对该点成份的影响。