揭秘!机器人和你对话时在想什么?

阿里妹导读:为什么聊天机器人越来越普及?聊天机器人不仅可以节省时间,提升效率,还能一天24小时提供服务,更是可以减少误差。聊天机器人背后的问题原理是什么?效率如何提升?就是今天我们要了解的内容。本篇内容已被收录于ACL2019,希望对你有所帮助。

1.背景

在Chatbot整体解决方案中, 既有面向任务型的taskbot(诸如订机票、查天气等), 也有更偏向知识问答的qabot,而在客服场景下,最基础的类型也是这类。如果从知识库的形式来区分qabot,可以有 基于「文档」的doc-qabot、基于「知识图谱」的kg-qabot、基于「问答对」的faq-qabot等。我们这里重点关注的是最后一种faq-qabot(也简称faqbot), 这种形式的方案对用户而言易理解易维护,也是目前chatbot解决方案中不可缺的一部分。

faqbot就是将query匹配到一条「问答对」上,从技术的角度看,有两大类方法, 一是text classification, 二是text matching,它们各有适合的场景,前者适合咨询量大且比较稳定的faq,后者适合长尾或时常变化的faq。

店小蜜是我们提供给阿里平台商家的一套智能客服解决方案。在店小蜜中, 基于Faq的问答是个很基础的部分,我们在这个领域,在文本分类和文本匹配上进行了各方面的研究和实践, 在本篇中重点对文本匹配的基础模型进行介绍。

「文本匹配」是NLP方向的一个重要研究领域,有着悠久的历史,很多NLP任务都与此相关,比如 natual language inference、parahparase identification、answer selection等,都可以归结成「文本匹配」问题。

有很多人研究这个课题, 当前优秀的匹配模型有哪些?这些模型有什么异同?这些模型存在哪些问题?这些都是我们展开这个项目需要先分析和回答的问题。我们通过分析SNLI榜单上的模型,有几个结论:

  • 优秀的匹配模型都可以归纳成embed-encode-interacte-aggregate-predict五个步骤, interact部分主要是做inter-sentence alignment;
  • 在interact步骤中的对齐操作,设计会比较复杂;而且很多模型只有一次interact步骤;
  • 也有些更深的模型结构,会做多次的inter-sentence alignment, 但因为较深的模型面临着梯度消失、难以训练的问题;
  • 不管是参数量还是响应时间,支撑像店小蜜这样对实时性能要求比较高的场景,都不是很理想。

所以我们在设计的时候, 要求我们的模型在更少的参数量、更简洁的模型结构、更少的inference cost, 保证更容易训练、更适合部署到生产环境, 在这几个前提下, 我们也希望能借鉴深层网络的优势,让我们可以很方便地加深我们的网络层次, 让模型有更强的表达能力。

2.模型

我们通过对学术界提出的各种模型,诸如Decomposable Attention Model、CAFE、DIIN等, 归纳总结,一个匹配模型的整体框架基本上有Embedding Layer、Encoder Layer、Interaction Layer、Aggregation Layer和Prediction Layer五层, 只是每一层都有不同的设计,我们实现一种可插拔的匹配模型框架, 每层都有一些典型的实现。

为了增强我们模型框架的表达能力, 我们将Encoder+Interaction Layer打包成一个Block, 通过堆叠多个Block, 通过多次的inter-sentence alignment,可以让我们的模型更充分地理解两句文本之间的匹配关系。

 

我们基于这种框架,通过大量试验得到一个模型结构RE2, 可以在各类公开数据集、和我们自己的业务数据上都能得到最优的结果,如下图所示。

RE2包括有N个Block, 多个Block的参数完全独立。在每个Block内有一个encoder产出contextual representation, 然后将encoder的输入和输出拼在一起,做inter-sentence alignment,之后通过fusion得到Block的输出。第i个Block的输出,会通过Augmented Residual Connection的方式与这个Block的输入进行融合, 作为第i+1个Block的输入。

 

下面我们详细介绍每个部分:

2.1 Augmented Residual Connection

连续的Block之间用Augmented Residual Connection来连接, 我们将第n个Block第i个位置的输出记作:是个全零的向量。

第一个Block的输入为, 也就是Embeddling Layer的输出, 在Augmented Residual Connection中,第n个block的输入为:

 

其中 [;] 表示拼接操作;

在interaction layer的输入中,存在三种信息, 一是original point-wise information, 在这里就是原始的词向量,在每个Block中都会使用这份信息;二是通过encoder编码得到的contextual information;三是之前两层Block经过对齐加工过的信息。这三份信息,对最终的结果都有不可替代的作用, 在试验分析中会展显这一点。在我们这里encoder使用两层CNN(SAME padding)。

2.2 Alignment Layer

这块我们使用Decomposable Attention Model(Parikh et al., 2016)的对齐机制:

 

2.3 Fusion Layer

这块我们参考CAFE中对concat、multiply、sub三个操作分别通过FM计算三个scalar特征值, 我们针对这三个操作, 用独立的三个全连接网络计算三个vector特征, 之后将三个vector拼接并用进行projection。

2.4 Prediction Layer

输出层就比较常规,针对文本相似度匹配这类任务, 我们使用对称的形式:

针对文本蕴含、问答匹配这类任务, 我们使用

其中H表示多层全联接网络;

3.试验

3.1 数据集

要验证模型效果,我们选择三类NLP任务, Nature Language Inference、Paraphrase Identification、Question Answering, 选用SNLI、MultiNLI、SciTail、Quora Question Pair、Wikiqa这样几份公开数据集。评估指标,前两个任务选用Acc, 后一个任务选择MAP/MRR。

3.2 实现细节

我们用Tensorflow实现模型, 用Nvidia P100 GPU 训练模型, 英文数据集使用NLTK分词并统一转小写、去除所有标点。序列长度不做限制,每个batch中的序列统一pad到这个batch中最长序列长度,词向量选用840B-300d Glove向量,在训练过程中fix住,所有OOV词初始化为0向量,训练中不更新这些参数。所有其他参数使用He initialization, 并用Weight normalization归一化;每个卷积层或全联接层之后,有dropout层,keep rate设为0.8;输出层是两层前馈网络;Block数量在1-5之间调参。

在这几份公开数据集上, 隐层大小设为150;激活函数使用GeLU激活函数。优化算法选用Adam,学习率先线性warmup然后指数方式衰减,初始学习率在1e-4~ 3e-3之间调参;batch size在64~512之间调参。

3.3 结果

我们在这几份公开数据集上,均取得state-of-art的结果(不使用BERT的情况下):

同样这个模型性能上也有很良好的表现,参数量和inference speed都有很强的竞争力, 从而可以在我们店小蜜这样的工业场景中得到广泛应用,给我们匹配准确率这样的业务指标上带来显著的提升。

3.4 结果分析

3.4.1 Ablation study

我们构造了四个baseline模型, 分别是:

1) w/o enc-in: alignment layer只使用encoder的输出;
2) w/o residual:去除所有block之间的residual 连接;
3) w/o enc-out: 去除所有encoder,alignment layer只使用block的输入;
4) highway: 使用highway 网络融合encoder的输入和输出,而不是直接拼接。

在SNLI上得到的结果如图所示。通过1)3)和完整模型的对比, 我们发现alignment layer只使用encoder的输出或只使用encoder的输入,都会得到很差的结果,说明原始的词向量信息、之前Block产出的align信息、当前Block中encoder产出的上下文信息,对最终的结果都是缺一不可的。通过2)和完整模型的对比,我们发现Block之间residual连接发挥了作用;而4)和完整模型的对比显示,我们直接拼接的方式是个更优解。

3.4.2 Block数量的影响
如上图所示,通过Augmented Residual Connection连接的网络,更容易在深层网络中生效,能够支撑更深的网络层次,而其他baseline 模型,在Block数量大于3时, 效果会有很明显的下降,并不能支撑更深层模型的应用。

3.4.3 Occlusion sensitivity

前面讲过, 在alignment layer的输入中,其实是三类信息的拼接:原始的词向量信息、之前Block产出的align信息、当前Block中encoder产出的上下文信息, 为了更好地理解这三份信息对最终结果的影响,我们参照机器视觉中相关工作, 进行了Occlusion sensitivity的分析。我们在SNLI-dev数据上,使用包含3个Block的一个RE2模型,分别将某层Block中alignment layer输入特征的某部分mask成0向量,然后观察在entailment、neutral 、 contradiction三个类别上的准确率变化:

可以得到几个分析结论:

  • mask原始的词向量信息, 会对neutral和contradiction类的识别带来比较大的损失, 说明原始词向量信息在判断两个句子差异性上发挥着重要作用;
  • mask之前Block产出的alignment信息, 会对neutral和contradiction类带来比较大的影响,尤其是最后一层Block的这部分信息对最终的结果影响最大, 说明residual connection使得当前Block能更准确地关注应该关注的部分;
  • mask住Encoder的输出结果, 对entailment的影响更大,因为encoder是对phrase-level 的语义进行建模, encoder的产出更有助于entailment的判断;

3.4.4 Case study

我们选了一个具体的case分析多层Block的作用。

这个case中, 两句话分别是“A green bike is parked next to a door”“The bike is chained to the door”。在第一层Block中,是词汇/短语级别的对齐, 而“parked next to”和“chained to”之间只有很弱的连接,而在第三层Block中, 可以看到两者已经对齐, 从而模型可以根据“parked next to”和“chained to”之间的关系,对两句话整体的语义关系做出判断。从中也可以看到,随着Block的递增, 每层Block的alignment关注的信息都随之进行着调整,通过不止一次的alignment, 可以让模型更好地理解两句话之间的语义关系。

4. 业务结果

在店小蜜中,自定义知识库是由商家维护,我们提供知识定位方案;在店小蜜无法给出准确回复时, 我们会推荐相关知识,这里的文本匹配模型,也主要用在店小蜜的这两个业务模块。我们重点优化了7个大类行业模型(服饰、美妆洗护、鞋、电器、茶酒零食、母婴、数码)、一个大盘基础模型和相关知识推荐模型。在保证覆盖率的情况下, 7类主营行业准确率从不到80%提升到89.5%,大盘基础模型准确率提升到84%,知识推荐有效点击从14%左右提升到19.5%。

店小蜜自定义知识库后台配置:

 

店小蜜旺旺咨询示例:

 

总结展望

我们在工业场景下,实现了一个简洁同时具有很强表达能力的模型框架,并在公开数据集和业务数据集上取得很好的结果。

  • 这种「通用」的语义匹配模型,已经对当前的业务带来很大的提升, 但是,针对店小蜜这样的业务场景, 是否在不同行业不同场景下可以得到更合适更有特色的解决方案,比如融合进商品知识、活动知识等外部知识做文本匹配。
  • 怎么进一步完善FaqBot的技术体系,比如在文本分类、Fewshot分类等方向,也是我们团队的一个重点工作。
  • 随着BERT模型的出现,NLP各项任务都达到了新的SOTA。然而BERT过于庞大,对计算资源的需求很高,因此我们想利用Teacher-Student框架将BERT模型的能力迁移到RE2模型上。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

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

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

相关文章

阿里云与A站在一起后,悄悄干了件大事

八月盛夏,“AcFun弹幕视频网站”(简称“A站”)的视频服务器全面迁移上阿里云(此处应有掌声)! A站去年与阿里云达成此项合作。在迁移过程中,阿里云提供专业技术解决方案团队,为A站建立…

科大讯飞营收破百亿,员工涨薪27%,羡慕这个AI“老大哥”​了!

科大讯飞,中国AI公司“老大哥”,交出2019年成绩单。营收达到100.79亿,首次破百亿;净利润同比增长51.12%,达到8.19亿,日均盈利224万元,创下历史最佳业绩。与此同时,5大厂2020年应届生…

Knative Serving 之路由管理和 Ingress

Knative 默认会为每一个 Service 生成一个域名,并且 Istio Gateway 要根据域名判断当前的请求应该转发给哪个 Knative Service。Knative 默认使用的主域名是 example.com,这个域名是不能作为线上服务的。本文我首先介绍一下如何修改 默认主域名&#xff…

linux-centos7 关机命令、系统目录结构介绍

1、关机命令 关机指令 shutdown; sync # 将数据由内存同步到硬盘中,一般关机前需要同步一下,防止数据丢失shutdown # 关机指令,会在一定时间后关机,我试的是一分钟后关机shutdown -h 10 # 十分钟后关机 shutdown -h 10 # 十分…

SprinBoot2.X 集成 Flowable6.6 工作流引擎

上一篇:SpringBoot2.x Flowable 6.4.2 开源项目 码云开源地址:https://gitee.com/lwj/flow GitHub开源地址:https://github.com/ecnice/flow flowable学习 可以入群:633168411 说明:此项目是我师傅为了帮助更多小伙伴们入门工作流…

OceanBase高可用实践

背景 高可用是构建分布式系统的基石。一方面,出于成本考虑, 分布式系统往往采取比较廉价的硬件,其可靠性相对于小型机、专有硬件有很大的不足, 而分布式系统的规模一般比较大,假如硬件的可靠性只有三个9(99.9%)&#…

咦,拆分个字符串都这么讲究?

来源 | 沉默王二封图 | CSDN 付费下载于视觉中国提到拆分字符串,我猜你十有八九会撂下一句狠话,“这有什么难的,直接上 String 类的 split() 方法不就拉到了!”假如你真的这么觉得,那可要注意了,事情远没这…

linux-centos7 常用的基本命令--目录管理、基本属性

一、目录管理 1、cd (切换目录) cd 路径 :切换路径命令,路径可以是绝对路径,也可以是相对路径 ./ : 当前目录 返回上级目录: cd … 返回用户目录: cd ~ 2、ls(列出目录&#xff…

开源考试系统 - 本地代码调试运行

文章目录一、后端部署1. 图形化克隆项目2. 命令克隆项目3. 创建数据库,初始化数据库脚本4. IntelliJ IDEA打开项目5. 数据库连接和redis配置6. 启动redis和后端程序6. 浏览器访问二、前端部署2.1. 打开源码安装依赖2.2. 依次启动admin端和student端2.3. 浏览器访问补…

KDD 2019论文解读:异构信息网络上的对抗生成学习

前言 网络表示学习是一种在低维空间中表示网络数据的方法,在异构信息网络分析中得到了广泛的应用。现有的异构信息网络表示学习方法虽然在一定程度上实现了性能的提高,但仍然存在一些主要的不足。最重要的是,它们通常采用负抽样的方法从网络…

剖析疫情环境下的国内云市场:大势所趋,正是大展拳脚的好时机!

作者 | 马超责编 | Carol封图 | CSDN 付费下载于视觉中国4月29日,谷歌的母公司Alphabet正式发布了2020年第一季度财报,报告显示,Alphabet比去年同期的363.39亿美元增长13%,不计入汇率变动的影响为同比增长15%;在业绩公…

开源考试系统 -微信小程序开发

文章目录一、小程序前置准备1. 创建小程序2. 下载小程序开发工具二、小程序后端部署2.1. 配置修改2.2. 启动redis2.3. 启动后端项目三、小程序前端部署3.1. 微信小程序打开项目3.2. 学生端登录页面3.3. admin端登录一、小程序前置准备 1. 创建小程序 去腾讯小程序官网注册账号…

linux-centos7 常用的基本命令--文件内容查看、硬链接和软链接

一、文件内容查看 1、cat (由第一行开始显示文件内容) cat [-AbeEnstTuv] [--help] [--version] fileName参数说明: -n 或 --number:由 1 开始对所有输出的行数编号。-b 或 --number-nonblank:和 -n 相似&#xff0…

共享学习:蚂蚁金服数据孤岛解决方案

如果有A、B、C三位同学,他们各自手上有10、15、20块钱,这时需要在相互不知道对方有多少钱的情况下,不借助力第三方来计算三个人一共有多少钱。请问这时候,我们如何实现呢?——这,就是最经典的秘密共享场景。…

学之思开源考试系统 - 使用手册

文章目录一、前期准备1. 启动后端2. 启动前台管理员端3. 启动前台学员端二、用户添加2.1. 学生添加2.2. 管理员添加三、题目管理3.1. 添加学科2.2. 单选题添加2.3. 多选题添加2.4. 判断题添加2.5. 填空题添加2.6. 简答题添加四、试卷管理4.1. 固定试卷添加4.2. 时段试卷添加4.3…

看似简单的搜索引擎,原来背后的数据结构和算法这么复杂?

来源 | 码海封图 | CSDN 付费下载于视觉中国前言我们每天都在用 Google, 百度这些搜索引擎,那大家有没想过搜索引擎是如何实现的呢,看似简单的搜索其实技术细节非常复杂,说搜索引擎是 IT 皇冠上的明珠也不为过,今天我们来就来简单…

阿里巴巴在应用性能测试场景设计和实现上的实践

本文是《Performance Test Together》(简称PTT)系列专题分享的第5期,该专题将从性能压测的设计、实现、执行、监控、问题定位和分析、应用场景等多个纬度对性能压测的全过程进行拆解,以帮助大家构建完整的性能压测的理论体系&…

linux-centos7 常用的基本命令--Vim编辑器

一、Vim编辑器 1、什么是 vim? Vim通过一些插件可以实现和IDE一样的功能! Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 简单的来说, vi 是老式的字处理器…

linux-centos7 常用的基本命令--用户账号管理、查看和修改主机名

简介 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。 用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们…

领导者必备:三元简化模型,助你加速团队成长

关注成员成长 很早之前,现代管理之父德鲁克提出过一个影响深远的观点,“21世纪的组织,最有价值的资产是组织内的知识工作者和他们的生产力。”现代企业的各位管理者,遇到最大的两类问题就是战略和组织,看不到、想不到…