条件随机场 (CRF)

article/2025/11/6 22:09:25

背景

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

随机场有多种,一些已有的随机场如:马尔可夫随机场(MRF), 吉布斯随机场 (GRF), 条件随机场 (CRF), 和高斯随机场。

随机场

定义一:简单来说,随机场可以看作是一组对应于同一样本空间的随机变量的集合。一般来说,这些随机变量之间存在依赖关系,也只有当它们之间存在依赖关系的时候,我们才会将其单独拿出来看成一个随机场才有实际意义。

定义二:随机场是由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。

CRF原理理解

下图表示我们的序列连接与预测。
在这里插入图片描述
CRF是进行了假设,一共两个假设,如下:
x \bf{x} x
在这里插入图片描述

P ( y 1 , ⋯ , y n ∣ x ) P(y_1, \cdots,y_n|x) P(y1,,ynx)
在这里插入图片描述
在上述表示中 h ( y 1 ; x ) h(y_1;\bm{x}) h(y1;x)的相邻位置为 g ( y 1 , y 2 ; x ) g(y_1,y_2;\bm{x}) g(y1,y2;x)
尽管已经做了大量简化,但一般来说,(3) 式所表示的概率模型还是过于复杂,难以求解。于是考虑到当前深度学习模型中,RNN 或者层叠 CNN 等模型已经能够比较充分捕捉各个 y 与输出 x 的联系(主要是学习序列信息),因此,我们不妨考虑函数 g 跟 x 无关,那么:
在这里插入图片描述

引入时间序列模型(RNN做卷积), x \bm{x} x y y y之间的关系直接用 y y y y y y去考虑。 这时候 g g g 实际上就是一个有限的、待训练的参数矩阵而已,而单标签的打分函数 h ( y i ; x ) 。 h(y_i;\bm{x})。 h(yi;x) 我们可以通过 RNN 或者 CNN 来建模。因此,该模型是可以建立的,其中概率分布变为:
在这里插入图片描述

算法步骤

重点:相比于HMM,要进行模型训练。HMM直接打标签了,这里对每个句子中的词通过0,1,2,3,4打了标签。

具体步骤

卷积层:通过一维卷积得到邻域信息。
CRF层:训练概率转移矩阵 4 × 4 4\times4 4×4(B,M,E,S), 概率矩阵被初始化得到。之后通过与ground true的lable相乘计算得到。
预测层:计算概率转移矩阵 4 × 4 4\times4 4×4(B,M,E,S),总共16个值,这一步在代码分析中,是通过网路计算出来的, 在CRF自定义的网络层。
结果层:模型训练完成之后再通过verterbi算法找最优解。

代码理解

分子的计算
    def path_score(self, inputs, labels):"""计算目标路径的相对概率(还没有归一化)要点:逐标签得分,加上转移概率得分。技巧:用“预测”点乘“目标”的方法抽取出目标路径的得分。"""#下面这一步计算的可能是h(y_1, x)等point_score = K.sum(K.sum(inputs * labels, 2), 1, keepdims=True)  # 逐标签得分labels1 = K.expand_dims(labels[:, :-1], 3)labels2 = K.expand_dims(labels[:, 1:], 2)labels = labels1 * labels2  # 两个错位labels,负责从转移矩阵中抽取目标转移得分trans = K.expand_dims(K.expand_dims(self.trans, 0), 0)trans_score = K.sum(K.sum(trans * labels, [2, 3]), 1, keepdims=True)return point_score + trans_score  # 两部分得分之和

这里计算的主要是公式一下部分,在这里插入图片描述
后边部分的k是包含在求和符号里面的,上半部分为下半部分中的大括号里里面的。 h ( ⋅ ) h(\cdot) h()表示是前面的网络层。
在这里插入图片描述

分母的计算

类似于RNN, LSTM, GRU,需要通过前一个节点推下一个节点,因此产生了时间序列
在这里插入图片描述

outputs = K.logsumexp(states + trans, 1) 

这个包含了,公式的右半部分的两个元素的对应乘积。
在这里插入图片描述
在这里插入图片描述

这里注意一下,这两个指数的相乘在代码中, Z Z Z利用rnn的递归特性进行求解。
batch_size为128, crf的inputs输入是一个样本个数,乘以状态个数的矩阵。

    def log_norm_step(self, inputs, states):"""递归计算归一化因子要点:1、递归计算;2、用logsumexp避免溢出。技巧:通过expand_dims来对齐张量。inputs is predictive label, input is hinit_states (128, 4)"""#states[0] is (128,4)inputs, mask = inputs[:, :-1], inputs[:, -1:]#上边语句执行后 inputs shape is [128,4], mask shape is [128,1] 相当于每一个每一个句子中的第一个词states = K.expand_dims(states[0], 2)  # (batch_size, output_dim, 1) (128, 4, 1)#print("states shape:", states.shape)trans = K.expand_dims(self.trans, 0)  # (1, output_dim, output_dim) (1, 4, 4)# states+trans shape is (128,4,4), first exp, then sum, last to get log, 下面这一步表示了图转移outputs = K.logsumexp(states + trans, 1)  # (batch_size, output_dim)#outputs is [128,4]outputs = outputs + inputs#outputs is [128,4], states[:,:,0] is [128,4]outputs = mask * outputs + (1 - mask) * states[:, :, 0]print("states[:,:,0].shape",states[:,:,0].shape)return outputs, [outputs]

内容链接

https://www.cnblogs.com/gczr/p/10021249.html
https://www.jiqizhixin.com/articles/2018-05-23-3 (CRF实现附带链接)
https://blog.csdn.net/dianwei0041/article/details/101882673?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control(为什么要用CRF)
https://zhuanlan.zhihu.com/p/29989121
https://tech.meituan.com/2020/07/23/ner-in-meituan-nlp.html(美团NER探索实践)
https://wenku.baidu.com/view/d7cb1e7952d380eb63946d09.html(说明了条件随机场)


http://chatgpt.dhexx.cn/article/5npoIHI0.shtml

相关文章

条件随机场简介(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___ 由上图可知,在同一层中,如…

RBM

目录 总结: 伯努利-伯努利RBM 概念: 公式定义 训练过程 高斯-伯努利RBM 概念: 总结: RBM是基于能量函数假设的,优化目标是使能量函数最小化,也设定为重构的可见层等于真实值的概率最大化。在利用极…

DL:RBM 简介、网络结构

在学习Hinton的stack autoencoder算法(论文 Reducing the Dimensionality of Data with Neural Networks)之前需要了解什么是RBM,现在就我学习的情况,查找的资料(大部分来自博客、论文),简单介绍…