机器学习之条件随机场CRF一点理解

2023-11-08

1. 前言

  最近看了一些有关于CRF的论文,基本概念懂,但是到求解的部分有些疑惑。CRF问题容易构成NP-hard问题,求解过程还需要再学习。下面稍微介绍一些CRF的学习吧,这里前面CRF内容主要参考了下面博文,讲的非常好:
http://blog.sina.com.cn/s/blog_6d15445f0100n1vm.html

2. 介绍

  条件随机场(Conditional random fields),是一种判别式图模型,因为其强大的表达能力和出色的性能,得到了广泛的应用。从最通用角度来看,CRF本质上是给定了观察值集合(observations)的马尔可夫随机场。在这里,我们直接从最通用的角度来认识和理解CRF,最后可以看到,线性CRF和所谓的高阶CRF,都是某种特定结构的CRF。

2.1. 随机场

  简单地讲,随机场可以看成是一组随机变量的集合(这组随机变量对应同一个样本空间)。当然,这些随机变量之间可能有依赖关系,一般来说,也只有当这些变量之间有依赖关系的时候,我们将其单独拿出来看成一个随机场才有实际意义。

2.2. Markov随机场(MRF)

  这是加了Markov性质限制的随机场。首先,一个Markov随机场对应一个无向图。这个无向图上的每一个节点对应一个随机变量,节点之间的边表示节点对应的随机变量之间有概率依赖关系。因此,Markov随机场的结构本质上反应了我们的先验知识——哪些变量之间有依赖关系需要考虑,而哪些可以忽略。
马尔科夫链最重要的则是考虑一步转移概率,放在图模型中理解,就是知道当前节点的状态,那么下一步转移到下个节点的概率分布是如何的。例如下图4个节点一步状态转移概率:
这里写图片描述
  马尔科夫链一步转移概率想要描述的问题即是,例如当前状态位于节点0,那么下次转移到节点0、1、2、3的概率分别是 p00 p01 p02 p03 。那么我们可以将所有状态的一步转移概率放到一个表格中,表示为转移概率表,其中每一行的每个数据为对应行状态转移到其他状态的概率。因为表示下个状态出现在各个节点的概率,状态不可能凭空消失,所以每一行的概率和一定为1。那么如果把这些数据存储到一个矩阵中,则是转移矩阵(Transition Matrix)。如下图:
这里写图片描述
  关于马尔科夫链这块的理解可以参考下面博文:
  http://blog.csdn.net/makenothing/article/details/41363971
  其实构建转移概率,哪些节点相连通是需要深入研究的,它决定了在后面计算中,哪些节点会产生相互影响。上面的表中其实也反映了,概率大于0的表示之间节点是相互连接的,后面迭代计算其特征或者性质会对其连接的节点产生影响。当这种相互影响通过迭代到无穷趋于稳定,反应的则是稳态后状态的分布。
  Markov性质是指,对Markov随机场中的任何一个随机变量,给定场中其他所有变量下该变量的分布,等同于给定场中该变量的邻居节点下该变量的分布。这让人立刻联想到马式链的定义:它们都体现了一个思想:离当前因素比较遥远(这个遥远要根据具体情况自己定义)的因素对当前因素的性质影响不大。
  例如2013年发表在CVPR上一篇关于显著性目标检测的经典论文,虽然使用的是流行排序算法,但是实质跟马尔科夫随机场有很多相似的地方。这篇文章,先将图片进行超像素分割,即性质相似的像素先聚类在一起构成一块一块的具有相似性质的像素集,称为超像素(superpixel),然后将每个超像素分割作为一个节点,整幅图像所有无重叠的超像素构成一个无向图。而在构建转移矩阵上,作者认为每个超像素和其相邻接的超像素,以及相连接超像素的相连接超像素之间是相互连通的,即某个超像素是否显著会由这些超像素影响。另外,作者考虑先验知识,即图像边界的超像素之间都是连接的,因为一般一幅图像中显著区域不会出现在边界区域。节点连接结果如下图所示:
  这里写图片描述
  图中只画了一个超像素和邻接超像素的连通性,以及边界超像素的连通性。而各个节点之间的边权重则是由Lab颜色特征的欧氏距离决定,越相似值越大,最后每一行标准化就构成了上面类似的转移矩阵。作者设置初始状态在边界上,即由边界先验性质的边界超像素为背景,然后通过转移概率迭代平滑,当达到收敛取反则高亮处为显著目标区域。当然,作者还经过了二次游走排序,具体内容请读者自行阅读研究。
  论文题目是:Saliency Detection via Graph-Based Manifold Ranking。
  下载地址在下面:

http://202.118.75.4/lu/Paper/CVPR2013/cvpr13_saliency_final.pdf

  另外需要强调下,这篇文章是大连理工大学张立和老师及其研究生研究成果,在显著性目标检测领域有很大影响,最近好像也扩充发表在了PAMI期刊上。
  插讲了一些其他内容,下面继续回到主要内容。
  Markov性质可以看作是Markov随机场的微观属性,那么其宏观属性就是其联合概率的形式。
  假设MRF的变量集合为

    S={y1,...yn},
    P(y1,...yn)= 1/Z * exp{-1/T * U(y1,..yn)}

  其中Z是归一化因子,即对分子的所有y1,..yn求和得到。U(y1,..yn)一般称为energy function, 定义为在MRF上所有clique-potential之和。T称为温度,一般取1。什么是click-potential呢? 就是在MRF对应的图中,每一个clique对应一个函数,称为clique-potential。这个联合概率形式又叫做Gibbs distribution。Hammersley and Clifford定理表达了这两种属性的等价性。
  如果click-potential的定义和clique在图中所处的位置无关,则称该MRF是homogeneous;如果click-potential的定义和clique在图中的朝向(orientation)无关,则称该MRF是isotropic的。一般来说,为了简化计算,都是假定MRF即是homogeneous也是iostropic的。

2.3. 从Markov随机场到CRF

   现在,如果给定的MRF中每个随机变量下面还有观察值,我们要确定的是给定观察集合下,这个MRF的分布,也就是条件分布,那么这个MRF就称为CRF(Conditional Random Field)。它的条件分布形式完全类似于MRF的分布形式,只不过多了一个观察集合x,即P(y1,..yn|x) = 1/Z(x) * exp{ -1/T * U(y1,…yn,x)。U(y1,..yn,X)仍旧是click-potential之和。

2.4. 训练

  通过一组样本,我们希望能够得到CRF对应的分布形式,并且用这种分布形式对测试样本进行分类。也就是测试样本中每个随机变量的取值。
  在实际应用中,clique-potential主要由用户自己定义的特征函数组成,即用户自己定义一组函数,这些函数被认为是可以用来帮助描述随机变量分布的。而这些特征函数的强弱以及正向、负向是通过训练得到的一组权重来表达的,这样,实际应用中我们需要给出特征函数以及权重的共享关系(不同的特征函数可能共享同一个权重),而clicque-potential本质上成了对应特征函数的线性组合。这些权重就成了CRF的参数。因此,本质上,图的结构是用户通过给出特征函数的定义确定的(例如,只有一维特征函数,对应的图上是没有边的)还有,CRF的分布成了对数线性形式。
  看到这个分布形式,我们自然会想到用最大似然准则来进行训练。对其取log之后,会发现,表达式是convex的,也就是具有全局最优解——这是很让人振奋的事情。而且,其梯度具有解析解,这样可以用LBFGS来求解极值。
此外,也可以使用最大熵准则进行训练,这样可以用比较成熟的GIS和IIS算法进行训练。由于对数线性的分布形式下,最大熵准则和最大似然准则本质上是一样的,所以两者区别不是很大。
  此外,由于前面两种训练方法在每一轮迭代时,都需要inference,这样会极大地降低训练速度。因此普遍采用另一种近似的目标函数,称为伪似然。它用每个随机变量的条件分布(就是给定其他所有随件变量的分布)之积来替代原来的似然函数,根据markov性质,这个条件分布只和其邻居有关(Markov Blanket),这样在迭代过程中不需要进行全局的inference,速度会得到极大的提升。我自己的经验表明,当特征函数很多取实数值时,伪似然的效果跟最大似然的差不多,甚至略好于后者。但对于大量二元特征(binary-valued),伪似然的效果就很差了。

2.5.推断

  如前所述,训练的过程中我们需要概率推断,分类的时候我们需要找出概率最大的一组解,这都涉及到推断。这个问题本质上属于图模型上的概率推断问题。对于最简单的线性框架的结构,我们可以使用Viterbi算法。如果图结果是树形的,可以采用信念传播(belief propogation),用sum-product得到概率,用max-product得到最优的configuration.但是对于任意图,这些方法就无效了。一种近似的算法,称为loopy-belief propogation,就是在非树形结构上采用信念传播来进行推断,通过循环传播来得到近似解。这么做据说在某些场合下效果不错。但是,在训练时如果采用近似推断的话,可能会导致长时间无法收敛。
  求解这块一直没有深入研究过,这些内容都是摘抄自其他论文,相关具体求解请查阅相关论文。
  基于任意图上的概率推断算法称为junction tree。这个算法能够保证对任意图进行精确推理。它首先把原来的图进行三角化,在三角化的图上把clique按照某种方式枚举出来作为节点(实际上就是合并特征函数),clicque之间如果有交集,对应的节点之间就有边,这样就得到一个新的图,通过对这个图求最大生成树,就得到了Junction tree. 最后在junction tree上进行信念传播可以保证得到精确解。
  本质上这3中算法都属于动态规划的思想。Viterbi的想法最直观,信念传播首先将特征函数都转换为factor,并将其与随机变量组合在一起形成factor-graph, 这样在factor-graph上用动态规划的思想进行推断(即做了一些预处理)。junction tree的做法是通过合并原有的特征函数, 形成一种新的图,在这个图上可以保证动态规划的无后效性,于是可以进行精确推理。(做了更为复杂的预处理)
  值得注意的是,junction tree虽然极大地避开了组合爆炸,但由于它要合并特征函数并寻找clique, 用户的特征函数如果定义的维数过大,它得到新的clique也会很大,这样在计算的时候还是会很低效,因为在推断的过程中它需要遍历所有clique中的配置,这和clique的大小是呈指数级的。所以,用户要避免使用维数过高的特征。
  更深入研究可以阅读这篇论文:

  Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials


个人学习记录,由于能力和时间有限,如果有错误望读者纠正,谢谢!

转载请注明出处:CSDN 无鞋童鞋。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习之条件随机场CRF一点理解 的相关文章

  • 项目:IRIS数据集项目

    概述 机器学习是人工智能的一个子部分 涉及教导算法做出基于数据的决策并尝试像人类一样行事 有许多数据集可用于针对不同任务训练这些算法 例如 IRIS 数据集 涵盖三类花 Versicolor Setosa 和 Virginica 每种花有四
  • 吴恩达机器学习笔记七 逻辑回归的梯度下降 过拟合及解决方法

    两个偏导数 逻辑回归的梯度下降 泛化 generalization 对全新的示例也能做出良好的预测 解决过拟合的方法 1 收集更多的测试数据 2 特征选择 feature selection 使用更少的特征 3 正则化 regulariza
  • 机器学习之迁移学习(Transfer Learning)

    概念 迁移学习 Transfer Learning 是一种机器学习方法 其核心思想是将从一个任务中学到的知识应用到另一个相关任务中 传统的机器学习模型通常是从头开始训练 使用特定于任务的数据集 而迁移学习则通过利用已经在一个任务上学到的知识
  • Python-一键爬取图片、音频、视频资源

    前言 使用Python爬取任意网页的资源文件 比如图片 音频 视频 一般常用的做法就是把网页的HTML请求下来通过XPath或者正则来获取自己想要的资源 这里我做了一个爬虫工具软件 可以一键爬取资源 媒体文件 但是需要说明的是 这里爬取资源
  • 机器学习 项目结构 数据预测 实验报告

    需求 我经过处理得到了测试值 然后进一步得到预测和真实值的比较 然后再把之前的所有相关的参数 评估指标 预测值 比较结果都存入excel 另外我还打算做测试报告模板 包括敏感性分析等 您建议我这些功能如何封装这些功能 哪些功能放到一个文件中
  • 第二部分相移干涉术

    典型干涉图 相移干涉术 相移干涉术的优点 1 测量精度高 gt 1 1000 条纹 边缘跟踪仅为 1 10 边缘 2 快速测量 3 低对比度条纹测量结果良好 4 测量结果不受瞳孔间强度变化的影响 独立于整个瞳孔的强度变化 5 在固定网格点获
  • 机器学习---决策树

    介绍 决策树和随机森林都是非线性有监督的分类模型 决策树是一种树形结构 树内部每个节点表示一个属性上的测试 每个分支代表一个测试输出 每个叶子节点代表一个分类类别 通过训练数据构建决策树 可以对未知数据进行分类 随机森林是由多个决策树组成
  • 基于生成式对抗网络的视频生成技术

    随着人工智能的快速发展 生成式对抗网络 GAN 作为一种强大的生成模型 已经在多个领域展现出了惊人的能力 其中 基于GAN的视频生成技术更是引起了广泛的关注 本文将介绍基于生成式对抗网络的视频生成技术的原理和应用 探索其对电影 游戏等领域带
  • 详解数据科学自动化与机器学习自动化

    过去十年里 人工智能 AI 构建自动化发展迅速并取得了多项成就 在关于AI未来的讨论中 您可能会经常听到人们交替使用数据科学自动化与机器学习自动化这两个术语 事实上 这些术语有着不同的定义 如今的自动化机器学习 即 AutoML 特指模型构
  • 详解数据科学自动化与机器学习自动化

    过去十年里 人工智能 AI 构建自动化发展迅速并取得了多项成就 在关于AI未来的讨论中 您可能会经常听到人们交替使用数据科学自动化与机器学习自动化这两个术语 事实上 这些术语有着不同的定义 如今的自动化机器学习 即 AutoML 特指模型构
  • 什么是“人机协同”机器学习?

    人机协同 HITL 是人工智能的一个分支 它同时利用人类智能和机器智能来创建机器学习模型 在传统的 人机协同 方法中 人们会参与一个良性循环 在其中训练 调整和测试特定算法 通常 它的工作方式如下 首先 对数据进行人工标注 这就为模型提供了
  • MIT_线性代数笔记:第 23 讲 微分方程和 exp(At)

    目录 微分方程 Differential equations 矩阵指数函数 Matrix exponential e A t e At
  • 自动驾驶轨迹预测

    目录 神经网络轨迹预测综述 比较新的轨迹预测网络 Uber LaneRCNN 5 Google VectorNet 6 Huawei HOME 7 Waymo TNT 8 Aptive Covernet 9 NEC R2P2 10 商汤 T
  • 如何用GPT制作PPT和写代码?

    详情点击链接 如何用GPT制作PPT和写模型代码 一OpenAI 1 最新大模型GPT 4 Turbo 2 最新发布的高级数据分析 AI画图 图像识别 文档API 3 GPT Store 4 从0到1创建自己的GPT应用 5 模型Gemin
  • 【需求响应】改进连续时间控制方法用于分散式需求响应的恒温负荷研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码及文章
  • 基于GPT4+Python近红外光谱数据分析及机器学习与深度学习建模

    详情点击链接 基于ChatGPT4 Python近红外光谱数据分析及机器学习与深度学习建模教程 第一 GPT4 基础 1 ChatGPT概述 GPT 1 GPT 2 GPT 3 GPT 3 5 GPT 4模型的演变 2 ChatGPT对话初
  • 毕业设计-基于深度学习的细菌微生物目标检测系统系统 YOLO python 目标检测 人工智能 卷积神经网络 机器学习

    目录 前言 设计思路 一 课题背景与意义 二 算法理论原理 2 1 CBAM模块 2 2 损失函数 三 检测的实现 3 1 数据集 3 2 实验环境搭建 3 3 实验及结果分析 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一
  • 如何制作CRF++的模板文件?

    我是 CRF 的新手 我正在自学查看其手册 http crfpp googlecode com svn trunk doc index html source navbar templ http crfpp googlecode com s
  • 使用条件随机字段进行命名实体识别

    What is 条件随机场 具体如何条件随机场识别结构化或非结构化文本中的人 组织或地点等专有名称 例如 该产品由 StackOverFlow Inc 订购 条件随机场如何将 StackOverFlow Inc 识别为一个组织 CRF 是一
  • 如何将地名词典或词典表示为 crf++ 中的特征?

    如何使用地名词典或词典作为功能CRF https taku910 github io crfpp 详细说明 假设我想对人名进行 NER 并且我有一个包含常见人名的地名词典 或字典 我想使用这个地名词典作为 crf 的输入 我该怎么做 我正在

随机推荐

  • Deepdive原理

    Deepdive原理 DeepDive是一种新型数据管理系统 能够从非结构化的文本中提取出结构化的数据 可以在单个系统中解决提取 集成和预测问题 使用户能够快速构建复杂的端到端数据管道 例如黑暗数据BI 商业智能 系统 通过允许用户端到端构
  • 基于Spring Boot垂钓服务系统的设计与实现毕业设计源码071739

    目 录 摘要 1 绪论 1 1 研究背景 1 2研究意义 1 3相关技术介绍 1 4论文结构与章节安排 2 垂钓服务系统需求分析 2 1 可行性分析 2 1 1 技术可行性分析 2 1 2 经济可行性分析 2 1 3 操作可行性分析 2 1
  • java 增加内存_如何增加java虚拟机可以使用的最大内存

    java虚拟机可使用的最大内存是有限制的 缺省值通常为64MB或128MB 如果一个应用程序为了提高性能而把数据加载内存中而占用较大的内存 比如超过了默认的最大值128MB 需要加大java虚拟机可使用的最大内存 否则会出现Out of M
  • 前端踩坑(七)--------------------------react 动态操作className

    前端踩坑 七 react 动态操作className 文章目录 前端踩坑 七 react 动态操作className 问题描述 如何动态修改一个元素的CSS样式呢 一 react 动态操作className 二 设置多个className
  • oracle 介于日期之间_oracle 月份中日的值必须介于 一 和当月最后一日之间

    oracle 月份中日的值必须介于 1 和当月最后一日之间 请教大家 在oracle存储过程中 有一个insert语句 总是报错 找到是插入时间的问题 比如 case when nvl pa ptm 0 0 then v invptm el
  • win10系统CMD运行无反应,闪一下后消失

    原因是 未知 解决办法 注册表HKEY CURRENT USER Software Microsoft Command Processor 中发现autorun这一项 删除后可以正常打开
  • 模式识别与机器学习第四章特征选择和提取

    特征选择 从原始特征中挑选 从n个度量值集合 x1 x2 xn 中 按某一准则选取出供分类用的子集 作为降维 m维 m
  • anchor iview 悬浮_iview 表头table 悬浮提示tooltip ;iview 单元格悬浮提示 ;iview table header cell tooltip;...

    一 批量悬浮提示 二 提示数据举例 三 核心方法 单元格提示 function renderCell h params console log h h console log params params var tipsContent ge
  • 【算法】KMP算法实现顺序串各种模式匹配运算的算法设计

    C 版 一 设计任务 编写程序 利用顺序串的基本运算 建立目标串以及模式串 用BF算法求出t在s中的位置 求出模式串的next数组以及nextval数组 KMP算法使用next数组以及改进的KMP算法使用nextval数组求出t在s中的位置
  • Redis缓存穿透-击穿-雪崩详细分析加解决办法

    Redis 缓存穿透 问题描述 如图 缓存穿透的原因 key 对应的数据在数据源并不存在 每次针对此key 的请求从缓存获取不到 请求都会压到数据源 可能压垮数据源 比如 用一个不存在的用户id 获取用户信息 不论缓存还是数据库都没有 若黑
  • Qt浅谈之二十二Qt样式表

    一 简介 不断总结好的样式表 美化自己的界面 在实际工作中会不断的更新 二 详解 1 加载样式表文件 html view plain copy QFile file qss stylesheet qss file open QFile Re
  • 外星人m15键盘灯光设置_Alienware Command Center灯光软件高级设置

    文章内容 症状 目录 点开桌面 首先我们先对AW Command Center 高级界面进行介绍 电源按钮高级设置 电源按钮动作只能一个 无法创建多个动作 灯光多动作多变化模式设置 动作 颜色模式 单一种颜色常亮 默认常亮3s受Action
  • 数据库原理第十章---数据库恢复技术

    1 事务的基本概念 事务 所谓事务是用户定义的一个数据库操作序列 这些操作要么全做 要么不做 是一个不可分割的工作单位 事务的开始和结束可以由用户显示控制 如果用户没有显示定义事务 则由数据库管理系统按默认规定自动划分事务 在SQL中定义事
  • 用Python导入表格

    刚刚博主学到如何用Python来导入表格 现在就将过程写给大家看看 我是用了Pycharm 的2019 3 1 版本的 这还得需要下载Python 3 7 Interpreter 才能运行 这个可是弄了很久才弄好的 不说那么多了 直接上代码
  • 每日一学13——Unity Debug.Log控制开关

    学习来源 https blog csdn net blog lee article details 81389692 其实我并不是在乎一丢丢性能的影响 我只关心能不能关闭Log 这样就可以在不想看log的时候全都不显示 不过文中的方法也不错
  • ActionScript 3.0 学习笔记(二)

    使用HTTP请求进行URL导航 flash中最普通的http请求是使用URLRequest类和navigateToURL 方法进行URL导航 创建HTTP请求 在创建HTTP请求时 需要URLRequest类参与处理所有的通信 在创建HTT
  • 详解Android中的屏幕方向

    分类 android 2014 09 19 09 07 113人阅读 评论 0 收藏 举报 详解Android中的屏幕方向 屏幕方向是对Activity而言的 所以你可以在AndroidManifest xml文件中 通过
  • 嵌入式模型部署学习笔记 ——在Jetson TX1上部署Yolov5模型

    Jetson TX1实现TensorRT加速YOLOv5进行实时检测 一 前言 二 移动端部署思路 三 部署步骤 1 克隆YOLOv5工程文件 2 pt 转 ONNX 安装 ONNX 转换文件 3 移动端部署 克隆工程 生成 wts 文件
  • 访问www.baidu.com全过程

    1 域名解析成IP 每个主机在网络中都是IP为标识的 IP才是主机在网络中的位置 域名只是为了方便用户记忆而已 这就要求浏览器能够识别域名并且将其转化为对应的IP地址 所以浏览器会有一个DNS缓存 其中记录了一些域名与IP的对应关系 供浏览
  • 机器学习之条件随机场CRF一点理解

    1 前言 最近看了一些有关于CRF的论文 基本概念懂 但是到求解的部分有些疑惑 CRF问题容易构成NP hard问题 求解过程还需要再学习 下面稍微介绍一些CRF的学习吧 这里前面CRF内容主要参考了下面博文 讲的非常好 http blog