CRF-条件随机场

CRF:Conditional Random Fields 条件随机场

统计机器学习所有的模型(个别instant model和优化算法以及其他的特种工程知识点除外)的工作流程都是如此:
a.训练模型参数,得到由参数唯一确定的模型
b.预测给定的测试数据。

概述

CRF 条件随机场是给定一组输入随机变量条件下,另一组输出随机变量的 条件概率分布模型,其特点是假设输出随机变量构成马尔可夫随机场。线性链条件随机场属于由输入序列对输出序列预测的判别模型,形式为对数线性模型,其学习方法通常是极大似然估计或正则化的极大似然估计。

词性标注

记录 crf 之前先从词性标注任务说起,词性标注任务,词性标注就是给定一个序列,比如一句中文序列,分词之后,为每一个词打上其输入哪一种词性的标签,比如这句话:我 喜欢 在 学校 吃 苹果,注明词性之后得到的是:我/n 喜欢/v 在/pre 学校/pl 吃/v 苹果/n
可以看到词性标注任务属于给定一个输入序列X,然后对输出序列Y进行预测的线性链条件随机场。这时,在条件概率P(Y|X)中,Y是输出变量,表示标记序列,X是输入变量,表示需要标注的观测序列。
学习时,利用训练数据集通过极大似然估计或正则化的极大似然估计得到条件概率模型P(Y|X);预测时,对于给定的输入序列x,求出条件概率P(y|x)最大的输出序列y
现在就看看 如何用 crf 模型 来处理词性标注问题

特征函数

  1. 每一种语言都遵循一定的句法结构,比如通常 名词后面会跟一个动词,动词后面再跟一个名词,等等类似这样的句法约定,我们把序列标注中,合理的句法约定看做一个 特征函数,比如:名词+动词;动词+名词,动词+动词...
  2. 所有的这些约定,但是:动词+动词,一般在一句话里是不合法的,这样的错误组合也全部考虑进特征函数集合中,然后用这个定义的特征函数集合去给 输入序列 x 进行打分,当序列中两个 词是:名词+动词的组合,那么根据特征函数中的预先定义的,这是一个合法的句法特征,那么为当前的这个序列 加分,如果序列中出现了:动词+动词 的不合法句法特征,则相应为当前序列标注减分。
  3. 最后,把集合中所有特征函数对同一个标注序列的评分综合起来,就是这个标注序列最终的评分值。

概率定义

特征函数的参数如下:

  • 句子 s(就是我们要标注词性的句子)
  • i ,用来表示句子 s 中第 i 个单词
  • l_i ,表示要评分的标注序列给第 i 个单词标注的词性
  • l_i-1 ,表示要评分的标注序列给第 i-1 个单词标注的词性
    特征函数输出值为 0 或 1,0 表示要评分的标注序列不符合这个特征,1 表示要评分的标注序列符合这个特征。
    定义好一组特征函数后,我们要给每个特征函数 f_j 赋予一个权重 λ_j 。现在,只要有一个句子 s,有一个标注序列 l,我们就可以利用前面定义的特征函数集来对 l 评分。

    上式中有两个相加,外面的相加用来相加每一个特征函数 f_j ,里面的相加用来相加句子中每个位置的单词的的特征值。
    对这个分数进行指数化和标准化,我们就可以得到标注序列l的概率值p(l|s),如下所示:

为了建一个条件随机场,首先要定义一个特征函数集,每个特征函数都以整个句子 s,当前位置 i,位置 i 和 i-1 的标签为输入。然后为每一个特征函数赋予一个权重,然后针对每一个标注序列 l ,对所有的特征函数加权求和,必要的话,可以把求和的值转化为一个概率值。

以上内容参考作者:工程师milter
如何用简单易懂的例子解释条件随机场(CRF)模型?

作者的例子能通俗理解 crf ,但是深入肝还是要结合HMM等概率图模型的只知识。

BiLSTM+CRF

根据上面的理解可以知道 crf 能够对句子序列起到一定的约束作用,下面记录一下 在循环神经网络 BiLSTM 的输出之后在接一层 CRF 所起到的作用:
下面这张图是 命名实体任务中,当我们的序列输入一个 BiLSTM 网络之后,再输入一个分类器,对于每个词应该属于哪一种 实体标签给出了概率预测值,但是我们知道这样的预测不一定就是正确的,所以此时在 BiLSTM 层后面再接一个 CRF 层。



CRF层可以加入一些约束来保证最终预测结果是有效的。这些约束可以在训练数据时被CRF层自动学习得到。如下:



可能的约束条件,也就是上文提到的特征函数:
  • 句子的开头应该是“B-”或“O”,而不是“I-”。
  • “B-label1 I-label2 I-label3…”,在该模式中,类别1,2,3应该是同一种实体类别。比如,“B-Person I-Person” 是正确的,而“B-Person I-Organization”则是错误的。
  • “O I-label”是错误的,命名实体的开头应该是“B-”而不是“I-”。
    加上这些约束之后,再得到预测序列,理论上错误会大大减少

1. Transitions Score

可以看到这些约束中,在指定指定从一个序列转移到下一个序列的可能性,这个可能性称作转移分值 Transition Score ,这些序列和序列之间的转移分值会构成一个矩阵,在训练模型之前,可以随机地初始化矩阵中所有的 transition score。

self.transitions = nn.Parameter(
            torch.randn(self.tagset_size, self.tagset_size))

在之后的训练过程中,这些随机初始化的 score 将会被自动更新。CRF 层可以自己学习到这些约束。我们并不需要手动创建这样一个矩阵。这些分数值会随着训练的迭代次数的增加,变得越来越 “合理”。转移矩阵 如下图例:


2. Emission Score

BiLSTM 的输出是每个词对应的每个 lable 的概率,那么这个词:label 的矩阵就形成了 发射矩阵,Emission score 就是对应生成每个 label 的概率值。如下图;


于是发射矩阵和初始化的转移矩阵形成 CRF 的训练要素,在不断迭代过程中更新转移矩阵的参数值,在预测阶段时,输入一个序列,根据转移矩阵的参数进行维特比解码,得到最优化的预测序列标注值。

3. CRF 损失函数

损失函数由真实转移路径值所有可能转移路径值两部分组成。真实路径表示在所有可能转移路径中具有最高 score 的路径。在训练阶段,BiLSTM-CRF模型的参数值将会一直不停的被更新,来提高真实路径的分数值所占的比重。最终得到最合理的标注序列结果。
假设每条可能的路径最终的分数值为:P_i,现在有N条可能的路径,那么所有路径的分数值为:Ptotal=P_1+P_2+...+P_N,如果说第3条路径是真实的路径,也就是训练集提供的该句子真实的实体标记序列路径,那么P_3应该在全部可能的路径中占最高的分值比例。于是得到损失函数:
LossFunction=\frac{Prealpath}{P_1+P_2+...+P_N}
在训练过程中,训练目标为不断使得真实路径值占全部路径值的概率值达到最大。

关于 BiLSTM-CRF 的理解主要是翻译这篇英文:https://createmomo.github.io/

参考:

BiLSTM+CRF理解
CRF Layer on the Top of BiLSTM - 1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,468评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,620评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,427评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,160评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,197评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,334评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,775评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,444评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,628评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,459评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,508评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,210评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,767评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,850评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,076评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,627评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,196评论 2 341

推荐阅读更多精彩内容