CRF详解(NLP向)

条件随机场(Conditional Random Fields, 以下简称CRF)

1. 从 随机场 到 线性链条件随机场

1.1 什么样的问题需要CRF模型

CRF详解(NLP向)_第1张图片

1.2 从随机场到马尔科夫随机场

随机场是由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。
还是举词性标注的例子:假如有一个十个词形成的句子需要做词性标注。这十个词每个词的词性可以在已知的词性集合(名词,动词…)中去选择。当我们为每个词选择完词性后,这就形成了一个随机场

马尔科夫随机场是随机场的特例,它假设随机场中某一个位置的赋值仅仅与和它相邻位置的赋值有关,和与其不相邻的位置的赋值无关
继续举十个词的句子词性标注的例子:如果我们假设所有词的词性只和它相邻的词的词性有关时,这个随机场就特化成一个马尔科夫随机场。比如第三个词的词性除了与自己本身的位置有关外,只与第二个词和第四个词的词性有关。

1.3 从马尔科夫随机场到条件随机场

CRF是马尔科夫随机场的特例,它假设马尔科夫随机场中只有X和Y两种变量,X一般是给定的,而Y一般是在给定X的条件下的输出。这样马尔科夫随机场就特化成了条件随机场。
在我们十个词的句子词性标注的例子中,X是词,Y是词性。因此,如果我们假设它是一个马尔科夫随机场,那么它也就是一个CRF。

对于CRF,给出准确的数学语言描述:设X与Y是随机变量,P(Y|X)是给定X时Y的条件概率分布,若随机变量Y构成的是一个马尔科夫随机场,则称条件概率分布P(Y|X)是条件随机场。

1.4 从条件随机场到线性链条件随机场

CRF详解(NLP向)_第2张图片
X和Y有相同的结构的CRF就构成了线性链条件随机场(Linear chain Conditional Random Fields,以下简称 linear-CRF)。

2. 线性链条件随机场

对于上一节讲到的linear-CRF,我们如何将其转化为可以学习的机器学习模型呢?
这是通过特征函数(2个)和其权重系数来实现的

我们以命名实体识别NER为例,先介绍下NER的概念:
CRF详解(NLP向)_第3张图片
(这里的label_alphabet中的b代表一个实体的开始,即begin;m代表一个实体的中部,即mid;e代表一个实体的结尾,即end;o代表不是实体,即None;start和pad分表代表这个标注label序列的开始和结束,类似于机器翻译的SOS和EOS。)
CRF详解(NLP向)_第4张图片
上图就是word和label数字化后变成word_index,label_index。最终就变成下面的形式:
CRF详解(NLP向)_第5张图片
因为label有7种,每一个字被预测的label就有7种可能,为了数字化这些可能,我们从word_index到label_index设置一种分数,叫做发射分数emit
在这里插入图片描述
看这个图,有word_index 的 1 -> 到label_index 的 4的小红箭头,像不像发射过来的?此时的分数就记作emit[1][4]。

这里的发射分数emit(整体就是一个发射矩阵)实际上就是特征函数一:节点特征函数这类特征函数只和当前节点有关,可表示为:
CRF详解(NLP向)_第6张图片
另外,我们想想,如果单单就这个发射分数来评价,太过于单一了,因为这个是一个序列,比如前面的label为o,那此时的label被预测的肯定不能是m或s,所以这个时候就需要一个分数代表前一个label到此时label的分数,我们叫这个为转移分数,即T:
在这里插入图片描述
如图,横向的label到label箭头,就是由一个label到另一个label转移的意思,此时的分数为T[4][4]。

这里的转移分数T(整体就是一个转移矩阵)实际上就是特征函数二:局部特征函数这类特征函数只和当前节点和上一个节点有关,可表示为:
CRF详解(NLP向)_第7张图片
CRF详解(NLP向)_第8张图片
注意其为了全局考虑,会将前一个的分数也累加到当前分数上,如上图!
CRF详解(NLP向)_第9张图片
CRF详解(NLP向)_第10张图片
CRF详解(NLP向)_第11张图片
规范化因子保证其概率分布整体总和为1。

面试回答小结:(直接背这个,上面不用看)
CRF是由随机场满足各种约束条件(随机场满足马尔科夫假设得到马尔科夫随机场,即当前节点只与其相邻节点相关,而在马尔科夫随机场的基础上,假设其随机变量只有X和Y,则得到CRF)而得到的,实际常用的其实叫做线性链CRF(CRF中的X和Y结构不一定是一致的,而线性链CRF中X与Y结构一致)。

那么线性链CRF主要有两个重要组成部分,一个是发射矩阵部分,参数化表示的话就是,各个节点特征函数与其权重的乘积和;另一个是转移矩阵部分,参数化表示的话就是,各个局部特征函数与其权重的乘积和。每个特征函数的结果都是0/1,这两个部分的组合可以得到非常多种不同结果的发射矩阵和转移矩阵,而其中只有一种组合是正确的(我们的目标组合),那么便可以通过SoftMax概率化这个最优结果并取 l o g log log,所以线性链CRF的优化目标就是最大化这个最优组合的概率值。具体线性链CRF参数化表示如下,目标便是最大化 l o g ( P ( y ∣ x ) ) log(P(y|x)) log(P(yx)),损失函数的分母是全部路径和,分子是目标最优路径,从而进行训练。

训练完成后,进行预测时需要进行解码,解码使用维特比算法,求解全局最优解,即动态规划,具体见这里。

3. 线性链条件随机场的简化形式 (知道)

CRF详解(NLP向)_第12张图片
CRF详解(NLP向)_第13张图片

4. linear-CRF的三个基本问题(了解差不多)

CRF详解(NLP向)_第14张图片

5. 计算最优路径(维特比算法)

见链接,这里不多解释,本质上和分词算法的维特比算法是一样的。

6. 以前的笔记(了解)

CRF详解(NLP向)_第15张图片

你可能感兴趣的:(NLP(包含深度学习),自然语言处理)