全连接条件随机场_条件随机场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,一经查实,立即删除!

相关文章

java特殊字符转义字符_Java正则表达式处理特殊字符转义的方法

正则需要转义字符$, (, ), *, , ., [, ], ?, \\, ^, {, }, |异常现象:java.util.regex.PatternSyntaxException: Dangling meta. character * near index 0解决方法对特殊字符加\\转义即可。注意:虽然使用[]在部分条件下也可以,但是在对于(、…

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 ; …

excel支持python吗_没有 Python,微软宣布 Excel 新增 JavaScript 支持

CSDN”&#xff0c;选择“置顶公众号” 关键时刻&#xff0c;第一时间送达&#xff01; 去年年底曾有外媒报道&#xff0c;由于社区用户的强烈要求&#xff0c;谷歌正考虑添加 Python 作为官方的一种 Excel 脚本语言。 当时&#xff0c;谷歌开启了一个针对 Excel 功能的话题&am…

java 压缩gz_如何在Java中将.zip压缩为.gz?

我认为您可以为zip创建一个临时文件,将其添加到gzip,然后删除创建的zip.下面的代码示例应该可以帮助您.public void ZIPandGZIP(String fileName, OutputStream os, String header) throws FileNotFoundException {byte[] buffer new byte[1024];FileInputStream fis null;Fi…

解决outlook2013设置错误无法启动

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

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

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

java.util.zip_[Java 基础] 使用java.util.zip包压缩和解压缩文件

Java API中的import java.util.zip.*;包下包含了Java对于压缩文件的所有相关操作。我们可以使用该包中的方法&#xff0c;结合IO中的相关知识&#xff0c;进行文件的压缩和解压缩相关操作。ZipFilejava中的每一个压缩文件都是可以使用ZipFile来进行表示的。File file new File…

用好href的target, base href

<base href>就是指网页里面的相对链接 的前缀url&#xff0c;如在<head></head>部分定义了此链接为http://ent.sina.com.cn/ &#xff0c;那么下面的<a hrefaaa.html></a>代表http://ent.sina.com.cn/aaa.html 这个标签的用处是解决编程时候的相…

python遍历二维数组_在Python中遍历二维数组?

你需要告诉我们一些事情&#xff1a;dataset datas.values 它可能是一个二维数组&#xff0c;因为它来自一个csv负载。但是什么形状和数据类型&#xff1f;甚至可能是阵列的一个样本。 这是函数中的data参数吗&#xff1f; 什么是blackKings和values&#xff1f;你把它们当作列…

elementui 弹窗 显示详细信息_ElementUI中el-table双击单元格事件并获取指定列的值和弹窗显示详细信息...

场景双击el-table的某个单元格时获取此单元格的信息并弹窗显示其他关联的信息。效果如下注&#xff1a;实现首先给el-table设置cell-dblclick事件v-loading"loading":data"kqryszList"selection-change"handleSelectionChange"cell-dblclick&quo…

ESXI开启SNMP服务

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

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

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

php5.3 延迟静态绑定 static关键字

1 //传统模式 --这段代码能很好工作&#xff0c;但大量的重复代码很烦人,不想为每个DomainObject子类都创建这段相同代码吧&#xff1f;2 /*3 4 abstract class DomainObject{}5 6 class User extends DomainObject7 {8 public function __construct()9 { 10 e…

java 两点间距离_Java实现控制台输出两点间距离

计算两点之间的距离然后在控制台输出&#xff0c;这个题目还是挺简单的。下面我们来看看具体代码。package com.swift;import java.util.Scanner;public class PToP {public static void main(String[] args) {Scanner scannew Scanner(System.in);System.out.println("请…

微信小程序python解析获取用户手机号_python获取微信小程序openid及用户信息

填坑记录&#xff1a;1.个人微信公众订阅号是不能申请微信认证的。公众号的类型在注册时一旦选择就不能更改&#xff0c;微信公众号认证的功能除个人订阅号外&#xff0c;都可以申请认证&#xff0c;因而个人订阅号不能申请认证。这句话的意思就是个人订阅号无法开发小程序。 2…

使用 React和webpack开发和打包发布

建议在 React 中使用 CommonJS 模块系统&#xff0c;比如 browserify 或 webpack&#xff0c;本次使用 webpack。 第一步、安装全局包 $ npm install babel -g $ npm install webpack -g $ npm install webpack-dev-server -g 第二步、创建根目录 创建一个根目录&#xff0c;目…

java cpu 内存使用情况_java高cpu占用和高内存占用问题排查 (转)

高cpu占用1、top命令&#xff1a;Linux命令。可以查看实时的CPU使用情况。也可以查看最近一段时间的CPU使用情况。2、PS命令&#xff1a;Linux命令。强大的进程状态监控命令。可以查看进程以及进程中线程的当前CPU使用情况。属于当前状态的采样数据。ps -mp pid -o THREAD,tid,…

python3 装饰器_python3_装饰器_异常处理

装饰器&#xff1a; def auth(func): def wrapper(name): 如果函数带参数&#xff0c;要加在这里 userraw_input("input passwd:").strip() if user‘test‘: print "welcome login" func(name) 如果函数带参数&#xff0c;要加在这里 else: print "a…

ZeroMQ--使用jzmq进行编程

一、环境搭建 wget http://download.zeromq.org/zeromq-2.1.7.tar.gz tar -xzf zeromq-2.1.7.tar.gz cd zeromq-2.1.7 ./configure make sudo make installgit clone https://github.com/nathanmarz/jzmq.git cd jzmq ./autogen.sh ./configure make sudo make install如果没有…

java 循环对比_Java stream 和 for 循环效率对比问题

针对同一个集合&#xff0c;用 stream 操作两次得到两个不同条件筛选出来的集合和map&#xff0c;和一次for循环就搞定搞定的效率对比。虽然stream写起来链式操作很舒服&#xff0c;但效率在不同数据量下的体现效果是不一样的&#xff0c;以下为我的测试代码&#xff1a;Testpu…