论文原文:https://arxiv.org/pdf/1806.09102.pdfnode
刚看到小夕的这篇总结我的感受讲的很好很容易理解,里面涉及了4篇论文串烧,按照时间讲了算法的发展,文风也蛮有趣(有点嗲,哈哈~)ios
上海交通大学等2018年发表的文章,主要涉及基于检索式的多伦问答模型,提出了一个深度对话整合模型(DUA),是针对多轮对话将过去会话直接拼接做为上下文信息存在噪声和冗余等问题,DUA从对话和回复中采用attention机制挖掘关键信息,凸显关键信息忽略冗余信息,最终得到utterances和response的匹配得分。本文还发布了一个电子商务对话语料库ECD,涉及到商品咨询、物流快递、推荐、谈判、聊天等,本文的数据集及代码。结构以下可分为5个模块:git
DUA的优势:github
最后一轮对话很好的与前面对话结合,其最主要信息能够更好的用语义相关的方法来解决web
每轮会话能够凸显关键信息,从必定程度上忽略冗余信息算法
计算最终匹配得分的时候充分考虑各轮对话之间的关系网络
采用GRU模型将每一个utterance和候选response进行embedding。架构
Utterance Representation是将utterance同等看待没有考虑the last utterance和以前对话之间的关系,该模块主要是将最后一个utterance(the last utterance)与context中的其余utterance以及候选response进行融合,论文中是直接将utterances和response的embedding串联起来,获得表征F。框架
该模块是对上一模块turns-aware的表征信息F信息进行处理,采用一个self-matching attention mechanism将冗余信息进行过滤,挖掘utterances和response中的显著特征,即经过一个attention机制的GRU进一步作表征的交互与融合。ssh
[·,·] 是两个向量串联在一块儿 ,Ct是self-matching attention的输出
第四模块在单词和会话级别上对 response和each utterance进行匹配,通过CNN造成匹配向量。
这里从两个粒度进行匹配:
尔后分别在这两个矩阵上进行CNN卷积操做,获得卷积以后的表征。
最后进行max-pooling和flatten以后concatenation。
将匹配向量按上下文话语的时间顺序传递GRU,获得utterance和response的最终匹配得分,分为三步:
参考:
https://www.paperweekly.site/papers/2352
https://zhuanlan.zhihu.com/p/44539292
上篇对话系统综述的结尾, 文章做者列出3篇检索式问答系统的工做, 经了解发现都是出自MSRA、baidu等大佬团队, 因此笔者也赶紧扶正眼镜, 准备提升姿式水平. 以前咱们提到, 检索式的单轮问答系统可视为语义匹配问题, 从下面分享的几篇文章看, 单轮扩展到多轮, 核心就是如何设计更有效的特征提取结构, 所以单轮问答系统的思路是值得借鉴的.
本文出自百度天然语言处理部, 发表于EMNLP2016, 做者提供了一种直接的单轮转多轮思路——将多轮问答语句合并为一列, 链接处用_SOS_隔开, 将整个对话历史视为"一句话"去匹配下一语. 以下图所示
将整个对话历史合并为一列, 作word embedding后经过GRU模块提取词汇级特征, 与候选的response作匹配. 熟悉语义匹配或单轮问答的观众老爷应该看得出这部分与单轮问答没有任何区别.
不过如此长的多语句序列靠一个GRU显然是不够的, 做者在此基础上提出了获取语句级特征的方法, 其结构也很是简单, 就是TextCNN+pooling+GRU, 其实这也是单轮问答提取多粒度文本表示特征的思路. 下图很清楚的展现了词汇-语句特征的提取模块的结合
此外, 本文在损失函数部分也有技巧, 结合disagreement-loss(LD)和likelihood-loss(LL)的损失最小化过程也必定程度地利用了不一样粒度特征的交互信息.
Multi-view learning:多视角学习:
complementary principle:
If the examples labeled by the classifier h1 on one view are to be useful for the classifier h2 on the other view, h1 should contain some information that h2 does not know. The two classifiers will thus exchange complementary information with each other and learn from each other under the complementary principle. As the co-training process proceeds, the two classifiers will become increasingly similar, until the performance cannot be further improved.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
本文发表于ACL2017, 是MSRA大佬的佳做. 若是说第一篇Multi-view模型是单轮问答表示模型的扩展, 那这一篇就是单轮问答交互模型的扩展. 做者认为构建问答历史语句和候选回复的交互表示是重要的特征信息, 所以借鉴语义匹配中的匹配矩阵, 并结合CNN和GRU构造模型, 具体结构以下图
与Multi-view模型相似, 这里做者也考虑同事提取词汇级和语句级的特征, 分别获得两个匹配矩阵M1和M2, 具体的:
获得的两个匹配矩阵可视为两个通道, 再传给CNN+Pooling得到一组交互特征{vi}. 交互特征传入第二个GRU层, 获得{h'i}
最后的预测层, 做者设计了三种利用隐变量{h'i}的方式:
做者的实验代表采用attention的SMN效果最好, 但训练相对最复杂, last最简单且效果基本优于linearly combined.
值得一提的是本文的实验数据, 英文数据集来自开放的Ubuntu Forum, 里面包含1百万context-response对训练集, 5万测试集和5万验证集; 中文数据集来自Douban Conversation Corpus, 包含1百万训练集, 1万验证集和1万测试集, 做者公开了该数据集, 看官老爷能够去文中的github地址下载. 在此对做者表示感激.
另外以前那篇综述中还有一篇来自baidu的相关工做, 该文发表在SIGIR2016, 做者将问答语句对分为Query-Reply, Query-Posting和Query-Context三类, 尝试用这种多角度response排序模式提高模型. 不过本文的总体架构与上述的RNN、CNN组合思路并没有差异, 就很少介绍了~
本文来自COLING2018, 文章提出, 诸如Multi-view和SMN模型都是将对话历史视为总体, 或者说每一句对于response都是平等的, 这样作会忽略对话历史的内部特征, 例如一段对话过程常常包含多个主题; 此外一段对话中的词和句的重要性也都不一样. 针对这些对话历史中的信息特征, 做者设计了下图所示的DUA模型
模型分为5个部分:
- 第一部分: 通用的词向量+GRU作embedding
- 第二部分: 开始着手处理上面提到的对话历史交互问题, 首先虽然history中的多句话都对response有影响, 但最后一句一般是最关键的, 这一层的每一个utterance(除最后一句)和response都和最后一句utterence作aggregation操做, aggregation操做有三种: 链接(concatenation), 元素加(element-wise summation), 元素乘(element-wise multiplication), 其中链接操做的效果最好
- 第三部分: 以utterance为单元作self-attention, 目的是过滤冗余(好比无心义的空洞词句), 提取关键信息, 因为self-attention会失去序列信息, 做者在attention上又加了一层GRU得到带顺序信息的P
- 第四部分: 彻底采用SMN中构建和处理双通道匹配矩阵的策略, 用第一层的词向量和上一层的GRU输出P分别构建词汇级和语句级的匹配矩阵, 过CNN+Pooling得到交互特征
- 第五部分: 先将交互特征传给一层GUR得到隐状态h, 再对h和第三部分的GRU输出P作attention(h, P)操做, 将输出传给softmax得到预测匹配结果
能够看出DUA模型侧重于对词汇和语句都作多层特征提取, 实验结果也代表利用多层级多粒度特征的模型比前做SMN等模型都有不小的提高. 而且除了Ubuntu Froum和Douban Conversation Corpus两个数据集外, 本文做者还公开了一批中文数据 E-commerce Dialogue Corpus. 该数据取自淘宝, 包含1百万训练集, 1万验证集和1万测试集. 做者在文中给出了github项目地址, 数据共享在Google driver上. 特别感谢做者开放数据集.
下面再次出自百度天然语言处理部, 发表于ACL2018. 做者的attention组合技让人眼花缭乱, 尤为最后那个21维单元组成的3维立方体.... 不过下图展现的总体结构是很是清晰的
DAM模型以self-attention为基础, 稍做修改加入了cross-attention. 两种attention计算再结合匹配矩阵的思惟构造了那个立方体, 最后用3D-CNN处理. 下面为你们详细介绍几个关键部分
第一层Input就是单纯作词向量, embedding后传给了五光十色的Attentive Module, 这里的每一个Module其实就是略有修改的Transformer.
对话历史以句子为单位, 与response一块儿经过L个Attentive Module, 每一个utterance和response都得到了L个矩阵U和R, 就是结构图第三列, 蓝色是每一个句子ui的L个矩阵合并的Ui, 绿色是response对应的L矩阵组成的R.
这里DAM模型一样有两种匹配矩阵, 不过构建思路就相对复杂了, 其中第一列Mself称为自注意力匹配(self-attention-match), 第二列Mcross称为交叉注意力匹配(cross-attention-match) Mself的构建相对简单, 上一层不是每一个句子获得了ui和response都获得了L个矩阵构成的组Ui和R么, Mself就按下图的公式获得
上式给出了构建ui和response的Mselfi的过程. 因为ui和response的矩阵组Usub>i和R都包含L个矩阵, 这个Mselfi也是由L个矩阵构成的组, 每一个矩阵l的第个元素就是U和R中第l个矩阵的元素uk和rt点乘计算获得. 对每一个句子-回复组成的ui和response都作一遍上述计算, 就获得了n个Mself (注意n是对话历史中的utterance个数, 所以就有n个utterance-response对, 因此就有n个Mself, 每一个Mself都由L个矩阵组成, 下面Mcross相同)
Mcross的构造过程和Mself同样, 区别在于这里的U和R是用cross-attention构造, 而Mself的U和R是self-attention构造, 下面给出对于句子ui和response的两种attention的计算方法(公式5,6为self-attention; 8,9为cross-attention, 10是计算cross-attention-match):
最后的立方体Q就是经过两种匹配矩阵Mself和Mcross计算获得的. 最后用两层3D的CNN处理这个立方体, 获得的特征传给单层网络估计匹配程度.
Q有n个切片, 对应n个utterance-response对的匹配矩阵, 每一片的尺寸都是(nui, nr)对应匹配矩阵中每一个矩阵的尺寸, 特别的, Q的每一个元素都是由对应的Mselfi和Mcrossi链接获得的, 公式以下 (注: 文中Representation层的Module是从0算起到L, 故为L+1)
实验部分做者分别对比了5种不一样的的DAM, 能够看到去掉DAMcross会形成很大的损失, Attentive Module的最后一层产生的效果优于第一层.
题目:《Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network》 Introduction该论文彻底使用基于注意力的依赖性信息,来研究回复与其多轮上下文的匹配。做者的解决方案受到在机器翻译领域提出的Transformer[1]的启发,以两种方式扩展了注意机制。首先,仅仅使用堆叠的self-attention构建了不一样粒度的文本片断的表示。 其次,尝试在上下文和回复中提取真正匹配的段对。 做者在一个统一的神经网络中共同引入这两种注意力机制,并在Ubuntu和Douban两个多轮回复选择任务中代表,其提出的模型明显优于最早进的模型。 做者在两个方面拓展了Transform的关键attention机制:(1)self-attention。经过使一个句子关联其自己,来捕获句子自己内部词级的依赖性。经过多层的堆叠,能够在不一样粒度上创建句子的语义表示。(2)cross-attention。经过使上下文和回复彼此关联,能够捕获那些潜在匹配的segment(段对)之间的依赖性,其可以为具备多轮上下文的文本相关性提供补充信息来匹配回复。 Symbols
Q: each dimension of Q represents each utterance in context, each word in utterance and each word in response. Attentive Model![]() ![]() 和Transformer结构相似,这里Attentive Module有三个输入:Q、K、V,结构公式定义为AttentiveModule(Q, K, V),其中部分公式以下: ![]() ![]() Model![]() 模型由representation-matching-aggregation三个主框架构成: 1. Representation 使用分层堆叠的Attentive Module来获取 ![]()
Self-attention-match和cross-attention-match分别定义以下: ![]() ![]() 其中, ![]() 3. Aggregation DAM最终将每一个utterance和response中的全部分段匹配度聚合成一个3D的匹配图像Q。 ![]() ![]() 这里每个像素有2(L+1)个channels,存储着某一个segment(段对)在不一样粒度(|L|+1个)下的匹配度。而后DAM利用3D卷积和最大池化操做从整个Q中提取重要的匹配特征(操做定义为 ![]() Experiment1. ![]() 做者作了消融实验,去掉 为啥速度快??——3D?? 2. ![]() DAM模型除了在超过4轮的对话内容上表现优异,还在2轮的对话上表示稳定。同时针对不一样的utterance文本长度,堆叠self-attention能够一向地提升匹配性能。 3. 最后做者经过attention可视化,代表self-attention-match和cross-attention-match在utterance和response匹配中能够捕捉到相互补充的信息。 Conclusion做者彻底使用attention机制研究了多轮对话中的回复选择问题,在以下两个方面拓展了Transformer attention机制:(1)使用堆叠的self-attention来得到多粒度的语义表示;(2)利用cross-attention来匹配依赖信息。做者相信这两种attention机制能够在口语理解、对话状态追踪或seq2seq对话生成领域上有做用。同时做者也指出了DAM模型在fuzzy-candidate和logical-error上的不足,并指出使用对抗而不是随机选择候选response可以处理这两个问题。 参考文献[1] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Lukasz Kaiser, and Illia Polosukhin. 2017. Attention is all you need. In Advances in Neural Information Processing Systems, pages 6000?010. |
|
这一篇一样出自ACL2018的文章就相对轻松了, BTW本文做者也是SMN模型的做者, 这里没有展现复杂的模型, 而是讨论了如何下降手工标注工做量, 充分利用少许标注数据和大量未标注数据, 以及改进学习方法减小噪声, 优化决策面的思路. 具体的做者提出了一种借助seq2seq模型给未标注数据提供评判标记(matching signals)的方法, 能够结合上述模型共同使用, 实验结果显示用于SMN和multi-view上均有必定程度的提高. 另外做者设计了一种采样副样本的方法, 并配合给出了一种学习函数, 采样思路其实就是选择一些与正样本效果接近的(难以区分的)负样本, 缘由不难想象, 简单的负样本会拖拽决策面, 使得与正样本接近的负样本没法被正确区分. 做者还用4组对比实验证实了较多的采样个数能够提高模型效果.
最后要私自蹭波知乎仙女大神 的腿. 做者对上述模型的介绍比笔者不知高到哪里去, 忍受笔者私货荼毒的看官老爷们能够移步知乎大佬区自行解毒.