NLP-CRF模型原理介绍
参考:https://www.jianshu.com/p/55755fc649b1
https://www.zhihu.com/question/35866596
https://www.cnblogs.com/pinard/p/7048333.html
最有效的途径就是借助一个实际案例来阐述条件随机场的概念。一般来说,在中文的文献中很少见到有人会这么做。可能是因为撰写者多为资深学者或专家的缘故吧。
因此我进行了全文翻译工作,并希望能够为同行或读者提供帮助。
想直接观看英文版的朋友可以直接点击进入。在进行翻译工作时,我并未严格按照原文字面意思进行转述,在许多地方都融入了个人的理解和诠释。这算是一种意译的方式。(画外音:其实我是想装个逼而已,请不要当真哦!)好啦!现在正式开始进行翻译工作。
设想你拥有小明同学一天中不同时间段拍摄的照片。从他起床时穿裤子到睡觉时脱下裤子的过程中(他尤其热爱摄影!),系统会自动识别出各个时段的独特特征并进行分类整理。现在的工作目标就是将这些图片进行分类管理:例如其中一些图片是在他用餐时拍摄的,则给这张图片贴上‘吃饭’标签;又如一些图片是在他跑步时拍下的,则给其贴上‘跑步’标签;还有一些是在会议间隙拍摄的画面,则将其归类为‘开会’主题图片。那么问题来了:你会采取什么方法来实现这一目标?
一种简洁直接的方法是:不论这些照片发生的时间先后顺序如何变化,请教系统建立一个多标签分类模型进行分析与学习。具体操作时可以利用一些已经标记好的图片作为训练数据集,在这一基础上构建一个多标签分类模型,并根据图片中的特征进行自动分类工作即可完成任务目标。例如,在早上6:00拍摄的照片中:如果画面呈现黑暗状态,则将其标记为睡觉状态;若发现有车辆出现,则将其标记为行驶状态等。”
这样可行吗?
看起来不错;然而,在忽略这些照片之间的时间顺序这一关键信息时,并不会影响我们的分类器的有效性;这会导致分类器存在缺陷;举例来说:假设有一张小明闭着嘴的照片;怎么判断?显然难以直接确定类别;因为必须参考其闭嘴前的照片才能做出合理的归类:比如如果其前面的照片显示小明在进食,则这张闭嘴照片很可能是在他咀嚼食物准备咽下时被拍摄到的;因此可将其归类为进食中的人物形象;反之如果前面照片显示他在唱歌则这张照片很可能是他歌唱时被拍下的瞬间定格画面;因此可将其归类为正在唱歌的人物形象
所以,在我们对一张图片进行分类处理时,为了使我们的分类器表现出更好的效果,我们需要综合考虑邻近图片的信息。这就是条件随机场(CRF)大显身手的地方!
从例子说起——词性标注问题
啥是词性标注问题?
简单地说吧!那就是在一个句子中给每一个单词标注词性。例如这个英文句子:"Bob drank coffee at Starbucks" 给出每一个单词的词性即是这样的:"Bob (名词) drank(动词) coffee(名词) at(介词) Starbucks(名词)"
下面,就用条件随机场来解决这个问题。
以这句话为例,在自然语言处理领域中我们常需对文本进行标记以便后续处理
怎么判断一个标注序列靠谱不靠谱呢?
在我们之前展示的两个标注序列中,相比之下,在可靠性方面第二个序列明显不如第一个。由于其将第二和第三单词均标记为动 verb ,导致在单个句子内部出现' 动 verb + 动 verb '的现象。
假如我们对每一个标注序列进行评断,并以评断分数高低作为衡量该标注序列可靠程度的标准。对于任何包含"动词后跟动词形式"的情况,则给予该标注序列"扣分!"
动词后面还是动词 也是一个特征函数特性,在信息处理领域中我们通常会构建一个特征函数集合,并将这些特征函数应用于给定的标注序列上进行评分计算。具体来说,在对某个标注序列进行评估时,我们会遍历整个特征函数集合中的每一个判别标准,并根据其匹配程度为该标注序列赋予相应的评分值;最终通过综合所有特征函数的信息就能确定最合适的标注结果了。
定义CRF中的特征函数
在此基础上, 为了明确起见, 我们将详细阐述CRF模型中特征函数的定义. 在CRF模型中所定义的特征函数被称为线性链条件随机场中的状态转移特征, 其具体表现为一组基于输入序列及其前后状态之间的加权组合. 这种形式下, 特征函数的输出结果直接反映了各状态之间存在的可能性关系. 其输入参数包括当前状态、前一状态以及对应的输入序列信息等四个关键要素.
- 句子s(即我们需进行词性标注的对象)
- i用于表示该句子中的第i个单词
- l_i代表该评分类系统对第i个单词所赋予的词性
- l_{i−1}代表该评分类系统对前一个单词所赋予的词性
该方法返回的结果为0或1。当返回结果为0时,则表明待评估标注序列不满足该特征的要求;而当返回结果为1时,则表明待评估标注序列符合该特征的要求。
Note
从特征函数到概率
建立一组特征函数后,在此之后我们需要为每个特征函数f_j分配一个权值λ_j。一旦有了一个具体的句子s以及对应的标注序列l,在我们已经构建好的特征函数集合F的基础上就可以通过这些特征函数计算出l的评价值。
pic1.PNG
上式中包含两个累加操作:外部累加作用于每个特征函数f_j的所有评分值之和;内部累加则用于计算句子中各个位置单词对应的特征值之总和。
对该分数实施指数运算并归一化处理 ,我们就能计算得到相应的概率值p(l|s) ,具体而言如下所示。
pic2.PNG
几个特征函数的例子
在上文中我们已经列举了特征函数的具体实例,在此基础上让我们进一步考察几个具有代表性的实例
pic3.PNG
如果l_i标记为副词且第i个单词以'ly'结尾,则将f₁赋值为1。
否则其值设为0。
显然地, 特征函数f_1对应的权重\lambda_₁应当是正数。
由于\lambda_₁数值越大, 因此赋予较高的\lambda_₁意味着我们更偏好于那些将以'ly'结尾的单词作为副词进行标注的序列。
pic4.PNG
当i等于1时,在句子s以问号结束的情况下,在l_i被标记为动词的同时,在f₂上赋值为1,在其他情况下则赋值为0。同样地,在模型参数中,默认情况下λ₂必须是一个正值。而随着λ₂值越大,则模型倾向于选择那些将第一个单词作为问句的第一个动作标记的情况。
pic5.PNG
当变量l_{i-1}被标记为介词,并且变量l_i被标记为名词时,则f_3的值设为1;否则其值设为0。参数λ_3必须为正数,并且其数值越大表明我们越倾向于认为介词之后应紧跟名词
pic6.PNG
当l_i与前一个符号l_i-1均为介词时,在计算f4指标时其值将被设定为1;反之则设为0。由此可知,在这种情况下λ4取值为负,并且其绝对值越大就意味着我们在判断介词与其后面所跟符号之间的关系时越倾向于否定这种关系。
至此这样一个条件随机场得以建立起来让我们总结如下为此构建一个条件随机场首先需要定义一个特征函数集每个特征函数均基于整个句子s当前位置i及其前一位置的标签作为输入随后为每个特征函数赋予相应的权重系数将各特征函数按权重相加计算总分必要时可将总分转化为对应的概率值
CRF与逻辑回归的比较
观察公式:
是不是有点像逻辑回归的感觉? 实际上就是将逻辑回归进行序列化的版本。而逻辑回归主要用于分类任务中的对数线性模型,在这里被扩展为适用于序列标注任务的对数线性模型。
CRF与HMM的比较
针对词性标注问题而言,HMM模型同样具备解决方案的能力。其基本思路是采用生成式的方法,在给定待标记的句子s时计算并确定相应标签序列l的概率。
pic7.PNG
p(l_i | l_{i-1}) 表示转移概率,在这种情况下, l_{i-1} 是介词而 l_i 是名词, 因此 p 表示介词后跟的是名词的概率。
p(w_i | l_i) 表示发射概率, 例如当 l_i 是名词时, w_i 是单词 "ball", 此时 p 表示处于名词状态下出现 "ball" 的概率。
那么说来的话,在比较HMM与CRF时又该如何呢?可以说CRF在性能上远超于HMM,在完成同样的任务时能展现出更多的优势。实际上可以说很多其他的问题都难以被现有的方法所解答。进一步来说,在处理上述的HMM模型时如果我们对其进行相应的处理就能得到更加高效的结果。这就转化为下面的形式:
pic8.PNG
我们把这个式子与CRF的式子进行比较:
pic1.PNG
容易注意到的是,在将第一个HMM模型中的对数形式的概率视为第二个CRF模型中特征函数所对应的参数的情况下,则会发现这两种模型呈现出相同的结构特点
换句话说,我们可以构造一个CRF,使它与HMM的对数形式相同。怎么构造呢?
在HMM模型中每个转移概率p(l_i=y|l_{i-1}=x)的情况下, 我们能够构建这样一个特征函数:
pic9.PNG
该特征函数仅当l_i = y,l_i-1=x时才等于1。这个特征函数的权重如下:
pic10.PNG
同样的,在HMM中每个发射概率值上(即每个状态到观测的条件概率),我们都可以建立相应的特征函数模型,并使该模型的权重参数对应于HMM中的对数形式的发射概率值。
通过这一系列特征函数及其对应的权重参数计算得到的概率值p(l|s),在数值上非常接近于对数域下的隐马尔可夫模型。
用一句话来说明HMM和CRF的关系就是这样:
每一个 HMM模型都相当于一个特定的 CRF 结构
每个** HMM模型都能对应到一个独特的 CRF 系统
每个** HMM模型均与特定的一个 CRF 具有对应关系
但是,CRF要比HMM更加强大,原因主要有两点:
- CRF可以定义数量更多,种类更丰富的特征函数 。HMM模型具有天然具有局部性,就是说,在HMM模型中,当前的单词只依赖于当前的标签,当前的标签只依赖于前一个标签。这样的局部性限制了HMM只能定义相应类型的特征函数,我们在上面也看到了。但是CRF却可以着眼于整个句子s定义更具有全局性的特征函数,如这个特征函数:
pic4.PNG
如果i=1,l_i=动词,并且句子s是以“?”结尾时,f2=1,其他情况f2=0。
- CRF支持任意权重 将其视为CRF时,则其特征函数的权重要么为负数或零;且概率还需满足特定条件。
pic11.PNG
但在CRF中,每个特征函数的权重可以是任意值,没有这些限制。
