Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >条件随机场(CRF)的详细解释

条件随机场(CRF)的详细解释

作者头像
deephub
发布于 2022-04-14 04:11:55
发布于 2022-04-14 04:11:55
1.8K00
代码可运行
举报
文章被收录于专栏:DeepHub IMBADeepHub IMBA
运行总次数:0
代码可运行

条件随机场(CRF)由Lafferty等人于2001年提出,结合了最大熵模型和隐马尔可夫模型的特点,是一种无向图模型,常用于标注或分析序列资料,如自然语言文字或是生物序列。近年来在分词、词性标注和命名实体识别等序列标注任务中取得了很好的效果。

条件随机场是一类最适合预测任务的判别模型,其中相邻的上下文信息或状态会影响当前预测。CRF 在命名实体识别、词性标注、基因预测、降噪和对象检测问题等方面都有应用。

在本文中首先,将介绍与马尔可夫随机场相关的基本数学和术语,马尔可夫随机场是建立在 CRF 之上的抽象。然后,将详细介绍并解释一个简单的条件随机场模型,该模型将说明为什么它们非常适合顺序预测问题。之后,将在 CRF 模型的背景下讨论似然最大化问题和相关推导。最后,还有一个过对手写识别任务的训练和推理来演示 CRF 模型。

马尔可夫随机场

马尔可夫随机场(Markov Random Field)或马尔可夫网络( Markov Network)是一类在随机变量之间具有无向图的图形模型。该图的结构决定了随机变量之间的相关性或独立性。

马尔可夫网络由图 G = (V, E) 表示,其中顶点或节点表示随机变量,边表示这些变量之间的依赖关系。

该图可以分解为 J 个不同的团(小的集团 cliques )或因子(factors),每个由因子函数 φⱼ 支配,其范围是随机变量 Dⱼ 的子集。对于 dⱼ 的所有可能值,φⱼ (dⱼ) 应该严格为正。

对于要表示为因子或团的随机变量的子集,它们都应该在图中相互连接。所有团的范围的并集应该等于图中存在的所有节点。

变量的非归一化联合概率是所有因子函数的乘积,即 对于上面显示的 V = (A, B, C, D) 的 MRF,联合概率可以写为:

分母是每个变量可能取的所有可能的因子乘积的总和。它是一个常数表示,也称为配分函数,通常用Z。

Gibbs Notation

还可以通过对对数空间中的因子函数进行操作,将关节表示为Gibbs 分布。使用 β (dⱼ) = log (ϕ (dⱼ)),可以用 Gibbs 表示法表示共同的边,如下所示。X 是图中所有随机变量的集合。β 函数也称为factor potentials。

这个公式很重要,因为本文将在后面使用 Gibbs 符号来推导似然最大化问题。

条件随机场模型

让我们假设一个马尔可夫随机场并将其分为两组随机变量 Y 和 X。

条件随机场是马尔可夫随机场的一个特例,其中图满足以下属性:“当我们在 X 全局条件下,即 当X中随机变量的值固定或给定时,集合Y中的所有随机变量都遵循马尔可夫性质p(Yᵤ/X,Yᵥ,u≠v)=p(Yᵤ/X,Yₓ,Yᵤ~Yₓ ),其中 Yᵤ ~ Yₓ 表示 Yᵤ 和 Yₓ 是图中的邻居。” 变量的相邻节点或变量也称为该变量的马尔可夫毯(MarkovBlanket)。

满足上述属性的一个这样的图是下面共享的链结构图:

由于 CRF 是一个判别模型,即 它对条件概率 P (Y / X) 进行建模,即 X 总是给出或观察到。因此,该图最终简化为一条简单的链。

当我们以 X 为条件并试图为每个 Xᵢ 找到相应的 Yᵢ 时,X 和 Y 也分别称为证据变量和标签变量。

验证上面显示的“因子缩减”CRF模型符合下面为可变Y₂所示的马尔可夫属性。由此可见,给定所有其他变量的Y₂的条件概率最终只取决于相邻节点。

满足马尔可夫性质的变量 Y₂,条件仅取决于相邻变量

CRF 理论和似然优化

让我们首先定义参数,然后使用 Gibbs 表示法建立联合(和条件)概率的方程。

  1. Label domain:假设集合 Y 中的随机变量有一个域:{m ϵ ℕ | 1≤m≤M}即前 M 个自然数。
  2. Evidence structure and domain:假设集合 X 中的随机变量是大小为 F 的实值向量,即∀ Xᵢ ϵ X, Xᵢ ϵ Rˢ。
  3. 设 CRF 链的长度为 L,即L 个标签和 L 个证据变量。
  4. 令 βᵢ (Yᵢ, Yⱼ) = Wcc '如果 Yᵢ = c, Yⱼ = c' 并且 j = i + 1, 否则为 0。
  5. 令 β'ᵢ (Yᵢ, Xᵢ) = W'c。Xᵢ,如果 Yᵢ = c,否则为 0,其中。表示点积,即W’c ε Rˢ。
  6. 请注意,参数的总数是 M x M + M x S,即每个标签转换有一个参数(M x M 个可能的标签转换)和每个标签(M 个可能的标签)的 S 个参数,这些参数将乘以该标签处的观察变量(大小为 S 的向量)。
  7. 令 D = {(xn, yn)} for n = 1 to N,为由 N 个示例组成的训练数据。

其中似然表达式可以表示如下:

所以训练问题归结为最大化所有模型参数 Wcc'和 W'cs 的对数似然。

关于 W'cs 的对数似然梯度推导如下:-

上面等式中的第二项表示y'ᵢ等于c的边际概率之和(在y'可以取的所有可能值上),由xnis加权。y'-i 这里表示除位置 i 之外每个位置的标签 / y 变量的集合。

可以为 dL / dWcc '计算出类似的推导,结果如下:

这就是标签-标签权重的似然导数

现在已经有了导数和对数似然的表达式,实际上就可以从头开始编写 CRF 模型。可以使用上面提到的方程进行编码,使用置信传播来计算边际并计算出导数,然后使用现成的优化算法(如 L-BFGS)优化。

但是为了简单起见,我们不会重新发明轮子,我们使用使用现有的 CRFSuite 库进行演示。

演示 - 手写识别

到目前为止,应该相当清楚 CRF 的结构为什么以及如何使它们成为捕获顺序关系的任务的理想选择,例如 POS 标记句子、命名实体识别等。在这个本文中将使用 CRF 进行笔迹检测任务。

为了准备这个演示的数据集,使用了斯坦福 OCR 数据集和Gutenberg项目存档的组合。

数据集准备

斯坦福 OCR 数据集总共包含 6877 个手写单词,分为 9 折。每个单词的第一个字符都不是小写字符。对于每个单词中的每个手写字符,数据集包含一个长度为 128 的二进制数组,可以将其转换为大小为 16x8 的图像。数据集中的一些单词可视化结果如下:-

经过分析,我发现整个数据集中的唯一词数量只有 24 个。

我们希望 CRF 模型能够学习标记观察值 (xᵢ),这些观察结果是同时出现的字符像素向量。尽管就字符像素向量而言,数据集中有 6,877 个独特的样本,对于 24 个单词组合来说数据量非常的小,可能无法以概率的方式捕捉一般英语中的字符共现和进行单词识别器。

为了解决这个问题,我决定使用所有字符向量表示来创建一个新的数据集。我为字典中的每个字符捕获了数据集中可用的所有不同字符像素向量变体。在完成后,导入了名著《白鲸记》中出现的所有单词,并过滤掉所有长度小于 3 或包含字母集以外的内容,然后将过滤后的标记转换为小写。这种方式总共提取了 18,859 个单词,然后按词长分成训练集和测试集,。

为了构成 CRF 模型的实际训练和测试集,我使用了我一开始创建的字符到像素数组矢量图。为了创建单词图像 / x,我使用统一采样从字典中为该字符挑选了一个像素数组向量变体。创建的数据集的结果如下:

训练和测试数据集准备好后,就可以训练模型并根据任务对其进行评估了。

模型训练与评估

这里只粘贴主要代码,全部代码请看最后:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def train_model(X, Y, max_iter_count,  model_store = "handwriting-reco.crfsuite"):
trainer = pycrfsuite.Trainer(verbose=False)

for xseq, yseq in zip(X, Y):
        trainer.append(xseq, yseq)

trainer.set_params({
    'c1': 1.0,   # coefficient for L1 penalty
    'c2': 1e-3,  # coefficient for L2 penalty
    'max_iterations': max_iter_count,  # stop earlier

    # include transitions that are possible, but not observed
    'feature.possible_transitions': True
})

trainer.train(model_store)

print(trainer.logparser.last_iteration)


def get_preds(X, model_store = "handwriting-reco.crfsuite"):
tagger = pycrfsuite.Tagger()
tagger.open(model_store)
Y_pred = [tagger.tag(x) for x in X]

return Y_pred


def test_model(X_test, Y_test):
Y_test_pred = get_preds(X_test)

lb = LabelBinarizer()

y_test_combined = lb.fit_transform(list(chain.from_iterable(Y_test)))
y_pred_combined = lb.transform(list(chain.from_iterable(Y_test_pred)))

print "Test accuracy : {}".format(accuracy_score(y_test_combined, y_pred_combined))

使用上面的脚本,我在包含15088个单词的训练集上训练了一个CRF模型,在测试集上达到了接近85%的准确率,看样子还是很不错的。

CRF 与隐马尔可夫模型有何不同

机器学习模型有两个常见的分类,生成式和判别式。条件随机场是一种判别分类器,它对不同类之间的决策边界进行建模。而生成模型是建立数据如何生成的模型,在学习后可用于进行分类。举个简单的例子,朴素贝叶斯是一种非常简单且流行的概率分类器,是一种生成算法,而逻辑回归是一种基于最大似然估计的分类器,是一种判别模型,同理条件随机场也是。

CRF 与隐马尔可夫模型都用于对顺序数据进行建模,但它们是不同的算法。

隐马尔可夫模型是生成式的,它通过对联合概率分布建模来给出输出。而条件随机场具有判别性,对条件概率分布进行建模。CRF 不依赖独立性假设(即标签相互独立),并且避免标签偏差。隐马尔可夫模型是条件随机场的一个非常具体的例子,使用的转移概率是一个常数。hmm基于朴素贝叶斯(Naive Bayes),说朴素贝叶斯可以从逻辑回归(Logistic Regression)中导出,而逻辑回归是crf的衍生。

CRF 的应用

由于crf具有对顺序数据建模的能力,因此在自然语言处理中经常使用crf,并且在该领域有许多应用。例如词性标记,句子的词性依赖于先前的单词,通过使用利用这一点的特征函数,可以使用 CRF 来学习如何区分句子中的哪些词对应于哪个 POS。另一个类似的应用是命名实体识别,或从句子中提取专有名词。条件随机场可用于预测多个变量相互依赖的任何序列。其他应用包括图像中的部分识别和基因预测。

作者:Aditya Prasad & Ravish Chawla

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DeepHub IMBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一次性弄懂马尔可夫模型、隐马尔可夫模型、马尔可夫网络和条件随机场!(词性标注代码实现)
相信大家都看过上一节我讲得贝叶斯网络,都明白了概率图模型是怎样构造的,如果现在还没明白,请看我上一节的总结:贝叶斯网络
mantch
2019/07/30
12.8K0
一次性弄懂马尔可夫模型、隐马尔可夫模型、马尔可夫网络和条件随机场!(词性标注代码实现)
理解条件随机场
原文PDF:http://www.tensorinfinity.com/paper_170.html
SIGAI学习与实践平台
2019/06/18
1.5K0
理解条件随机场
条件随机场学习笔记
这是在《统计学习方法》中学习到的最后一个方法了,不像其他统计方法,学完精气神超足,都能让我继续振奋好几日。然学完该方法,我陷入了沉思与迷茫。首先,对条件随机场的【提出】和【应用场景】一片混沌,其次,说说它的思想吧,无非加入了【空间属性】,相比最大熵模型,多加入了【边特征函数】,而随机变量【X,Y】的联合概率分布的表达式并没有发生本质变化,所以说,它还是一个我认为的【概率模型】。既然是【概率模型】,那么它依旧可以用【对数似然函数】进行迭代求解,事实也是这样做的。但我所不解的是为何概率表达式清一色的表示为exp和规范化因子呢?难道仅仅因为exp在求导和概率计算中有很好的性质么?
用户1147447
2019/05/26
7340
干货 | 条件随机场详解之模型篇
关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 条件随机场部分分为两篇讲解,今天这一篇主要简单的讲述什么是条件随机场以及在这之前的概率无向图模型,下一次将从优化算法的层面上论述如何优化这个问题。(理解本篇文章需要对数理统计和图论有一定的基础) 条件随机场(Conditional Random Fields),简称 CRF,是一种判别式的概率图模型。条件随机场是在给定随机变量X条件下,随机变量Y的马尔科夫随机场。原则上,条件随机场的图
昱良
2018/04/08
1.4K0
干货 | 条件随机场详解之模型篇
【NLP】用于序列标注问题的条件随机场(Conditional Random Field, CRF)
上一篇介绍了隐马尔科夫模型,隐马尔科夫模型引入了马尔科夫假设,即当前时刻的状态只与其前一时刻的状态有关。但是,在序列标注任务中,当前时刻的状态,应该同该时刻的前后的状态均相关。于是,在很多序列标注任务中,引入了条件随机场。
用户1508658
2019/07/27
1.5K0
《统计学习方法》笔记十一 条件随机场
条件随机场是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可附随机场,条件随机场可用于不同的预测问题,书中仅讨论在标注问题的应用,主要讲述线性链条件随机场,问题变成由输入序列对输出序列预测的判别模型,形式为对数线性模型,学习方法通常是极大似然估计或正则化的极大似然估计。
闪电gogogo
2019/07/02
5800
NLP系列学习:CRF条件随机场(2)
这一篇文章是来自我的好朋友也是一位非常厉害的机器学习工程师的作品,征得同意后转载过来,作为条件随机场学习的一些趣味补充,也希望大家可以多多关注他,他的简书主页地址:
云时之间
2018/04/22
1K4
NLP系列学习:CRF条件随机场(2)
【NLP】一文介绍条件随机场
一个简单明了的对条件随机场的说明,给大家一个非常直观的印象,CRF到底是个什么东西,能干什么用。
yuquanle
2019/10/14
8040
【NLP】一文介绍条件随机场
深入理解结构化学习:从结构化感知器到条件随机场
推荐文章:SpringbBoot如何实现Tomcat集群的会话管理-腾讯云开发者社区-腾讯云
小说男主
2024/11/28
1560
深入理解结构化学习:从结构化感知器到条件随机场
实体识别(2) -命名实体识别实践CRF
CRF,英文全称为Conditional Random Field, 中文名为条件随机场,是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫(Markov)随机场。
致Great
2022/03/30
1.8K0
实体识别(2) -命名实体识别实践CRF
机器学习25:概率图--条件随机场(CRF)
条件随机场与马尔科夫随机场均使用团上的势函数定义概率,两者在形式上没有显著区别;但条件随机场处理的是条件概率,而马尔可夫随机场处理的是联合概率,这是两者的本质差异。
用户5473628
2019/08/08
1.2K0
机器学习25:概率图--条件随机场(CRF)
统计机器学习方法 for NLP:基于CRF的词性标注
知乎: nghuyong 链接: https://zhuanlan.zhihu.com/p/523164712
zenRRan
2023/01/10
1.1K0
统计机器学习方法 for NLP:基于CRF的词性标注
马尔可夫网络、马尔可夫模型、马尔可夫过程
这一节我们重点来讲一下马尔可夫,正如题目所示,看了会一脸蒙蔽,好在我们会一点一点的来解释上面的概念,请大家按照顺序往下看就会完全弄明白了,这里我给一个通俗易懂的定义,后面我们再来一个个详解。
大数据技术与机器学习
2019/11/20
2.9K0
条件随机场CRF(三) 模型学习与维特比算法解码
    在CRF系列的前两篇,我们总结了CRF的模型基础与第一个问题的求解方法,本文我们关注于linear-CRF的第二个问题与第三个问题的求解。第二个问题是模型参数学习的问题,第三个问题是维特比算法解码的问题。
刘建平Pinard
2018/08/07
1.3K0
条件随机场CRF(三) 模型学习与维特比算法解码
Linear-chain CRF的推导
在我们想要标注book这个词的时候,是将其标注成名词noun或者动词verb是需要取决于当前词的前一个词的。在这种情境下,前一个词‘a’的词性一个限定词(determiner),所以我们选择将book标注成noun(名词)。对于这样的序列标记任务,以及更一般的结构化预测任务,Linear-chain CRF对标签之间的上下文依赖关系建模是有帮助的。
致Great
2021/11/24
1.2K0
Linear-chain CRF的推导
用深度学习做命名实体识别(七)-CRF介绍
CRF,全称 Conditional Random Fields,中文名:条件随机场。是给定一组输入序列的条件下,另一组输出序列的条件概率分布模型。
AI粉嫩特工队
2019/11/22
2.1K0
用深度学习做命名实体识别(七)-CRF介绍
福利 | 图像的语义分割—CRF通俗非严谨的入门
本文节选自《深度学习轻松学》第九章—图像的语义分割,作者冯超。 福利提醒:想要获得本书,请在评论区留言,分享你的深度学习经验,第8、18、28、38以及48楼的用户可获得《深度学习轻松学》。同一用户评论仅认可最早的一条。 上个小节基本上完成了对FCN的基本介绍。FCN是一个将High-level问题的模型框架应用到Low-level问题的成功案例。但是,这个方法并没有完全解决问题。 在深度学习火热前,图像分割问题经常使用概率图模型的方式进行建模求解,于是很多人开始尝试了CNN和CRF模型结合的手段进行
AI科技大本营
2018/04/26
3.6K0
福利 | 图像的语义分割—CRF通俗非严谨的入门
什么是条件随机场 CRF: Conditional Random Fields
Conditional Random Fields 条件随机场,是一种判别模型,可以用于预测序列数据,通过使用过去的上下文信息,使模型达到更好的预测效果。
杨熹
2018/12/25
1.8K0
教程 | 如何直观地理解条件随机场,并通过PyTorch简单地实现
作者:Freddy Boulton 机器之心编译 参与:Pedro、思源 条件随机场是一种无向图模型,且相对于深度网络有非常多的优势,因此现在很多研究者结合条件随机场(CRF)与深度网络获得更鲁棒和可解释的模型。本文结合 PyTorch 从基本的概率定义到模型实现直观地介绍了 CRF 的基本概念,有助于读者进一步理解完整理论。 假设我们有两个相同的骰子,但是其中的一个是公平的,每个点数出现的概率相同;另一个骰子则被做了手脚,数字 6 出现的概率为 80%,而数字 1-5 出现的概率都为 4%。如果我给你一
机器之心
2018/06/11
1.4K0
HanLP《自然语言处理入门》笔记--6.条件随机场与序列标注
笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP
mantch
2020/02/18
6150
推荐阅读
相关推荐
一次性弄懂马尔可夫模型、隐马尔可夫模型、马尔可夫网络和条件随机场!(词性标注代码实现)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验