从点到线:逻辑回归到条件随机场

开篇高能预警!本文前置知识:

1、理解特征函数/能量函数配分函数的概念及其无向图表示,见《逻辑回归到受限玻尔兹曼机》和《解开玻尔兹曼机的封印》;

2、理解特征函数形式的逻辑回归模型,见《逻辑回归到最大熵模型》。

 

从逻辑回归出发,我们已经经过了朴素贝叶斯、浅层神经网络、最大熵等分类模型。显然,分类模型是不考虑时间的,仅仅计算当前的一堆特征对应的类别。因此,分类模型是“点状”的模型。

 

想一下,如果我们有一个词性标注(POS)的任务,在这个任务中,类别有动词、名词、形容词、副词、介词、连词等有限个类别。样本呢,当然就是自然语言序列啦,例如“夕小瑶喜欢 狗狗”这个序列就对应着“名词 动词 名词”这三个对应类别。

 

这时我们如果用“点状”模型,也就是分类模型来做这个任务,会产生什么现象呢?

假如我们选取的特征就是当前位置词,那么我们将分类器训练完成后,分类器遇到“夕小瑶”就会输出“名词”这个类别,也就是说它是不考虑上下文的,预测每个词的词性的时候才不会考虑整个句子的情况呢。在这里简单例子中看似没有什么影响,然而实际上非常多的词在不同的句子中会表现出不同的词性。比如“谷歌”一词,在“我今天参观了谷歌”中就是名词,在“你谷歌一下”中就是动词。可以看出,词性不仅取决于它自己,还取决于它的上下文(它两边的词)!

 

那么,有没有可能让逻辑回归、朴素贝叶斯这类点状模型利用好上下文信息呢?最容易想到的做法就是将上下文信息编码成特征啦!

 

比如加入当前词的2-gram上下文作为特征,这时在“你谷歌一下”中去预测“谷歌”的词性的时候,特征就是三维的:1、“谷歌”2、“你 谷歌”3、“谷歌 一下”。而在“我今天参观了谷歌”中,特征是1、“谷歌”2、“了 谷歌”3、“谷歌 <EOS>”这样就能根据不同的特征值在不同的句子中更精确的分类“谷歌”的词性啦~

在《逻辑回归到最大熵模型》中,小夕详细讲了如何将逻辑回归的传统形式转换成特征函数/能量函数描述的形式,而如《解开玻尔兹曼机的封印》所示,这种形式很容易画成有向图或无向图的形式:

 

(上面白色圈圈是类别,下面灰色圈圈是各个特征,小黑框表示这一类别-特征对的能量函数/特征函数)

 

问题来了。对于一些更复杂的句子,可能决定某个词的词性的关键词距离该词有好长的距离,那怎么办呢?难道要扩展到10gram?

我们知道,ngram越长,训练数据就越稀疏,导致模型容易过拟合,泛化能力明显变差。显然点状的机器学习模型是很难在当前分类点利用到长距离信息的,也就是说,其最多能通过加入短距离上下文特征来做到局部最优分类,而无法做到整个序列的最优分类

 

显然呐,自然语言文本的词性标注任务本来就是个“线状”的任务,你非要用“点状”的模型去做,肯定很差劲啦~那么我们能不能基于逻辑回归这个经典的判别式点状分类器来改良成“线状”,或者说“链状”模型呢?如果让你去改造,你会怎么改呢?

 

最简单的做法当然就是将序列前一时刻/位置的输出连到当前时刻到输出阿,也就是同时用当前时刻的输入前一时刻的输出来决定当前时刻的输出(类别),画出图来就是:

 

(当然啦,这里白色圈圈依然代表类别,灰色圈圈代表特征。为了画图简单,这里只画出了一个灰色圈圈(三个特征的时候应该在每个时刻画出三个灰色圈圈哦))

 

看,是不是超级简单的就改完了呢?这样在判断每一时刻的类别的时候就会不得不去参考前一时刻的类别,而参考前一时刻的类别的时候就隐含的包含了更早时刻的类别,这样就把整个句子串起来啦。

画起来容易,但是这个模型该如何用数学语言描述呢?

 

回顾一下可以直接画出上面逻辑回归的无向图的逻辑回归假设函数:

扩展到多个类别的话,就是:

 

 

从假设函数也可以看出,逻辑回归是个点状模型,当前时刻的类别预测不依赖任何其他时刻。

 

那么根据上面我们画的判别式链状模型图,我们唯一需要做的就是加入前一时刻y与当前时刻y的特征函数就可以啦~所以假设函数就很简单的变为了:

 

 

只是看起来有点长而已,而本质上还不是用特征函数描述了我们画的线状图嘛~

仔细观察,可以发现相比较点状模型,链状模型考虑了全部时间点,对全部时间点下的每个旧y与当前y,以及每个当前x与当前y做了求和,进而通过配分函数Z算出了整个序列的条件概率!注意对比逻辑回归的假设函数,逻辑回归的各个时间点是相互独立的,而这个链状模型则是统一考虑所有时间点,因此是基于整个序列去做每个单词的词性预测

 

这个看似复杂,实则至简的链状模型就是“线性链条件随机场(CRF)”。实际上,线性链的条件随机场也是使用最广泛的条件随机场,几乎成了条件随机场的代名词。

 

这个模型的训练方法与隐马尔可夫模型是一样的,都是基于最大化似然函数的方法,方法已经在《HMM(下)》中讲解啦,在此不再赘述。当然啦,小夕只讲了最理想的情况,也就是训练集中既有X(观测序列),也有Y(隐状态序列)的情况。对于无法得到隐状态序列的情况,可以使用《EM算法》来迭代训练,在这里叫做BaumWelch算法,有兴趣的同学自行了解,这里不再展开啦。

 

诶?还有一个问题!虽然CRF的假设函数可以直接得到当前序列的每种可能的词性标注序列的概率,但是如果要枚举出所有可能的词性序列再找最大概率的那个词性序列的话,显然是指数爆炸的。对此有维特比算法进行优化,也已在《HMM(下)》中详细讲解过啦。在此不再赘述。值得一提,维特比算法的本质即动态规划

 

看,是不是感觉一切都是一通百通了呢?这么看来条件随机场真的是没有新奇的东西,仅仅是用特征函数的老办法来将人人都能想到的前后两个时刻的y连起来,就结束了,结束了,束了,了。。

 

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

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

相关文章

WSDL基础知识

一、WSDL的定义 将网络服务描述为对包含面向文档或过程的信息进行操作的一组端点的XML格式 服务接口 访问规范 服务地点 定义Web服务的公共接口&#xff08;包括功能、如何调用&#xff09; 定义与目录中列出的Web服务交互所需的协议绑定和消息格式 抽象地描述了支持的操…

【NLP】Google BERT详解

版权声明&#xff1a;博文千万条&#xff0c;版权第一条。转载不规范&#xff0c;博主两行泪 https://blog.csdn.net/qq_39521554/article/details/83062188 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/cs…

有时候,也想过回到过去

人的一生中&#xff0c;总要走走停停。一面向着诗和远方&#xff0c;一面转过身&#xff0c;缅怀过去。她喜欢女生&#xff0c;帅气的女生。我觉得她也很帅&#xff0c;帅气又可爱。初入大学&#xff0c;竞选班委。上台的人中&#xff0c;有阳光幽默的男生&#xff0c;有温柔甜…

SOAP基础知识

一、SOAP是什么&#xff1f; SOAP是一种轻量级协议&#xff0c;旨在在分散的分布式环境中交换结构化信息。 SOAP使用XML技术来定义可扩展的消息传递框架&#xff0c;该框架提供了可以在各种基础协议之间交换的消息构造。 通信协议 用于应用程序之间的通信 发送消息的格式 设…

UDDI基础知识

一、什么是UDDI UDDI基于一组常见的行业标准&#xff0c;包括HTTP&#xff0c;XML&#xff0c;XML Schema和SOAP&#xff0c;为基于Web服务的软件环境提供了一个可互操作的基础基础结构&#xff0c;用于可公开使用的服务和仅在组织内部公开的服务。 仅当潜在用户发现足以允许其…

机器学习算法GBDT的面试总结

def findLossAndSplit(x,y): # 我们用 x 来表示训练数据 # 我们用 y 来表示训练数据的label # x[i]表示训练数据的第i个特征 # x_i 表示第i个训练样本 # minLoss 表示最小的损失 minLoss Integet.max_value # feature 表示是训练的数据第几纬度的特征 feature 0 # split 表示…

线性代数应该这样讲(四)-奇异值分解与主成分分析

在《线性代数这样讲&#xff08;二&#xff09;》&#xff08;以下简称「二」&#xff09;中&#xff0c;小夕详细讲解了特征值与特征向量的意义&#xff0c;并且简单描述了一下矩阵的特征值分解的意义和原理。本文便基于对这几个重要概念的理解来进一步讲解SVD分解。回顾一下&…

BPEL4WS基础知识

一、为什么选择BPEL4WS 可以使用行业范围内的规范来广告、发现和调用Web服务 开发人员和用户可以通过组合和订购可用的基本服务来解决复杂问题 服务组合允许服务重用并加速复杂的服务开发 提供一种表示法&#xff0c;用于将Web服务的交互描述为业务流程 编写使用Web服务的程…

不要再纠结卷积的公式啦!0公式深度解析全连接前馈网络与卷积神经网络!

文章转载自订阅号「夕小瑶的卖萌屋」中的文章《不要再纠结卷积的公式啦&#xff01;0公式深度解析全连接前馈网络与卷积神经网络》。 Hello~你们的小夕终于吐泡泡了&#xff5e;前几天小夕又加班赶project啦&#xff0c;拖了好几天&#xff0c;都快患上拖稿焦虑症了_(:з」∠)…

不要再纠结卷积的公式啦!0公式深度解析全连接前馈网络与卷积神经网络

Hello~你们的小夕终于吐泡泡了&#xff5e;前几天小夕又加班赶project啦&#xff0c;拖了好几天&#xff0c;都快患上拖稿焦虑症了_(:з」∠)_关于卷积神经网&#xff0c;小夕就不从卷积讲啦。以前不止一个粉丝问我卷积神经网络中卷积的意义&#xff0c;甚至在知乎上被邀请回答…

研究生常用的几种风险评估方法-专家调查法、蒙特卡洛模拟法、计划评审技术、敏感性分析法、决策树法、影响图法、模糊综合评价方法

其实风险评估就是在充分掌握资料的基础之上&#xff0c;采用合适的方法对已识别风险进行系统分析和研究&#xff0c;评估风险发生的可能性&#xff08;概率&#xff09;、造成损失的范围和严重程度&#xff08;强度&#xff09;&#xff0c;为接下来选择适当的风险处理方法提供…

从前馈到反馈:解析循环神经网络(RNN)及其tricks

好像已经有两周没有更新啦。最后这几天都不敢打开订阅号后台了&#xff0c;怕一打开发现掉了几百个粉丝的话就难过死了T_T。然而小夕发现你们并没有离开&#xff0c;感动的差点哭出来&#xff0c;都感觉再不认真写一篇文章就太对不起大家的等待啦。而这两周&#xff0c;经历的事…

多因子风险建模-协方差矩阵、投资组合风险

一、为什么要了解投资风险 在探讨投资风险前&#xff0c;我们不妨思考一个问题&#xff1a;好的投资&#xff0c;取决于哪些因素&#xff1f; 其实&#xff0c;卓越的投资回报&#xff0c;主要来源于四个因素&#xff1a; 收益预测&#xff1a;能形成合力的收益预期&#xff…

啊啊忍不住了,更!新!!!

你萌都还在&#xff0c;好开心 o(≧v≦)o在2017年9月21日这个特殊的日子&#xff0c;小夕在长达30天的沉默后&#xff0c;终于冒泡了&#xff01;有木有很激动&#xff0c;很期待&#xff1f;&#xff01;&#xff08;小夕&#xff0c;你不说我都忘了还有这订阅号了&#xff09…

【数据挖掘】数据挖掘和数据分析基础

参考文献&#xff1a;《Python数据分析与挖掘实战》张良均等 数据挖掘建模过程 定义挖掘目标&#xff1a;理解任务&#xff0c;确定指标数据采样&#xff1a;注意数据的完整性和有效性数据探索&#xff1a;异常值分析、缺失值分析、相关性分析、周期性分析数据预处理&#xff…

Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析

米筐科技&#xff08;RiceQuant&#xff09;策略研究报告&#xff1a;Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析 江嘉键1 年前1 概述Barra 结构化风险模型是全球知名的投资组合表现和风险分析工具。最近一段时间&#xff0c;我们米筐科技量化策略研究团…

深度学习资料挑的眼花啦?小夕帮你做选择!

小夕还记得几年前刚入坑的时候&#xff0c;老师给的入门资料就是一堆论文&#xff01;害的小夕差点放弃。。。如今深度学习应用的开发成本越来越低&#xff0c;学习资料越来越多&#xff0c;于是对初学者来说进入了另一个相反的困境——资料过多&#xff0c;让人眼花缭乱&#…

干货 | 深度学习的可解释性研究(一):让模型「说人话」

在这篇文章中&#xff1a;可解释性是什么&#xff1f;我们为什么需要可解释性&#xff1f;有哪些可解释性方法&#xff1f;在建模之前的可解释性方法建立本身具备可解释性的模型在建模之后使用可解释性性方法作出解释关于 BIGSCity参考文献不以人类可以理解的方式给出的解释都叫…

深度解析LSTM神经网络的设计原理

引人入胜的开篇&#xff1a;想要搞清楚LSTM中的每个公式的每个细节为什么是这样子设计吗&#xff1f;想知道simple RNN是如何一步步的走向了LSTM吗&#xff1f;觉得LSTM的工作机制看不透&#xff1f;恭喜你打开了正确的文章&#xff01; 前方核弹级高能预警&#xff01;本文信息…

Step-by-step to LSTM: 解析LSTM神经网络设计原理

Ps&#xff1a;喂喂喂&#xff0c;你萌不要光收藏不点赞呀_(:з」∠)_emmmm... 搞清楚LSTM中的每个公式的每个细节为什么是这样子设计吗&#xff1f;想知道simple RNN是如何一步步的走向了LSTM吗&#xff1f;觉得LSTM的工作机制看不透&#xff1f;恭喜你打开了正确的文章&#…