来谈谈那些很棒的检索式Chatbots论文(二)

2019 年 7 月 13 日 AINLP

作者:LeonMao

本文为授权转载,转载请联系作者,原文链接,可点击阅读原文直达:

https://zhuanlan.zhihu.com/p/65143297



上一篇文章写到了SMN模型,如果有兴趣的话大家可以看看,先放上链接~

来谈谈那些很棒的检索式Chatbots论文(一)

LeonMao:来谈谈那些很棒的检索式Chatbots论文(一) zhuanlan.zhihu.com

今天和大家分享的是百度在2018年ACL上的一篇论文,同样是检索式对话系统领域上一篇很棒论文,下面就开始进入主题吧~

DAM(Deep Attention Matching Network)

18年一件很火的事件就是bert的出现,其中bert的结构用的是Transformer的Encoder层,而Transformer同样出自于一篇很出名的论文:Attention is all you need,为什么要提到这个,因为DAM就是用到Transformer的部件去实现的,如果大家对Transformer不太熟悉,强烈建议看看这个博客(这个博客写得真的好,可视化的教学,真心安利一波),熟悉了Transformer之后再看DAM会快许多~

DAM的论文全称为:Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network ,首先放出该论文及其源码:

https://aclweb.org/anthology/P18-1103 aclweb.org

baidu/Dialogue github.com


除此之外,大家可以去2018ACL的官网找下,里面有作者分享这篇论文的视频~看完论文后有一种很纯粹的感觉,因为论文用了纯注意力机制去做检索式的Chatbots

Introduction

文章的灵感来自于Transformer,它把Transformer里面的注意力机制运用到模型之中。文章中谈到,捕获response和utterances之间不同粒度的匹配信息是检索式多轮对话的关键,但是在这之前的模型,只考虑了表面的文本关联性(surface text relevance),而且之前的模型用RNN去抽取特征。

而文章中用Transformer的部件替代RNN,去抽取文本的更多层次,更多粒度的信息,从而得到response和utterances之间潜在的语义上的关联。那具体怎么做呢?文章将Transformer里的注意力机制拓展成两种方式:

  • self-attention

  • cross-attention

在这里默认大家熟悉Transformer结构,self-attention其实就是Transformer的Encoder层(没有用Multi-Head),其中  、  、  都是一样的,要么都是response、要么都是utterance。从word embedding开始堆叠self-attention层,每一层self-attention层抽取一种粒度的表示,不同层就抽取了不一样的表示,从而获得句子多粒度的表示。

cross-attention结构上还是Transformer的Encoder层,只不过输入不一样了。其中  是response(utterance),而 、 是utterance(response)。这样做的话,其实就像用response去表示utterance,用utterance去表示response,从而为response和utterance做匹配提供更多的信息。

Model Overview

DAM的结构

上图就是DAM的模型结构,第一次看这个图感觉好好看,我记得在dstc7的Workshop里,有篇论文的图也好好看,emmm,貌似偏题了。说回正题,模型结构如图所示。

首先response和context中每个utterance通过self-attention层获得不同的表示,拿结构图来说,堆叠了两层self-attention层,即每句话都有两种不同粒度的表示,加上一开始的word embedding表示,每句话一共有三种表示。接着和SMN模型的框架相似,response和每个utterance做匹配,形成2D的匹配矩阵。

而匹配矩阵有两种,分别是  和  ,其中就是用刚刚得到的三种表示分别匹配形成的;而就相对复杂点,先将三种表示分别输入cross-attention层,从而得到另外三种不同的表示,再用这新的表示分别做匹配。所以在结构图中可以看到,每个utterance和response匹配后,总共得到六种匹配矩阵~

紧接着就是将得到的所有矩阵进行组合,然后进行3d卷积和池化操作,在连接线性层得到一个最终的匹配分数,以上就是整个DAM模型的大致流程。

模型可以划分为RepresentationMatchingAggregation这三个部分,接下来将按该顺序详细讲述模型的公式,因为attention层在模型中有着举足轻重的地位,也为了在讲述RepresentationMatching的时候更清晰,首先具体介绍下attention层。

Attentive Module

这就是self-attention层和cross-attention层的真面目了~是的,在前面我也说过,self-attention层和cross-attention层的结构都是相同的,只是输入不一样。将图中的query、key、value用  、表示:

、  、  ,其中  表示句子里面词的维度表示,在具体实验当中,词的维度为200。不同于Transformer的Encoder层,这个attentive module没有用到Multi-Head结构(可以看成用了One-Head),所以一开始不用做维度的变化。

接下来的话就和Transformer的Encoder很像了,首先就是做Scaled Dot-Product Attention(图中蓝色的Attention),然后做Weighted Sum操作,具体公式如下:

 (Attention操作)

 (Weighted Sum操作)

接着就是图中的Sum&Norm操作,Sum就是将  和  做加和(类似于残差连接),然后通过一层layer normalization层,以防止梯度消失或梯度爆炸,因为论文中没有具体公式,我就用类似的表达,相关公式如下:

 (Sum&Norm操作)

然后将  输入到feed-forward层里,feed-forward层(FFN)的具体公式如下:

 (Feed-Forward操作)

在这里,我将feed-forward层的输出表示为  ,最后,继续做Sum&Norm操作(残差连接加layer normalization),因为论文中也没有具体公式,我同样用类似的表达,相关公式如下:

 (第二个Sum&Norm操作)

至此,就能得到最后的输出,有了以上Attentive Module的介绍,以后将会用: 表示整个attention层。

Representation

首先,将response和utterances分别用  和  表示,经过word embedding后,则分别表示为:

其中  代表句子中每个词的维度表示,在实际试验中,作者用了word2vec去生成词向量,词向量的维度为200。接着就用上了刚刚介绍的Attentive Module,这里又可以称为self-attention层,因为  、  、  都是相同的。通过堆叠self-attention层,从而获得不同粒度的表示。具体的公式如下:

最后每个句子(response和utterances)都会获得L+1种表示,即。其中L是self-attention的层数,+1是算上一开始word embedding的表示。

Utterance-Response Matching

得到后,就可以做response和utterance之间的匹配了。response和utterance之间的匹配矩阵有两种,分别是  和  。 是直接用分别做匹配形成的,具体公式如下:

而  则需要将输入cross-attention层,得到和  ,再分别做匹配形成,具体公式如下:

Aggregation

在得到 和 后,就需要将它们聚合起来,文章的做法是将所有的2D匹配矩阵聚合成一个大的3D匹配图像  ,具体的聚合方法就是将 和 所有的矩阵排列起来,所以就增加了一个维度,新的维度(可以称之为深度)大小是  ,具体公式如下:

 ,其中  可以表示为:

聚合成3D匹配图像后,文章中采用了两次的3D卷积和最大池化去提取特征,在实际试验中,第一次3D卷积的输入通道数为,输出通道数为32,卷积核的大小是[3,3,3],步幅为[1,1,1],最大池化层的核大小是[3,3,3],步幅为[3,3,3];第二次3D卷积的输入通道数为32,输出通道数为16,卷积核的大小是[3,3,3],步幅为[1,1,1],最大池化层的核大小是[3,3,3],步幅为[3,3,3]。

通过卷积和池化提取到特征后(用  表示提取后的特征),后面接一层线性层将维度转化成1,用来表示匹配的分数,具体公式如下:

到此为止,已经将整个模型的具体公式介绍完毕了,整个模型的结构和流程也可以通过公式去慢慢了解。


后续会补充下论文的实验和对模型的相关分析~


登录查看更多
5

相关内容

Attention机制最早是在视觉图像领域提出来的,但是真正火起来应该算是google mind团队的这篇论文《Recurrent Models of Visual Attention》[14],他们在RNN模型上使用了attention机制来进行图像分类。随后,Bahdanau等人在论文《Neural Machine Translation by Jointly Learning to Align and Translate》 [1]中,使用类似attention的机制在机器翻译任务上将翻译和对齐同时进行,他们的工作算是是第一个提出attention机制应用到NLP领域中。接着类似的基于attention机制的RNN模型扩展开始应用到各种NLP任务中。最近,如何在CNN中使用attention机制也成为了大家的研究热点。下图表示了attention研究进展的大概趋势。
【AAAI2020知识图谱论文概述】Knowledge Graphs @ AAAI 2020
专知会员服务
132+阅读 · 2020年2月13日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
BERT进展2019四篇必读论文
专知会员服务
65+阅读 · 2020年1月2日
知识图谱本体结构构建论文合集
专知会员服务
102+阅读 · 2019年10月9日
最新BERT相关论文清单,BERT-related Papers
专知会员服务
52+阅读 · 2019年9月29日
【小夕精选】多轮对话之对话管理(Dialog Management)
夕小瑶的卖萌屋
27+阅读 · 2018年10月14日
检索式chatbot了解一下?
黑龙江大学自然语言处理实验室
6+阅读 · 2018年9月28日
论文解读 | 基于递归联合注意力的句子匹配模型
推荐|深度强化学习聊天机器人(附论文)!
全球人工智能
4+阅读 · 2018年1月30日
【ChatBot】NLP专题论文解读:从Chatbot到NER
产业智能官
8+阅读 · 2017年11月10日
专栏 | NLP专题论文解读:从Chatbot到NER
机器之心
17+阅读 · 2017年11月9日
NLP 专题论文解读:从 Chatbot 到 NER | PaperDaily #11
PaperWeekly
5+阅读 · 2017年11月8日
赛尔原创 | 教聊天机器人进行多轮对话
哈工大SCIR
18+阅读 · 2017年9月18日
Arxiv
14+阅读 · 2020年1月27日
Arxiv
5+阅读 · 2019年4月21日
Neural Approaches to Conversational AI
Arxiv
8+阅读 · 2018年12月13日
Arxiv
9+阅读 · 2018年10月24日
Arxiv
4+阅读 · 2018年9月6日
Arxiv
12+阅读 · 2018年1月20日
Arxiv
23+阅读 · 2017年3月9日
VIP会员
相关VIP内容
【AAAI2020知识图谱论文概述】Knowledge Graphs @ AAAI 2020
专知会员服务
132+阅读 · 2020年2月13日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
BERT进展2019四篇必读论文
专知会员服务
65+阅读 · 2020年1月2日
知识图谱本体结构构建论文合集
专知会员服务
102+阅读 · 2019年10月9日
最新BERT相关论文清单,BERT-related Papers
专知会员服务
52+阅读 · 2019年9月29日
相关资讯
【小夕精选】多轮对话之对话管理(Dialog Management)
夕小瑶的卖萌屋
27+阅读 · 2018年10月14日
检索式chatbot了解一下?
黑龙江大学自然语言处理实验室
6+阅读 · 2018年9月28日
论文解读 | 基于递归联合注意力的句子匹配模型
推荐|深度强化学习聊天机器人(附论文)!
全球人工智能
4+阅读 · 2018年1月30日
【ChatBot】NLP专题论文解读:从Chatbot到NER
产业智能官
8+阅读 · 2017年11月10日
专栏 | NLP专题论文解读:从Chatbot到NER
机器之心
17+阅读 · 2017年11月9日
NLP 专题论文解读:从 Chatbot 到 NER | PaperDaily #11
PaperWeekly
5+阅读 · 2017年11月8日
赛尔原创 | 教聊天机器人进行多轮对话
哈工大SCIR
18+阅读 · 2017年9月18日
相关论文
Top
微信扫码咨询专知VIP会员