笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP
本章介绍一种新的序列标注模型条件随机场。这种模型与感知机同属结构化学习大家族,但性能比感知机还要强大。为了厘清该模型的来龙去脉,我们先对机器学习模型做番柿理。然后结合代码介绍条件随机场理论,探究它与结构化感知机的异同。
机器学习的模型谱系图如下图所示:
根据建模的究竟是联合概率分布 P(x,y) 还是条件概率分布 P(y|x)。派生出生成式模型与判别式模型。
为了克服这两个问题,判别式模型出现。
有向图模型都将概率有向图分解为一系列条件概率之积,有向图模型经常用生成式模型来实现。定义 π(v) 表示节点 v 的所有前驱节点,则分布为: p(x,y)=∏v=Vp(v∣π(v)) p(\boldsymbol{x}, \boldsymbol{y})=\prod_{v=V} p(v | \boldsymbol{\pi}(v)) p(x,y)=v=V∏p(v∣π(v))
无向图模型将概率分解为所有最大团上的某种函数之积。 在图论中,最大团指的是满足所有节点相互连接的最大子图。因为最大团需要考虑所有变量,为此,无向图模型定义了一些虚拟的因子节点,每个因子节点只连接部分节点,组成更小的最大团。
蓝色虚线表示最大团,黑色方块表因子节点,圆圈则表示变量节点,无向图模型将多维随机变量的联合分布分解为一系列最大团中的因子之积: p(x,y)=1Z∏aΨa(xa,ya) p(x, y)=\frac{1}{Z} \prod_{a} \Psi_{a}\left(x_{a}, y_{a}\right) p(x,y)=Z1a∏Ψa(xa,ya) 其中,a 是因子节点,Ψa 则是一个因子节点对应的函数,参数 Xa,Ya 是与因子节点相连的所有变量节点。为了将式子约束为概率分布,定义常数 Z 为如下归一化因子: Z=∑x,y∏aΨa(xa,ya) Z=\sum_{x, y} \prod_{a} \Psi_{a}\left(x_{a}, y_{a}\right) Z=x,y∑a∏Ψa(xa,ya) 在机器学习中,常用指数家族的因子函数: Ψa(xa,ya)=exp{∑kwakfak(xa,ya)} \Psi_{a}\left(x_{a}, y_{a}\right)=\exp \left\{\sum_{k} w_{a k} f_{a k}\left(x_{a}, y_{a}\right)\right\} Ψa(xa,ya)=exp{k∑wakfak(xa,ya)} 其中,k 为特征的编号,Fak 是特征函数,Wak 为相应的特征权重。 判别式模型经常用无向图来表示,只需要在归一化时,对每种 x 都求一个归一化因子: Z(x)=∑y∏aΨa(xa,ya) Z(\boldsymbol{x})=\sum_{y} \prod_{a} \Psi_{a}\left(\boldsymbol{x}_{a}, \boldsymbol{y}_{a}\right) Z(x)=y∑a∏Ψa(xa,ya) 然后 P(x,y) 就转化为判别式模型所需的条件概率分布: p(y∣x)=1Z(x)∏aΨa(xa,ya) p(\boldsymbol{y} | \boldsymbol{x})=\frac{1}{Z(\boldsymbol{x})} \prod_{a} \boldsymbol{\Psi}_{a}\left(\boldsymbol{x}_{a}, \boldsymbol{y}_{a}\right) p(y∣x)=Z(x)1a∏Ψa(xa,ya) 到这里,最后一个公式就是条件随机场的一般形式。
条件随机场( Conditional Random Field, CRF)是一种给定输入随机变量 x,求解条件概率 p(y| x) 的概率无向图模型。用于序列标注时,特例化为线性链( linear chain )条件随机场。此时,输人输出随机变量为等长的两个序列。
每个 Xt 上方有 3 个灰色节点,代表 Xt 的 3 个特征,当然还可以是任意数量的特征,体现了特征的丰富性,黑色方块是因子节点,可以理解为一个特征函数 fk(yt−1,yt,xt)f_k(y_{t-1},y_t,x_t)fk(yt−1,yt,xt)。其中仅仅利用了 Xt 和 Yt 的特征称作状态特征,利用了 Yt-1 的特征则称作转移特征,与感知机的特征函数相同。 线性链条件随机场的定义如下: p(y∣x)=1Z(x)∏t=1Texp{∑k=1Kwkfk(yt−1,yt,xt)} p(\boldsymbol{y} | \boldsymbol{x})=\frac{1}{Z(\boldsymbol{x})} \prod_{t=1}^{T} \exp \left\{\sum_{k=1}^{K} \boldsymbol{w}_{k} f_{k}\left(y_{t-1}, y_{t}, \boldsymbol{x}_{t}\right)\right\} p(y∣x)=Z(x)1t=1∏Texp{k=1∑Kwkfk(yt−1,yt,xt)} 其中,Z(x)为归一化函数: Z(x)=∑y∏t=1Texp{∑k=1Kwkfk(yt−1,yt,xt)} Z(\boldsymbol{x})=\sum_{y} \prod_{t=1}^{T} \exp \left\{\sum_{k=1}^{K} w_{k} f_{k}\left(y_{t-1}, y_{t}, \boldsymbol{x}_{t}\right)\right\} Z(x)=y∑t=1∏Texp{k=1∑Kwkfk(yt−1,yt,xt)} 上式定义在所有可能的标注序列上。如果将所有特征函数与权重分别写作向量形式,则线性链条件随机场的定义可简化为: p(y∣x)=1Z(x)∏t=1Texp{w⋅ϕ(yt−1,yt,xt)}=1Z(x)exp{∑t=1Tw⋅ϕ(yt−1,yt,xt)} \begin{aligned} p(\boldsymbol{y} | \boldsymbol{x}) &=\frac{1}{Z(\boldsymbol{x})} \prod_{t=1}^{T} \exp \left\{\boldsymbol{w} \cdot \phi\left(y_{t-1}, y_{t}, \boldsymbol{x}_{t}\right)\right\} \\ &=\frac{1}{Z(\boldsymbol{x})} \exp \left\{\sum_{t=1}^{T} \boldsymbol{w} \cdot \phi\left(y_{t-1}, y_{t}, \boldsymbol{x}_{t}\right)\right\} \end{aligned} p(y∣x)=Z(x)1t=1∏Texp{w⋅ϕ(yt−1,yt,xt)}=Z(x)1exp{t=1∑Tw⋅ϕ(yt−1,yt,xt)} 对比结构化感知机的打分函数: score(x,y)=∑t=1Tw⋅ϕ(yt−1,yt,xt) \operatorname{score}(x, y)=\sum_{t=1}^{T} w \cdot \phi\left(y_{t-1}, y_{t}, x_{t}\right) score(x,y)=t=1∑Tw⋅ϕ(yt−1,yt,xt) 可以发现结构化感知机打分函数与条件随机场的指数部分完全相同,由于给定实例 x,Z(x) 就是一个常数 c,所以有: p(y∣x)=1cexp{score(x,y)} p(y | x)=\frac{1}{c} \exp \{\operatorname{score}(x, y)\} p(y∣x)=c1exp{score(x,y)} 于是,条件随机场就和结构化感知机有以下联系:
这种相似性使得我们能够复用结构化感知机的预测算法,也就是维特比算法。 条件随机场的训练过程详见《自然语言处理入门》第6章。
不同点
谈到条件随机场工具包,最著名的就是 CRF++,有各大平台的安装方法,HanLP已经集成了。
详细代码请见: evaluate_crf_cws.py
https://github.com/NLP-LOVE/Introduction-NLP/tree/master/code/ch06/evaluate_crf_cws.py
训练耗时很长。
标准化评测
算法 | P | R | F1 | R(oov) | R(IV) |
---|---|---|---|---|---|
最长匹配 | 89.41 | 94.64 | 91.95 | 2.58 | 97.14 |
二元语法 | 92.38 | 96.70 | 94.49 | 2.58 | 99.26 |
一阶HHM | 78.49 | 80.38 | 79.42 | 41.11 | 81.44 |
二阶HHM | 78.34 | 80.01 | 79.16 | 42.06 | 81.04 |
平均感知机 | 96.69 | 96.45 | 96.57 | 70.34 | 97.16 |
结构化感知机 | 96.67 | 96.64 | 96.65 | 70.52 | 97.35 |
条件随机场 | 96.86 | 96.64 | 96.75 | 71.54 | 97.33 |
条件随机场的各项指标全面胜过了结构化感知机,综合 F1 更达到 96.8%, 是传统方法中最准确的分词模型。
HanLP何晗–《自然语言处理入门》笔记:
https://github.com/NLP-LOVE/Introduction-NLP
项目持续更新中…
目录
章节 |
---|
第 1 章:新手上路 |
第 2 章:词典分词 |
第 3 章:二元语法与中文分词 |
第 4 章:隐马尔可夫模型与序列标注 |
第 5 章:感知机分类与序列标注 |
第 6 章:条件随机场与序列标注 |
第 7 章:词性标注 |
第 8 章:命名实体识别 |
第 9 章:信息抽取 |
第 10 章:文本聚类 |
第 11 章:文本分类 |
第 12 章:依存句法分析 |
第 13 章:深度学习与自然语言处理 |