Enhanced-RCNN: 一种高效的比较句子相似性的方法 |WWW 2020
作者 | 彭爽
出品 | AI科技大本营(ID:rgznai100)
国际顶级会议WWW2020将于4月20日至24日举行。始于1994年的WWW会议,主要讨论有关Web的发展,其相关技术的标准化以及这些技术对社会和文化的影响,每年有大批的学者、研究人员、技术专家、政策制定者等参与。以下是蚂蚁金服的技术专家对入选论文《Enhanced-RCNN: 一种高效的比较句子相似性的方法》做出的深度解读。
前言
如何衡量句子相似性是自然语言处理中一项基础而又重要的任务。当前比较句子相似性的方法主要分为3种:表示型(Siamese Network Framework)、交互型(Matching-Aggregation Framework)和预训练语言模型(Pre-trained Language Model)。
表示型的方法,代表作如(Siamese-CNN,Siamese-RNN),它们将待比较的两个句子通过同一个编码器映射到相同的向量空间中,这种简单的参数共享的方法有着很好的线上性能,但是由于模型本身没有去考虑两个句子编码向量之间的交互关系,往往准确率不佳,于是,就有人提出了交互型的句子相似度比较方法,通过一些复杂的注意力机制来去捕捉两个句子编码向量之间交互的信息,从而更好的进行句子相似度建模。通常,基于交互型的句子相似度比较方法的预测准确率会比基于表示型的方法高出不少。
最近,预训练语言模型(BERT,RoBERTa等)在很多公开的句子相似度数据集上达到了最优的效果,这种方法通过将在大规模语料上(比如维基百科)上训练好的语言模型放到特定领域的目标数据集上进行微调(Fine-tune)。这种类型的方法虽然效果显著,但是缺点在于模型参数量庞大,在实际工业界难以部署到线上使用。
我们在经典的交互型句子相似性比较方法 ESIM 的基础上,提出了一种新型的计算句子相似度的方法 Enhanced-RCNN,来更好的捕捉待比较的两个文本自身以及相互之间的信息。同时我们的模型更加的轻量级,并不像其他文本匹配模型那样堆叠复杂的注意力机制来对两个文本进行建模。简单来说,Enhanced-RCNN 在效果保证的前提下也拥有良好的性能。
Enhanced-RCNN简介
智能客服的本质,就是充分理解用户的意图,在知识体系中精准地找到与之相匹配的内容,回答用户问题或提供解决方案。句子相似度计算,是贯穿智能客服离线、在线和运营等几乎所有环节最核心的技术,同时也是自然语言理解中最核心的问题之一,广泛应用于搜索、推荐、对话等领域。
蚂蚁智能机器人客服主要靠检索用户的问题来获取候选问题和答案。基于检索的自然语言对话系统需要离线将大规模的对话语料以“问题-答案”对的形式建立知识库索引,其中问题由标准问法和扩展问法组成。在线对话时,通过检索找到跟用户相似的问题(同时匹配标问和扩展问法),将检索的结果输入给句子相似度模型进行打分排序,最终将相似度较高的结果返回给用户。由此可见,如何计算用户的问题和知识库中已有问题的相似度对于整个问答系统而言至关重要。
在本论文中,我们提出了一种高效的比较句子相似性的方法 Enhanced-RCNN,这是我们在经典文本匹配模型 ESIM的基础上改进的模型,该模型在 Quora Question Pair 和 Ant Financial 两个公开的文本匹配数据集上均取得了非常有竞争力的结果,并且和时下火热的预训练语言模型 BERT 相比,Enhanced-RCNN 也取得了相当的效果,同时参数量相比BERT-Base 也大幅减少。
Enhanced-RCNN深入解读
我们提出的Enhanced-RCNN 模型结构如下图所示。
下面我们由下至上来进行介绍
1 Input Encoding
Input Encoding 分为 RNN Encoder 和 CNN Encoder 两部分。RNN 主要用来捕捉文本的序列信息;CNN 主要用来捕捉文本的关键词信息,CNN 的这个特性在自动摘要中已经得到广泛应用。
下面分别来介绍 RNN Encoder 和 CNN Encoder。
1.1 RNN Encoder
首先,对待比较的 2 个问题文本使用 BiGRU 进行编码,主要为了捕捉句子序列的特征信息。这里没有使用 ESIM 中的 BiLSTM,因为在实际应用中发现使用 BiGRU 的效果更好,同时效率更高。
1.2 CNN Encoder
在 BiGRU 编码的基础上,使用 CNN 来进行二次编码,利用 CNN 卷积核的特质来捕捉词粒度 (类似 n-gram) 的特征信息 (关键词、词组等), 得到 RCNN Encoding。
在设计 CNN 层结构的时候,我们借鉴了 "Network in Network" 的思想,设计了相应的结构方便更好的提取文本的特征信息,如下图所示。
这里激活函数选择 Relu,对于每个 CNN 单元,具体的计算过程如下。
在 CNN 层的最后,我们采用均值池化和最大池化来提取 CNN 单元输出的信息,并且将它们拼接起来获得最后的 CNN 层最后的输出。
我们通过在 Input Encoding 中结合 BiGRU 和 CNN,可以更加充分的去捕捉两个待比较的问题文本的细粒度 (fine-grained) 特征信息。和 ESIM 模型不同的是,ESIM 中这里只用到了 RNN Encoding,在后续的 Interaction Modeling 中,Enhanced-RCNN 会同时使用 RNN Encoding 和 RCNN Encoding 来捕捉两个文本的交互信息。
2 Interactive Sentence Representation
我们的 Enhanced-RCNN 和 ESIM 模型一样,都属于基于“交互式”的文本模型,所以在 Input Encoding 之后,通过注意力机制去捕捉两个带比较文本直接的交互信息,这里用到的是 soft attention alignment 来得到 Interactive Sentence Representation。
2.1 Soft-attention Alignment
首先,我们利用 BiGRU 输出的 RNN Encoding 去计算得到两个待比较的文本之间的软注意力权重 (Soft Attention)。这里针对待比较的两个文本,可以得到的 2 个不同的注意力权重,分别是文本 A 相对文本 B,和文本 B 相对文本 A 的。这部分可以理解为去捕捉两个问题之间交互的信息 (相似和不相似的地方),具体的计算方法如下。
2.2 Interaction Modeling
通过 soft attention alignment 得到 Interactive Sentence Representation 之后,我们使用“最大”池化和“均值”池化进一步捕捉文本的特征信息,并且在之后和RCNN Encoding 相结合,具体的计算过程如下所示。
和当前的基于交互式的文本匹配方法(比如 ESIM)不同的是,我们同时使用 RNN 和 CNN 来进行 Interaction Modeling 以获得两个文本的 Interactive Sentence Representation。通过结合 RNN 和 CNN 的优点,我们可以捕捉更细粒度(fine-grained)的特征 (sequence and keywords information)。同时,由于 CNN 卷积核特有的参数共享机制,我们模型的参数量也能得到进一步缩小。
3 Similarity Modeling
在得到了Interactive Sentence Representation 的Oa 和 Ob 之后,我们设计了一个特殊的 Fusion Layer,用在全局性的相似度建模(Overall Similarity Modeling)中来融合两个文本的向量表示。
3.1 Fusion Layer
将 RCNN 的 input encoding 和软注意力权重输出到一个融合层(Fusion Layer),引入了门限机制(Gate),进行全局性的相似度建模。
融合层的目的主要是为了更好的融合两个待比较文本的 Interactive Sentence Representation,为了方便后面计算两个问题的相似度。
在设计这个融合层的时候,我们参考了达摩院在机器阅读领域里面提出的 SLQA 模型中的设计,两个输入文本的 Fused Representations 可以被形式化的表示如下:
然后,Oa' 和 Ob' 拼接起来,得到:
3.2 Label Prediction
在最后的 prediction layer,我们将前一步输出Mout输入到一个神经网络全连接层中去计算两个句子相似的概率。整个模型是端到端来训练的,并且使用 cross-entropy 作为损失函数。
实验
我们选择 Quora Question Pair 和 Ant Financial 这两个比较句子相似性的公开数据集,数据集的介绍如 Table 1 所示。
4.1 Ablation Studies
首先,我们做了消融分析的实验,来比较有无 BiGRU、CNN、Attenion 的影响,结果如 Table 2 所示。
从消融分析的结果可以看出,去掉 BiGRU 对应结果的影响是最大的,说明了使用 BiGRU 对文本进行建模是有效并且必要的;去掉 CNN 的影响其次,说明 CNN 的加入,可以在某些方面弥补 BiGRU 的不足。从前 2 个消融分析的实验可以看出,单独使用 BiGRU 和单独使用 CNN 的效果和同时使用 BiGRU 和 CNN 有较大差距,说明了我们在 Input Encoding 和 Interaction Modeling 阶段引入 BiGRU 和 CNN 的做法是 work 的。
最后一个消融分析实验,我们比较了去掉 Attention Layer 对结果的影响,实验结果显示,其实有无 Attention 对应结果影响不大,至少远没有去掉 CNN 或者 BiGRU 大。这个有趣的发现抛出了一个问题,就是现在很多 Text Matching 模型中使用的那么复杂的 Attenion 机制真的有用吗?
4.3 Experiments on Paraphrase Identification
下面我们和当下流行的 Text Matching 模型进行了比较,分为两部分,第一个是和非 BERT 的传统文本匹配模型进行比较,第二个是和 BERT 模型进行比较。
第一个部分,Enhanced-RCNN 在 Quora 和 Ant Financial 这两个公开数据集上和传统的文本匹配模型的比较中,取得了最优的结果(如 Table 3 所示)。传统的文本匹配模型主要分为两种 -- “表示型”(Siamese-CNN, Siamese-LSTM)和 “交互型” (BiMPM, LDC, ESIM 和 DINN)。“交互型” 模型和“表示型”模型的主要区别在于“交互型”的模型利用 Attenion 机制去捕捉了 2 个文本之间的交互信息,对于文本特征信息的捕捉相比“表示型”模型更加的充分。我们提出的 Enhanced-RCNN 属于一种 “交互型” 的文本匹配模型,在交互机制的设计上更加轻量级,同时效果相比其他的 “交互型” 模型更好。
第二个部分,我们拿 Enhanced-RCNN 和当下 NLP 的明星模型 BERT 进行了比较(如 Table 4)。不出意外,在单模型的比较下,Enhanced-RCNN 不如 BERT-Base,不过它的效果也很有竞争力;当对 BERT-Base 进行 ensemble 之后 (5-fold),Enhanced-RCNN 的效果会超过 BERT-Base。
除了对比 Enhanced-RCNN 和 BERT-Base 的效果之外,我们还对比了他们的 params size 和 inference time cost(如Table 5 所示),Enhanced-RCNN 的 params size 只有 BERT-Base 的十二分之一,inference speed 比 BERT-Base 要快十倍。可以看出,Enhanced-RCNN 要更高效,更适合工业场景的应用。
4.4 Case Study and Error Analysis
在Case Study中,我们展示了一个在实际业务中典型的例子,“花呗”和“花被”是经常被混淆的错别字,我们将 Enhanced-RCNN 和 Enhanced-RCNN 去掉了 CNN module 之后进行了对比,可视化了 Interaction Modeling 中两个句子的 Attention 矩阵。可以看到,“花呗”和“花被”这2个词在 Enhanced-RCNN 下的 Attention 权重要明显高于没有加 CNN 层的,从侧面反映了添加CNN层可以让模型在错别字的处理上具有更好的鲁棒性。
Enhanced-RCNN的未来
虽然Enhanced-RCNN在预测的准确率上不如BERT-Base,但是由于其参数量少,较为适合用于线上部署使用,同时,通过一些知识蒸馏的方法(Knowledge Distillation),也可以将Enhanced-RCNN作为学生模型(Student Model),去学习BERT-Base,即老师模型,来进一步提升原有Enhanced-RCNN模型的预测准确率。
在未来,我们希望不仅仅将 Enhanced-RCNN 的应用在比较句子相似性,还希望在更多领域去应用 Enhanced-RCNN 模型(比如 Text Inference 或者 Answer Selection 任务)。
欢迎所有开发者扫描下方二维码填写《开发者与AI大调研》,只需2分钟,便可收获价值299元的「AI开发者万人大会」在线直播门票!
推荐阅读
前百度主任架构师创业,两年融资千万美元,他说AI新药研发将迎来黄金十年
8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
400 多行代码!超详细中文聊天机器人开发指南 | 原力计划
知识图谱够火,但底层技术环节还差点火候 | 技术生态论
机器学习项目模板:ML项目的6个基本步骤
BM、微软、苹果、谷歌、三星……这些区块链中的科技巨头原来已经做了这么多事!
你点的每个“在看”,我都认真当成了AI
相关文章:

直接可以拿去用的正则验证表达式
直接可以拿去用的正则验证表达式为了方便自己也方便初学的学弟们,自己总结了网上的众多正则验证式,现分享给大家,可以直接拿去用。一、校验数字的1 数字:^[0-9]*$2 n位的数字:^\d{n}$3 至少n位的数字:^\d{n…
家庭局域网开启AP隔离利用无线路由器互连
一开始可以上网,可以ping网关192.168.1.1,但是几台电脑之间就是不能互ping。 其实,真实的原因就是没有开启无线路由器的AP隔离。 在浏览器中输入192.168.1.1进入路由搜索一般用户名密码都是admin,具体请参见自己路由的说明书 操…
通过 Python 代码实现时间序列数据的统计学预测模型
来源 | DeepHub IMBA封图 | CSDN 付费下载于视觉中国 在本篇中,我们将展示使用 Python 统计学模型进行时间序列数据分析。 目标是:根据两年以上的每日广告支出历史数据,提前预测两个月的广告支出金额。原始数据:2017-01-01 到 201…

神色洋溢的 域名背后的故事
前短时间,我刚申请一个域名,好的顶级域名都被被人一拥而上的都强去了,我只好找那些申请好的用户买呀,这叫炒作,就是这样的抄起来的。你说平常一个也就100左右就搞定,可是现在要是到那票手里,那就…

Rust语言开发基础(六)基础语法
2019独角兽企业重金招聘Python工程师标准>>> 一、变量的定义和使用 其它常见的编程语言对变量的定义通常是通过声明类型和使用关键new来创建一个变量,但Rust不是,Rust使用关键字let。 1. 变量绑定通过let实现 fn main() { let x 5; } 2. 变量…
400 多行代码!超详细 Rasa 中文聊天机器人开发指南 | 原力计划
作者 | 无名之辈FTER责编 | 夕颜出品 | 程序人生(ID:coder_life)本文翻译自Rasa官方文档,并融合了自己的理解和项目实战,同时对文档中涉及到的技术点进行了一定程度的扩展,目的是为了更好的理解Rasa工作机制…
Linux配置SSH无密码登陆
可以使用“公钥私钥"认证的方式来进行ssh登录。 所谓 "公钥私钥"认证方式,就是首先在客户机上创建一对公钥和私钥,公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa 然后把公钥文件放到目标服务器…
Linux进程浏览器htop安装与使用
htop 是一个 Linux 下的交互式的进程浏览器,可以用来替换Linux下的top命令。当前具有按树状方式来查看进程,支持颜色主题,可以定制等特性。其实htop是top的加强版,增加了很多功能。 官网 http://hisham.hm/htop/ 下载地址http:/…
什么?神经网络还能求解高级数学方程?
来源 | 数据派 THU封图 | CSDN 付费下载于视觉中国 Facebook AI建立了第一个可以使用符号推理解决高级数学方程的AI系统。通过开发一种将复杂数学表达式表示为一种语言的新方法,然后将解决方案视为序列到序列的神经网络的翻译问题,我们构建了一个在解决积…

***和******
网络是一把双刃剑,它在人类社会的发展中起着越来越重要作用,但同时,网络自身的安全问题也像挥之不去的阴影时刻笼罩在人们心头。据不完全统计,全世界平均每 20秒钟就发生一起******事件,互联网上大约有20万个***网站可…
Linux监控工具dstat
dstat是一个用来替换 vmstat,iostat netstat,nfsstat和ifstat这些命令的工具, 是一个全能系统信息统计工具. 与sysstat相比, dstat拥有一个彩色的界面, 在手动观察性能状况时, 数据比较显眼容易观察; 而且dstat支持即时刷新, 譬如输入dstat 3, 即每三秒收集一次, 但最新的数据都…

9月16号晚上,Asuka有一场关于Windows 7组策略的Webcast,欢迎兄弟们来捧场
之所以选题在组策略之一块,是因为Windows 7和2008 R2对于组策略有了很大的功能上的增强,但是很多IT人员都无法意识或者去重视这一块内容,所以我将从下面这3个角度去介绍这些更新。如果您正好有时间,那不妨来技术交流一番:)直播进入…

腾讯天衍实验室联合微众银行研发医疗联邦学习 AI利器让脑卒中预测准确率达80%
近几年,医疗行业正在经历一场数字化转型,这场基于大数据和AI技术的变革几乎改变了整个行业的方方面面,将“信息就是力量”这句箴言体现的淋漓尽致,人们对人工智能寄以厚望,希望它能真正深入临床一线,帮助医…

JavaSript模块化 AMD CMD 详解.....
模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理。模块化是一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式。可以想象一个巨大的系统代码,被整合优化分割…
在Eclipse中使用Maven构建Spring项目
最新版的Spring需要使用Maven构建,本文讲述怎么在Eclipse构建Maven项目,以配置Spring项目为例。 maven简单介绍 maven是构建工具,也是构建管理工具。ant只是构建工具,因为不支持生成站点功能,只有预处理,编…

Go 语言官网全新改版
2019独角兽企业重金招聘Python工程师标准>>> 前两天发现 Go 语言官网改版了,布局由原来的左中右变成了上中下结构,主色调没有变,整体依然保持简洁的风格。在首页添加了一个叫 Playground 的模块,它可以编译、运行你输入…
就在今晚 | 港科大李世玮教授问诊未来,开辟大湾区新航路
阳春三月,万象更新,2020年注定是不平凡的一年!有激荡就会遇见变革,有挑战就会迎来机遇。今天总会过去,未来将会怎样?香港科大商学院内地办事处重磅推出全新升级的《袁老师访谈录》全新系列【问诊未来院长系…

NLP(Natural Language Processing)
https://github.com/kjw0612/awesome-rnn#natural-language-processing 通常有: (1)Object Recognition (2)Visual Tracking (3)Image Generation (4)Video Analysis NLP: (1)Language Modeling (2)Speech Recognition…
Linux环境编程
1.__sync_fetch_and_add和__sync_bool_compare_and_swap gcc从4.1.2提供了__sync_*系列的built-in函数,用于提供加减和逻辑运算的原子操作。 其声明如下: type __sync_fetch_and_add (type *ptr, type value, ...) type __sync_fetch_and_sub (type *p…
AI新基建如何构建?浪潮给出了一个答案
作者 | Just出品 | AI科技大本营(ID:rgznai100)伴随生产力升级,社会基础设施也正在发生变化。而智慧时代的新型基础设施,要能够对外提供各种算力服务、数据服务和AI服务。浪潮认为,其核心是计算力的生产中心。因此&…

协作是企业管理的重点和难点
这个问题让我想起了一道数学题,11?。在生活中这个题目的答案会千差万别,更别说一个企业。在我眼中,企业中最难管的是关系,更准确的说是协作。 经理过好几个信息系统建设的项目,小到一个简单的邮件系统&…

使用CSS3美化复选框checkbox
我们知道HTML默认的复选框样式十分简陋,而以图片代替复选框的美化方式会给页面表单的处理带来麻烦,那么本文将结合实例带您一起了解一下使用CSS3将复选框checkbox进行样式美化,并且带上超酷的滑动效果。 查看演示 下载源码HTML 通常我们使用以…

Thift安装
thrift官网http://thrift.apache.org/ #wget http://mirror.bit.edu.cn/apache/thrift/0.9.2/thrift-0.9.2.tar.gz #tar -zvxf thrift-0.9.2.tar.gz # ./configure --prefix/usr/local/thrift #make && makeinstall 增加到环境变量 #export PATH$PATH:/usr/…
“手把手撕LeetCode题目,扒各种算法套路的裤子”
出品 | AI科技大本营(ID:rgznai100)刷LeetCode刷到懵还是一头雾水?莫慌,这里有一个标星27000的算法详解教程。从项目命名来看,作者labuladong就有着要干翻算法的精气神。当然,这个教程不只是为了机械刷题。…

c语言标准库低通的qsort函数不适宜所有排序任务的原因
c语言标准库低通的qsort函数不适宜所有排序任务的原因: 第一:它只能用于内存中的数组排序,不能对链表中的数据排序; 第二:因为它是参数化的函数,所以能对各种数据进行操作,也造成它的运行速度比…

第三周学习进度条
星期日 星期一 星期二 星期三 星期四 星期五 所花时间 下午: 3:00-5:00 上午: 8:00-10:00 下午: 3:00-5:00 下午: 2:30-4:30 下午: 4:30-5:30 下午࿱…
jca分析java dump日志
可以使用jca分析java dump的日志 jca:https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid2245aa39-fa5c-4475-b891-14c205f7333c 运维报说是某机房突然全部都线程阻塞了 其中锁住了tcp的socket,在研究无果的情况下…

shell脚本10
对于使用/bin/bash作为登录shell的系统用户,检查他们在/opt目录中拥有的子目录或文件数量,如果超过100个,则列出具体数值及对应的用户帐号.具体实现: #!/bin/bash DIR"/etc" LMT100 validusersgrep "/bin/bash" /etc/passwd|cut -d ":" -f 1 for…
百度重磅发布云手机:低配置也可玩大型游戏 21
又一个科技巨头发力云游戏。4月15日,百度举行"云手机"线上直播会,发布基于自主研发的ARM服务器的百度"云手机"产品,让用户摆脱硬件的制约,中低端设备也能流畅运行大型游戏和应用。百度"云手机"可以…

创业思维 - Qunar的故事
在这里特别想介绍下Qunar,因为他和我们的最主要的系统-交易系统相关。大家都知道淘宝的交易平台可以说是国内甚至全球最复杂的交易系统。但是我们的交易系统由于承担业务太多,发展太久,历史包裹太重,在业务架构上可以说有很大的问…