条件随机场详解

article/2025/11/6 21:55:27

为了更好地理解条件随机场,这里主要以命名实体识别为例子,介绍如何和LSTM结合,进行NER。

首先什么是NER,就是针对一句话的每个词,都标注出它们的词性,比如输入一句"Dog play football",就输出"名词 动词 名词",一开始,我们往往会想到seq2seq这类模型,但是有一个问题,单纯的LSTM、seq2seq这类模型,输出会选择针对输入序列最优的输出,可是并没有考虑到输出序列应该满足一定的条件,比如名词后面不能接名词等等,为了从数据中分析出这类限制并应用到模型的输出中,就需要我们的条件随机场了。

上图是一个命名实体识别的示意图,但是也可以用来说明POS,可以看到,CRF的主要作用就是针对BiLSTM的输出进一步进行分析,它主要分析的就是最终的输出之间应该有什么限制,比如它在数据中统计出名词后接名词的概率十分低,这种统计就是一种学习规律的过程,学习了规律之后,就需要构建一些函数去进行分析,调整最终的输出结果。

现在主要来分析一下CRF是如何学习这些限制条件的。首先,我们需要知道,CRF是一种无向概率图模型,也就是类似于隐马尔可夫模型,只是状态之间是相互影响的,一般的无向图有很多结构,但这里主要考虑线性链条件随机场:

还记得之前提到,无向图的联合概率可以分解为一系列定义在最大团上的非负函数(势函数)的乘积,在这里可以看到,最大团就是每一个xy对,也就是观测变量和状态变量,比如说,这个概率可以是观测变量为Dog、状态变量为名词的概率,于是,假设我们的模型现在初始化了一个状态转移概率(或者说得分,意思是从一个状态转移到另一个状态的可能性):

0.5 0.2 0.3 0.3 0.5 0.2 0.2 0.3 0.5 \begin{matrix} 0.5 & 0.2 & 0.3 \\ 0.3 & 0.5 & 0.2 \\ 0.2 & 0.3 & 0.5 \\ \end{matrix} 0.50.30.20.20.50.30.30.20.5

同时我们的BiLSTM也输出了当前各个观测向量对应各个状态的概率(上图),那么在训练的过程中,我们就可以结合训练输出的输出计算对应的得分:

S c o r e i = E m i s s i o n S c o r e + T r a n s i t i o n S c o r e Score_i = EmissionScore + TransitionScore Scorei=EmissionScore+TransitionScore

以"Dog play football"为例子,假设BiLSTM的输出是"N V N",那么我们就可以计算出模型对应的得分:

E m i s s i o n S c o r e = x 0 , s t a r t + x 1 , N + x 2 , V + x 3 , N + x 4 , e n d EmissionScore = x_{0,start} + x_{1,N} + x_{2,V} + x_{3,N} + x_{4,end} EmissionScore=x0,start+x1,N+x2,V+x3,N+x4,end
T r a n s i t i o n S c o r e = t s t a r t − > N + t N − > V + t V − > N + t N − > e n d TransitionScore = t_{start -> N} + t_{N -> V} + t_{V -> N} + t_{N -> end} TransitionScore=tstart>N+tN>V+tV>N+tN>end
S c o r e i = E m i s s i o n S c o r e + T r a n s i t i o n S c o r e Score_i = EmissionScore + TransitionScore Scorei=EmissionScore+TransitionScore

上面的start和end是句子的开头结尾标识符。另外,注意计算出来的score可以看成是一个个时刻的EmissionScore和TransitionScore对的和。

通过上面的过程,我们可以计算出得分,但为了把其转换为损失函数,我们还需要计算其他可能的序列的得分,并通过softmax函数标准化:

L O S S = P r e a l P 1 + P 2 + . . . + P N LOSS = \frac{P_{real}}{P_1 + P_2 + ... + P_N} LOSS=P1+P2+...+PNPreal
P N = e S c o r e N P_N = e^{Score_N} PN=eScoreN

上式中的P_real就是训练数据中对应的输出。

让我们再看回我们计算得分的公式:

P N = e S c o r e N = e E m i s s i o n S c o r e + T r a n s i t i o n S c o r e = e ( x 0 , s t a r t + t s t a r t − > N ) + . . . P_N = e^{Score_N} = e^{EmissionScore + TransitionScore} = e^{ (x_{0,start} +t_{start -> N}) + ... } PN=eScoreN=eEmissionScore+TransitionScore=ex0,start+tstart>N+...

上面这样写的目的,是为了联系之前提到的计算一个无向图联合概率的方法,是计算一系列定义在最大团上的非负函数(势函数)的乘积,这里最大团就是每一个时刻的观测向量和状态向量,对非负函数就是exp,我们计算了每个时刻的势函数结果再相乘就得到了PN的形式了。

除此之外,注意到上述的损失函数我们需要最大化而不是一般情况那样最小化,所以还需要修正一下:

L o g L o s s = − l o g P r e a l P 1 + P 2 + . . . + P N LogLoss = -log \frac{P_{real}}{P_1 + P_2 + ... + P_N} LogLoss=logP1+P2+...+PNPreal

除此之外,也要注意一下,损失函数需要计算所有路径的得分,实际上是通过迭代过程计算,而不是真的把所有路径的得分都计算一遍再加起来,这里暂不详细介绍。

以上主要介绍了基于BiLSTM和CRF的训练过程,那么一个学习完成的模型是怎么输出的呢。首先我们要知道,这个模型主要学习的有两个部分,一个是BiLSTM,一个是CRF中的状态转移概率,假设目前已经学习了所有参数,那么模型是怎么处理输入得到输出的呢。

之前在介绍隐马尔可夫模型时就介绍了维特比算法,它是一种解码算法,可以根据观察序列和状态转移概率去分析隐藏状态,实际上我们应用CRF时也是一种解码过程,把BiLSTM的输出看作观测向量,应用维特比算法就可以解出CRF的隐藏状态,也就是我们最终的输出。

最后,作为总结,用通俗的语言从几个角度再重新分析一下条件随机场。

第一点,条件随机场作为概率图模型,和隐马尔可夫模型一样,都可以用于序列标注,它们最主要的区别是一个是无向图模型一个是有向图模型,简单来说就是一个认为不同状态之间是相互影响的,另一个则认为不同状态之间是单向影响的,而这种区别,在公式上就体现在它们在计算一个序列出现的概率时,隐马尔可夫模型是用条件概率按序列顺序逐个相乘,而条件随机场则是分解为一个个最大团,应用势函数和softmax函数计算概率,其中并不需要按顺序计算,这里就是两者最大的区别。

第二点,关于BiLSTM-CRF模型,简单来说,在序列分析过程中,重点的改进在于CRF的应用,它分析了输出序列之间的转换概率,通过这个概率去表示不同状态之间的转换的合理性,比如在词性分析中,名词后接名词的概率很低,这个现象就可以通过转换概率较低反映出来。

第三点,在模型的应用过程中利用的维特比算法,它在隐马尔可夫模型中也有应用到。我个人认为,这个算法的核心在于求出当前情况下最优的路径,所谓当前情况就是指状态转移概率和观测向量,条件随机场和隐马尔可夫模型虽然不同,但这种区别仅仅反映在状态转移概率上,在求最优路径(隐藏状态序列)时,两者是具有一直目的(使得输出序列概率最大)。

最近本人在github写了一个自然语言处理的入门教程,包括模型的代码和模型的分析介绍,欢迎交流:NLPBeginner

想浏览更多关于数学、机器学习、深度学习的内容,可浏览本人博客


http://chatgpt.dhexx.cn/article/bEr8E5es.shtml

相关文章

条件随机场(CRF)

目录 1.定义 1.1 图 1.2 概率图模型(PGM) (1)有向图的联合概率: (2)概率无向图模型: 1.3 马尔可夫性 1.4 团与最大团 1.5 概率无向图模型的联合概率分布 1.6 条件随机场 …

条件随机场 (CRF)

背景 CRF和HMM是有相似性的,最后都是使用Verterbi算法来进行最优状态转移序列的确定。CRF主要用于序列标注问题。 本质:通过1D卷机学习近邻信息,然后输入到CRF定义好的计算方式中。 一些实现的库,并不能主观反应出CRF的计算方式&…

条件随机场简介(Conditional Random Fields, CRF)

首先,我们来看看什么是随机场。随机场是由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。以词性标注为例:假如我们有一个十个词组成的句子需要做词性标注,这十个词每个词…

简单理解条件随机场CRF

一、条件随机场是什么? 什么是条件随机场?我们先从它的命名开始说起,为什么是条件随机场这么奇怪的名字,为什么不叫飞机场、火葬场?通常数学上的命名是简单而直白的,大家听我一一解释。 条件 “条件”指…

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

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

RBM理论推导

RBM(Restricted Boltzmann Machine) 上面这个图就是一个RBM模型,它包括三个部分,最下面的可视层(visible layer),中间的权重连边(无向),上面的隐藏层&#xf…

受限玻尔兹曼机RBM简述与Python实现

生成式模型 生成式模型的理念大同小异,几乎都是用一个模型产生概率分布来拟合原始的数据分布情况,计算两个概率分布的差异使用KL散度,优化概率模型的方法是最小化对数似然,可以用EM算法或梯度优化算法。 今天表现比较好的生成模…

RBM系列1:预备知识

受限玻尔兹曼机是一种可用随机神经网络来解释的概率图模型。它由Smolensky于1986年在玻尔兹曼机(BM)的基础上提出,所谓“随机”,是指这种网络中的神经元是随机神经元,其输出只有两种状态(激活和未激活&…

深度学习20-限制玻尔兹曼机RBM

玻尔兹曼机来源于玻尔兹曼分布,而玻尔兹曼分布的创立者是路德维希玻尔兹曼,这个原理来源于他首次将统计学用于研究热力学,即物质的状态概率和它对应的能量有关。比如,我们常用熵来形容物体的混乱程度,同时如果我们的定…

【深度学习】受限玻尔兹曼机 (RBM) 初学者指南

一、说明 受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)是一种基于能量模型的人工神经网络。它只有一个隐层,将输入层和隐层中的每个神经元互相连接,但不同层的神经元之间没有连接。RBM是一种无向的概率图模型&am…

matlab rbm 语音,Deep Belief Network 学习笔记-RBM

Deep Belief Network 学习笔记-RBM By Placebo (纯属个人笔记) 第一次知道deep learning,是上学期dengli博士来实验室的一次报告,他讲到,当神经网络的层数大于2时(即一个hidden层,一个输出层,不算输入层,之…

受限玻尔兹曼机(RBM)

受限玻尔兹曼机(RBM) 一起读懂传说中的经典:受限玻尔兹曼机 https://mp.weixin.qq.com/s?__bizMzA3MzI4MjgzMw&mid2650731098&idx1&snc7391caee3a567b4b046406d53f022f2&chksm871b3624b06cbf320f3725fe452d291e04a4a8c1beda…

人工智能(pytorch)搭建模型13-pytorch搭建RBM(受限玻尔兹曼机)模型,调通模型的训练与测试

大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型13-pytorch搭建RBM(受限玻尔兹曼机)模型,调通模型的训练与测试。RBM(受限玻尔兹曼机)可以在没有人工标注的情况下对数据进行学习。其原理类似于我们人类学习的过程&#xff0c…

受限玻尔兹曼机(RBM)原理总结

https://blog.csdn.net/l7H9JA4/article/details/81463954 授权转发自:刘建平《受限玻尔兹曼机(RBM)原理总结》 地址:http://www.cnblogs.com/pinard/p/6530523.html 前 言 本文主要关注于这类模型中的受限玻尔兹曼机(Restrict…

特征工程(七)—特征学习RBM

1、MNIST数据集 """ MNIST数据集,包括6000个0-9手写数字图像,以及学习的真实值此处使用很低级的特征,而不是解释性很好的特征。每一个数据点包括784个特征(灰度图像的像素值) """impor…

特征学习-RBM与PCA应用在LR

Table of Contents 1. 基本信息查询 导入package2. 提取PCA 成分3. 提取RBM主成分 取出前20个最有代表性的特征提取后20个特征4. RBM在machine learning中效果 直接用LR模型采用PCA主成分的LR采用RBM主成分的LR 1. 基本信息查询 导入package import numpy as np import matpl…

受限玻尔兹曼机RBM

基本概念代码 基本概念 受限玻尔兹曼机(RBM)是一个两层神经网络,第一层被称为可见层,第二层被称为隐藏层,因为网络只有两层,所以又被称为浅层神经网络。 该模型最早由 Paul Smolensky 于 1986 年提出&…

理解RBMDBN

RBM 关于受限玻尔兹曼机RBM,网上很多博客[1][2]都总结推导RBM很详细,很少有人能通俗地解释一下RBM的用途和有点,我觉得[2]写得很好,可以参考辅助理解,下面简单总结一下我的理解和一些相关知识。 网络结构 RBM是一个…

中小企业RBM结合VRRP组网

组网拓扑图 FW-A配置: sysname FW1090-A # track 1 interface GigabitEthernet1/0/1 physical ///检测上行口 # track 2 interface GigabitEthernet1/0/2 physical ///检测下行口 # ospf 1 router-id 192.168.10.254 ///OSPF发布于核心互联路由 defa…

RBM受限玻尔兹曼机

受限玻尔兹曼机(RBM) 一、RBM的网络结构 RBM的网络结构如下图所示: RBM中包括两层,即: 可见层(visible layer),图上的___v___隐藏层(hidden layer),图上的___h___ 由上图可知,在同一层中,如…