从应用创新的角度再论语义表示

 author:XueQiang Tong  mail:[email protected]  v:txq130 

先引入一个例子:

  bush这个词有灌木丛和总统两个意思。给你一句话,如果其中含有bush这个词,如何判断他的语义?

  这是一个经典又古老的nlp话题。解决他的方案,有很多。其中有一个方案是这样的:在计算bush的上下文与标注语料中出现bush句子的上下文的相似度,如果与总统的上下文相似度高,就是总统的意思,如果与灌木丛的上下文相似度高,就是灌木丛的意思。这个方案最大的特点是计算语义的上下文,这是语义消歧,除此之外,汉语中有很多同义词,反义词和近义词,衡量他们的最好办法仍然是上下文。那么在汉语中,会有如下的情况:①相同语境下出现不同的词②不同的语境下出现相同的词,这两种情况在语料中是大量存在的。稍后深入讨论这两种情况对语义表示的影响。

  本文要讨论的是,从w2v的核心思想入手,探讨他的语义表示在前面提到的两种情景下会有什么问题,如何改进然后迁移到句子或者短语语义表示。

  上面提到了通过计算上下文相似度来解决语义问题。那么问题来了,我们可不可以把上下文的信息融合到词本身,这样就可以直接衡量词的差异了。也就是,用一个稠密的向量(相对于one-hot)把词本身,语义信息和上下文信息压缩起来,用以解决此的语义问题。在nlp中,解决语义问题的核心是语言模型,有了语言模型就可以抽象出数学模型。这个问题的语言模型是:相同语境出现的词语义相近。举例子:现有一句话由以下词构成:ABCDE。现在要用一个稠密向量表示C的语义,把他的上下文A、B与D、E融合进来,也就是这样一个数学公式:A + B + D + E = C。这个公式是一个最简单的加法,但是要转化成机器学习的数学模型才能解决问题,这个公式的含义就是输入上下文,输出词分类,是个分类模型,当然也可以倒过来。构建这样一个分类模型,从中我们要得到词的语义表示,这是一个variable,同时还要有分类输出层的参数thelta,一共两个variable。那么,这两个变量应该是什么关系才能满足上述语言模型,也就是保证C的上下文是A,B,D,E的前提下获取到他的语义表示?很显然,这个过程中,两个参数绝非是独立的,必须相互决定相互影响才能满足这个需求。首先获取词的语义表示变量,获取之后进入到分类层,让着两个参数是互为对称的关系。于是,我们想到,用神经网络抽取到词的高阶语义表示,然后进行激活,把激活值的输出作为分类层的输入,完成模型的构建。说白了,就是现在有一个稠密语义表示的矩阵,这个矩阵就相当于词典,最初的时候每个词用one-hot表示,拿到这个one-hot后,到稠密词典中进行查找,找到对应的稠密向量表示,然后去做分类映射,这是基本的想法。查找的过程属于典型的矩阵操作(请体会矩阵的本质,以及矩阵分解的意义),这个过程其实是一层神经网络的操作,然后用y = x激活。

  上面的思考过程很重要。w2v的CBOW和Skip_Gram是两个非常经典的语言模型。关于他的优化及推导不做具体论述了,比较简单,现在回归本文的正题。之前做过siamese lstm的实验,主要用以解决句子语义相似度的计算,这个方案是2015年提出的,获得了很高的准确率。但是缺点也很明显,人工构建语料比较复杂,而且准确率难以确定。监督学习给企业应用带来不小的困扰,探索非监督学习用以解决句子或者短语的语义表示是一个很重要的尝试。因为之前word2vector在词语义表示上已经很成功了,所以没有必要推倒了重来,我们要做的是在此基础之上探索。为了探索w2v的语义表示问题,我们不妨从一个经典古老的话题开始:TF-IDF。在深度学习没有出现之前,他在特征词抽取上占据主导位置,包括lucene底层的文档打分也用到他。那么他有什么闪光点吗?在深度学习产生后他是不是没用了呢?这个方法认为,如果一个词在一篇文章中出现的频率高,那么他就是重要的,同时如果有多篇文章都出现了这个词,那么他又是不那么重要了。事实上,IDF的推导是有朴素贝叶斯简化来的,也可以用信息熵来理解他,就是平均信息量。现在来探讨前面提到的两种情景。用w2v训练词嵌入时,因为他是机器学习模型,有过经验的人都知道,在机器学习模型训练中会存在数据倾斜问题。什么意思呢?以垂直搜索的文档机器学习排序为例,在listwise产生之前,占据主导的是pairwise,比如用SVM转化为二分类问题,结果就转化为了文档对儿的分类。由于不用的文档集合文档对儿数量不一样,多的会对模型训练贡献大,预测时会出现数据倾斜。那么在w2v训练时同样存在这样的数据倾斜问题。①相同语境下出现不同的词。比如在训练语料中,上下文A,B,D,E,中间的词C,出现了100次,而同样的上下文情况下,中间的词F,只出现数次,那么在训练时C的语义表示会比F要稠密一些,会与相同的上下文联系更加紧密。但是,在汉语中,有很对类似于英文中的and,but,no等词,而且出现的频率很高,这些词对句子的语义贡献是无意义的,于是训练出来的语义表示会倾向于语义无意义方向。另外,相同的语境下出现的不同的词,用VSM来解释的话,应该是近义词,位于一个象限内。这样汉语中众多的词,在VSM中会汇聚成不同的簇,就像聚类一样。那么问题有来了,如果一个词有多个含义,如何表示歧义词的语义?目前的word2vector在这方面有没有问题呢,答案是有的。熟悉聚类算法的人都知道,除了kmeans还有高斯混合聚类。他们俩的区别可以这样说,前者的归类是hard,后者是soft,那么解决歧义词的语义表示,应该让他具备多重语义,也就是应该与多个上下文重叠。这个今年已经有学者改进了。②不同的语境下出现相同的词,out of context情况。如果要预测的词的上下文在训练语料中从来没有出现过,此时的预测与上下文显然是违和的。

  上面提到的两个问题,已经有了解决方案,之所以关注这些问题,是为了解决句子语义表示的非监督学习。对于每一个句子都有一个隐含的句子嵌入表示,以这个语义表示为中心,他会影响句子中每个词的分布。也就是我们应该找到一种解决办法,让这些词的语义表示,通过某种方式,比如加权求和之后得到最终的语义表示,与这个隐含的句子语义表示最接近,有点儿接近非监督学习的思想了吧。前面提到了TF-IDF的思想,这里很容易让人联想到:把每个句子看成文档,每个句子不允许重复词的情况。2017年学者提出了对w2v训练出的词嵌入进行平滑处理以及出去第一主成分的方案来解决句子向量。针对out of context的情况主要用平滑来解决,针对语义倾斜问题用取出第一主成分来解决。总结起来,这个方案就是:

  

  这个方案出来后,让人很吃惊,竟然这么简单而且超越了之前的siamese lstm,最大的特点是非监督学习。但是任何算法都有局限性,这个方案用在情感分析中是有问题的,因为and,but,no等词在情感分析中是有意义的。原论文连接地址:https://translate.googleusercontent.com/translate_c?depth=1&hl=zh-CN&prev=search&rurl=translate.google.de&sl=en&sp=nmt4&u=https://openreview.net/pdf%3Fid%3DSyK00v5xx&usg=ALkJrhj3hLRTIvvsJmVZz2lRkOljjVNSeA#11

  另外,文章或者段落的语义表示,这个方案也是有局限的。获取到每个句子向量后,不可能粗糙地累加起来,因为这不符合人脑神经元对于阅读文字的机制。本人认为最符合的模型应该是attention model。因为人在阅读一篇文章时,顺序地从第一句话开始往后阅读,首先记忆是逐渐消失的,但是有部分重要的词会形成记忆,其余的忽略掉,这些重要的词不断汇集,在这个过程中不断揣摩文章的中心思想,当遇到中心句时我们会比较他的上下文与中心句的关联程度,如果大的话,就认为他是中心句,就是这样的不断搜索的过程。而这个过程的解决方案,本人结合了siamese lstm和atttention model,比较符合这个机制。分别构造词级别和句子级别的两个attention model,前者重新获取每个句子的向量,后者再此基础上获取整个上下文的语义表示,然后把中心句共同引入siamese lstm中,输出相似度得分进行训练。预测时,按照上述人脑的机制,按照时间序列t,把每个句子当作中心句,用attention model获取上下文,然后计算t时刻的句子与上下文相似度,增加时间序列继续搜索,从中找出相似度最高的句子向量,这个句子就是中心句。这个过程完美地模拟了上述人脑寻找中心句的机制。

时间: 2024-10-04 10:21:34

从应用创新的角度再论语义表示的相关文章

从Vue.js源码角度再看数据绑定

## 写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出.文章的原地址:[https://github.com/answershuto/learnVue](https://github.com/answershuto/learnVue).在学习过程中,为Vue加上了中文的注释[https://github.com/answershuto/learnVue/tree/master/vue-src](http

以Attention Model为例谈谈两种研究创新模式

/* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/                                                     author: 张俊林 各位观众朋友好,也许此刻您刚打开电梯--.读这一篇之前,请您最好先拜读一下本篇的前传:文本处理中的Attention Model:是什么及为什么.因为那里有些背景知识需要交代. 话接上回书,在研读AttentionModel相关文献过程中,我再次深切感受到了科研中的两种创新模式:模型创新与应用创新

从技术经理的角度算一算,如何可以多快好省的做个app

[导读]前端时间,一篇“从产品经理的角度算一算,做个app需要多少钱”的文章在网上疯传,可见大家对互联网创业的热情!这次,从一名技术经理的角度再给大家分析一下,如何使用跨平台开发技术为你节省上百万的开发成本.所谓“跨平台”开发技术,就是使用一种语言和一种开发工具同时支持几种不同的手机/平板设备,这样做不仅仅省钱而且开发效率高,可以让你更快的推出新版本和新功能! 作为一名软件工程顾问,我曾参与过很多的项目,主要为软件团队进行开发工具和方法论方面的咨询/培训/指导,我接触过不下100个各种类型/大小

(四)Kafka0.8.2官方文档中文版系列-消息传递语义

4.6 Message Delivery Semantic(消息传递语义) 现在我们了解了生产者和消费者的工作方式,让我们讨论Kafka在生产者和消费者之间提供的语义保证.显然,可以提供多种可能的消息传递保证: 最多一次 -消息可能会丢失,但永远不会被重新发送. 至少一次 -消息永远不会丢失,但可能会被重新发送. 恰好一次 - 这是人们真正想要的,每条消息只发送一次. 值得注意的是,这会分解为两个问题:发布消息的持久性保证以及消费消息时的保证. 许多系统声称提供"恰好一次"的交付语义,

研究创新的战略、规律、方法、技巧的13本书

整理了最近几年看过的研究创新的书13本,2010年看过3本,和一本没看过但是认为比较重要的.<飞奔的物种>是新增的. 具体清单如下: 5星|<伟大创意的诞生:创新自然史>:开放连接意外错误催生创意 作者研究创意诞生的环境与条件,旁征博引,自己也做了相关的研究. 引用的创意案例主要集中在生物进化和科技发明两大类,其中的科技发明涉及到了许多不同的分科,作者显然是查了许多一手资料而不是从其他书中抄故事. 除了案例,还引用了许多相关的研究成果. 作者举案例和研究成果的基本结论是:创意是在网

开放、连接、意外、错误催生创意:创新研究15本书

整理了最近几年看过的研究创新的书15本,2010年看过的3本直接把书评搬到这个索引里来了,没有更详细的点评,<大爆炸式创新>没看过但是认为比较重要的.<闪电式扩张>是新增的,这本书尝试找出硅谷巨头爆炸式增长的原因,我的感觉是作者把爆炸式增长换了个说法当成了原因,不过书中总结的爆炸式增长过程中的管理经验技巧还是有参考价值. 硅谷巨头高速增长的秘诀:3星|<闪电式扩张> 作者是Paypay创业团队成员,领英创始人,混迹硅谷的投资人.本书英文版版权是2018年的,算比较新的书

从源码角度了解SpringMVC的执行流程

目录 从源码角度了解SpringMVC的执行流程 SpringMVC介绍 源码分析思路 源码解读 几个关键接口和类 前端控制器 DispatcherServlet 结语 从源码角度了解SpringMVC的执行流程 SpringMVC的执行流程网上有很多帖子都有讲解,流程图和文字描述都很详细,但是你如果没有通过具体源码自己走一遍流程,其实只是死记硬背.所以想开个帖子从源码角度再梳理一遍SpringMVC的执行流程,加深印象. SpringMVC介绍 SpringMVC采用的是前端控制器(Front

秦涛:深度学习的五个挑战和其解决方案

深度学习的五个挑战和其解决方案 编者按:日前,微软亚洲研究院主管研究员秦涛博士受邀作客钛媒体,分享他对深度学习挑战和解决方案的思考 ,本文为秦涛博士在此次分享的实录整理. 大家好,我是微软亚洲研究院的秦涛,今天我将分享我们组对深度学习这个领域的一些思考,以及我们最近的一些研究工作.欢迎大家一起交流讨论. 先介绍一下我所在的机器学习组.微软亚洲研究院机器学习组研究的重点是机器学习,包含机器学习的各个主要方向,从底层的深度学习分布式机器学习平台(AI的Infrastructure)到中层的深度学习.

广告行业中那些趣事系列3:NLP中的巨星BERT

摘要:上一篇广告行业中那些趣事系列2:BERT实战NLP文本分类任务(附github源码)通过项目实战讲解了如何使用BERT模型来完成文本分类任务.本篇则从理论的角度讲解BERT模型的前世今生.BERT虽然在模型创新的角度来说并不是非常出色,但它是近几年NLP领域杰出成果的集大成者.BERT大火最重要的原因是效果好,通用性强两大优点.可以说BERT的出现是NLP领域里具有里程碑意义的大事件.本篇主要讲解NLP里面的Word Embedding预训练技术的演化史,从最初的Word2Vec到ELMO