全连接条件随机场_条件随机场CRF简介

作者:Ravish Chawla
编译:ronghuaiyang

导读

一个简单明了的对条件随机场的说明,给大家一个非常直观的印象,CRF到底是个什么东西,能干什么用。
07f5851db3309bf2dc06f4e077d5ea02.png

条件随机场是一种用于序列预测的判别模型。它们使用来自以前标签的上下文信息,从而增加了模型做出良好预测的信息量。在这篇文章中,我将讨论一些介绍CRFs的主题。先给大家过一遍:

  1. 什么是判别分类器(以及它们与生成分类器的比较)
  2. 条件随机场的数学概述
  3. 条件随机场与隐马尔可夫模型有何不同
  4. 条件随机场的应用

什么是判别分类器

机器学习模型有两种常见的类别:生成模型和判别模型。条件随机场是一种判别分类器,它对不同类别之间的决策边界进行建模。另一方面,生成模型是对数据如何生成进行建模,这些模型在学习之后可以用来进行分类。举个简单的例子,朴素贝叶斯是一种非常简单和流行的概率分类器,是一种生成模型,而逻辑回归是一种基于最大似然估计的分类器,是一种判别模型。让我们看看这些模型如何用来计算标签预测:

朴素贝叶斯分类器是基于朴素贝叶斯算法的分类器,它的描述如下:

033ce10a1b0ce21e90a376c532ec1fcd.png

朴素贝叶斯算法

我们可以把分类器做出的预测表示为一个条件概率,我们使用朴素贝叶斯算法进行分解:

380f1b5810eaa255c3de66cb0fd8cba3.png

朴素贝叶斯算法的推导

Logistic回归分类器是基于Logistic函数,即:

22f4874088bcc667eca278f38f8e38a7.png

Logistic函数

为了在Logistic回归中学习两个类之间的决策边界,分类器学习与每个数据点相关的权值(Theta值),表示为:

751c93d7b1653d19c24c5b2558890379.png

Logistic回归分类器的推导

利用Logistic回归分类器,我们可以看到我们在最大化条件概率,利用贝叶斯规则,我们可以得到朴素贝叶斯分类器所使用的生成分类器。

将P(y | x)代入贝叶斯方程:

412523728090051c8eeeca6538b3d93d.png

把贝叶斯法则用到Logistic回归分类器中

把它等价于先验和似然性的乘积,因为在argmax中,分母P(x)不提供任何信息。

该结果是较早得到的朴素贝叶斯算法生成分类器。

我们进一步可以看到P(x | y) * P(y)等于P(x, y),这是x和y的联合分布,这一观察结果支持了生成模型的早期定义。通过对类与类之间的联合概率分布建模,生成模型可以得到给定标签Y和联合概率分布并“生成”输入点X。同样,判别模型通过学习条件概率分布,学习了数据点之间的决策边界。所以,给定一个输入点,它可以使用条件概率分布来计算它的类。

这些定义如何应用于条件随机场?条件随机场是一种判别模型,其基本原理是对序列输入应用逻辑回归。如果你熟悉隐马尔可夫模型,你会发现它们与CRFs有一些相似之处,其中之一是它们也用于序列输入。HMMs利用过渡矩阵和输入向量来学习发射矩阵,在概念上与朴素贝叶斯相似。HMMs是一个生成模型。

条件随机场的数学介绍

在讨论了上述定义之后,我们现在将讨论条件随机场,以及如何使用它们来学习序列数据。

如前一节所示,我们对条件分布建模如下:

3c8292dea1e694d2e164180409b64039.png

条件分布

在CRFs中,我们的输入数据是顺序的,在对数据点进行预测时,必须考虑前面的上下文。为了对这种行为进行建模,我们将使用特征函数,它将有多个输入值,为:

  1. 输入向量集合X
  2. 我们预测的数据点的位置i
  3. X中数据点i-1的标签
  4. X中数据点i的标签

我们将特征函数定义为:

ba81b21837aed4dcbad56b9bd612de2e.png

特征函数

特征函数的目的是表示数据点所表示的序列的某种特征。例如,如果我们将CRFs用于词性标注,则:

f (X, i, L{i - 1}, L{i} ) = 1 如果 L{i - 1}是名词并且 L{i} 是动词. 0 其他。

同样, f (X, i, L{i - 1}, L{i} ) = 1 如果 L{i - 1} 是动词并且 L{i} 是副词. 0 其他。

每个特征函数都基于前一个单词和当前单词的标签,并且要么是0,要么是1。为了构建条件场,我们接下来为每个特征函数分配一组权重(lambda值),算法将学习这些权重:

f6d4643e9004eaecc41da8a804759e64.png

条件随机场的概率分布

为了估计参数(lambda),我们使用最大似然估计。为了应用该技术,我们首先对分布取负对数,使偏导数更容易计算:

d430a0acfc9b0e43b4cbd6bac5bc4567.png

条件随机分布的负对数似然

要对负对数函数应用最大似然,我们将使用argmin(因为最小化负函数将产生最大似然性)。为了求最小值,我们可以求导,得到:

cc81bd7882960ddda32fe4bfc7eaf2f8.png

对lamda求偏导

我们把求偏导数作为梯度下降的一个步骤。梯度下降迭代更新参数值,每次一小步,直到值收敛。CRF的最终梯度下降更新方程为:

f6efce407411b7034d733565d59008d8.png

CRF的梯度下降更新方程

总结一下,我们使用条件随机场,首先定义所需的特征函数,初始化随机值的权重,然后迭代地应用梯度下降,直到参数值(在本例中是lambda)收敛。我们可以看到CRFs类似于Logistic回归,因为它们使用条件概率分布,但是我们通过将特征函数作为序列输入来扩展算法。

CRFs和HMM有什么不同?

从前面几节中,条件随机场与隐马尔可夫模型的区别是显而易见的。虽然这两种方法都用于对顺序数据建模,但它们是不同的算法。

隐马尔可夫模型具有生成性,通过对联合概率分布建模给出了输出。另一方面,条件随机场具有判别性,并对条件概率分布进行了建模。CRFs不依赖于独立假设(即标签彼此独立),并且避免了标签偏差。一种理解它的方法是隐马尔可夫模型是条件随机场的一个非常特殊的例子,转移概率使用了常数。HMMs基于朴素贝叶斯,我们说它可以从逻辑回归得到,CRFs就是从逻辑回归得到的。

条件随机场的应用

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

英文原文:https://medium.com/ml2vec/overview-of-conditional-random-fields-68a2a20fa541

2706a5d573cf2bc09f754f86d0caf502.png

请长按或扫描二维码关注本公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP文件下载过滤类

Java代码 <?php /** $filename index.php; $download new Download(php,exe,html, false); if (!$download->downloadfile($filename)) { echo $download->getErrorMsgs(); } */ class Download { private $debug false; private $errorMsg ; …

解决outlook2013设置错误无法启动

今天在新的机器上安装office 2013&#xff0c;在进行outlook2013账户设置时&#xff0c;账户设置错误导致无法正常启动outlook。 查询相关资料发现可以通过&#xff0c;控制面板用户帐户和家庭安全—邮件&#xff0c;重新设置账户即可。 相关操作如下图&#xff1a;

论文公式编号右对齐_论文不会写?最详细的论文排版技巧

说明本文根据严思奇在2017年在"重庆邮电大学硕士学位论文"撰写期间的粗陋经验总结而作。使用的word版本为word2016。在使用时&#xff0c;首先应该根据第2章&#xff0c;按照顺序设置好所有需要全局设定的内容。然后再论文写作中&#xff0c;会依次碰到参考文献、公式…

ESXI开启SNMP服务

要监控ESXI&#xff0c;打算通过snmp方式进行监控&#xff0c;这样操作比较简单。但是要使用SNMP方式进行监控&#xff0c;必须要开启ESXI的SNMP服务。ESXI由于版本号的不同&#xff0c;SNMP开启的方法也不尽相同。 我们先来介绍ESXI5.0开启方法。在开启之前&#xff0c;我们先…

fiddler修改支付金额_不容忽视的记账工具:支付宝记账

上一篇文章我们说到&#xff0c;微信记账是一个省心省力省时间的好工具&#xff0c;但平时我们的支付手段可能不只有微信&#xff0c;最常用的还有支付宝&#xff0c;例如我们在双十一淘宝上购物的话基本上使用的是支付宝进行付款&#xff0c;因此为大家普及一下支付宝的记账流…

python单步调试的方法_python断点调试方法

pdb 是 python 自带的一个包&#xff0c;为 python 程序提供了一种交互的源代码调试功能&#xff0c;主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令&#xff0c;详情见表 1。下面结合具体的实例…

数加移动定向营销:如何快速搭建不完全依赖用户历史行为的个性化服务

移动定向营销是一款基于规则引擎面向移动应用做流量精准运营的数据服务&#xff0c;能帮助使用者灵活划分用户群体、细分用户流量。移动定向营销原理它是一种定向的、人为可控的、可解释的&#xff0c;并且不完全依赖于用户历史行为、不受投放内容约束、面向用户的个性化服务方…

python读写json_python 读写json数据

json 模块提供了一种很简单的方式来编码和解码JSON 数据。 字符串操作 其中两个主要的函数是json.dumps() 和json.loads() &#xff0c;要比其他序列化函数库如pickle 的接口少得多。下面演示 1.如何将一个Python 数据结构转换为JSON 2.如何将一个JSON 编码的字符串转换回一个P…

java web逻辑删除代码_MyBatis-Plus之逻辑删除的实现

特别是互联网项目&#xff0c;对于数据一般是不能删除的(涉及到后面的数据分析)&#xff0c;这就涉及到逻辑删除。所谓逻辑删除指的是数据并不是真正的删除&#xff0c;只是改数据表对应数据的状态(数据表中通常有一列叫delFlag,以此标识正常状态或删除状态)。逻辑删除一般都是…

debian安装java jdk_Linux(Centos、Debian)之安装Java JDK及注意事项(转)

a.因为Java JDK区分32位和64位系统&#xff0c;所以在安装之前必须先要判断以下我们的Centos、Debian系统为多少位系统&#xff0c;命令如下&#xff1a;uname -a解释&#xff1a;如果有x86_64就是64位的&#xff0c;没有就是32位的。后面是X686或X86_64则内核是64位的&#xf…

python预定义_【Python】python类中方法的预定义

知乎问题&#xff1a;像这个图片里面显示的&#xff0c;self.prediction首先声明了下然后下面给出了定义&#xff0c;然后optimize又调用这个函数但是没有用self.prediction()这样的方式而是像用变量一样直接用self.prediction&#xff0c;,像请教一下这是什么操作&#xff1f;…

python md5加密_Python MD5加密实例详解

详解Python MD5加密 Python 3下MD5加密 # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str this is a md5 test. # 创建md5对象 hl hashlib.md5() # Tips # 此处必须声明encode # 若写法为hl.update(str) 报错为&…

【IOS-COCOS2D-X 游戏开发之四】COCOS2DX创建ANDROID NDK新项目并编译导入ECLIPSE中正常运行!...

本站文章均为 李华明Himi 原创,转载务必在明显处注明&#xff1a; 转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/645.html此篇针对较早的-x引擎讲解的&#xff0c;最新的可以参考&#xff1a; 【Cocos2d-X(2.x) 游戏开发系列之二】cocos2dx最新2…

2天后mysql_mysql 学习笔记 第二天

插入表格数据:Insert into table_name set columns_1value1,columns_2value2,对于没有赋值的列&#xff0c;将会取默认值&#xff0c;并且这个方法只能一次插入一个数据利用文本方式插入数据:Load data local infile‘径’into table table_name&#xff1b;Select 的通用形式:…

mysql查看日志命令_面对成百上千台服务器产生的日志,试试这款轻量级日志搬运神器!...

Filebeat简介Filebeat是一款轻量级日志采集器&#xff0c;可用于转发和汇总日志与文件。Filebeat内置有多种模块&#xff08;Nginx、MySQL、Redis、Elasticsearch、Logstash等&#xff09;&#xff0c;可针对常见格式的日志大大简化收集、解析和可视化过程&#xff0c;只需一条…

css 百分比 怎么固定正方形_css样式写出三角形,宽高自适应的正方形,扇形!...

闲来无事练习一下常见的css样式,希望大家能指点一二&#xff01;1用css实现一个三角形&#xff01;原理用border属性<!实现它的原理那就要弄明白border属性&#xff0c;border是一个复合属性border-width 指定边框的宽度border-style 指定边框的样式border-color 指定边框的…

用lsb_release -a 查看linux版本

1、要通过yum 安装上这个命令的软件包 yum -y install redhat-lsb 2、lsb_release -a 查看linux版本信息

linux内核_Linux内核编程风格简介

01不同的语言风格当今世界上一共有5000多种语言。不同的国家、民族和地区&#xff0c;说着不同的语言。每个民族不一定有自己的文字&#xff0c;但一般都会有自己的语言。即使是同一种语言&#xff0c;在不同的时代、不同的地区和群体&#xff0c;说话的方式和语言风格也各不相…

Swift使用CoreLocation,你必须要看这一篇

CoreLocation&#xff0c;在我们这里讨论的是一个最常用的东西&#xff0c;就是用Location Manger获取用户当前的位置。 整个的来说非常简单。只要这样&#xff1a; import CoreLocation需要使用整个框架&#xff0c;那么引入整个框架就是必须的。然后需要在你的类里实现一个pr…

python全景图像拼接_Python+OpenCV实现图像的全景拼接

本文实例为大家分享了PythonOpenCV实现图像的全景拼接的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 环境&#xff1a;python3.5.2 openCV3.4 1.算法目的 将两张相同场景的场景图片进行全景拼接。 2.算法步骤 本算法基本步骤有以下几步&#xff1a; 步骤1&#x…