论文阅读笔记:Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network
提示:阅读论文时进行相关思想、结构、优缺点,内容进行提炼和记录,论文和相关引用会标明出处。
文章目录
- 前言
- 介绍
- 模型细节
- 问题符号化
- 模型结构
- 注意力模块-Attentive Module
- 整理表示
- Utterance-Response 匹配
- Aggregation
- 实验结果
- 参数配置
- 总结
前言
标题:Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network
原文链接:Link
Github:NLP相关Paper笔记和代码复现
说明:阅读论文时进行相关思想、结构、优缺点,内容进行提炼和记录,论文和相关引用会标明出处,引用之处如有侵权,烦请告知删除。
转载请注明:DengBoCong
介绍
聊天机器人中的一项重要任务是响应选择,其目的是在给定对话上下文的情况下,从一组候选响应中选择最匹配的响应。除了在基于检索的聊天机器人中发挥关键作用外,响应选择模型还可以用于对话生成的自动评估以及基于GAN(生成对抗网络)神经对话生成的判别器。之所以使用更丰富的上下文信息,是因为人为产生的响应在很大程度上取决于语义和场景上的不同粒度(单词,词组,句子等)的先前对话段。下图展示跨上下文和响应的段对之间的语义连接。
如图所示,在上下文和响应中,通常存在两种匹配的段对,它们的粒度不同:
- 表面文本的相关性,例如单词“packages”-“package”和短语“debian package manager”-“debian package manager”的词法重叠。
- 这些片段在语义/功能上有着彼此相关的潜在依赖关系。例如,响应中的“it”一词在上下文中指“dpkg”,以及响应中的短语“its just reassurance”,它潜在地指向“what packages are installed on my system”。
先前的研究表明,在上下文和响应中以不同的粒度捕获那些匹配的片段对是多回合响应选择的关键,如Multi-view和SMN。然而这些对话系统只考虑了表面的文本关联性(surface text relevance),且多采用RNN结构,这会极大的增加模型的推理代价,因此本文提出了基于注意力机制的结构。本文使用完全基于注意力的依赖项信息来研究将响应与多回合上下文匹配的过程,受到Transformer的影响,本文通过两种方式扩展注意力机制来获取表示和匹配信息:
- self-attention:只使用堆叠的自注意力构造不同粒度的文本段表示,这样我们可以捕获其词级内的依存关系。self-attention其实就是Transformer的Encoder层(没有用Multi-Head),其中 QQQ 、 KKK 、VVV 都是一样的,要么都是response、要么都是utterance。从word embedding开始堆叠self-attention层,每一层self-attention层抽取一种粒度的表示,不同层就抽取了不一样的表示,从而获得句子多粒度的表示。
- cross-attention:尝试整个上下文和响应的注意力提取真正匹配的句段对。结构上还是Transformer的Encoder层,只不过输入不一样了。其中 QQQ 是response(utterance),而 KKK 、 VVV 是utterance(response)。这样做的话,其实就像用response去表示utterance,用utterance去表示response,从而为response和utterance做匹配提供更多的信息。
本文在一个统一的神经网络中介绍了这两种注意力,网络命名为Deep Attention Matching Network(DAM),用于多回合响应选择。在实践中,DAM将上下文或响应中的语句的每个词作为抽象语义段的中心含义,并通过堆叠式的自注意力丰富其表示,从而逐渐围绕中心词生成越来越复杂的段表示 。考虑到文本相关性和依存性信息,上下文和响应中的每个语句都基于不同粒度的句段对进行匹配。这样,DAM通常会捕获上下文之间的匹配信息以及从单词级到句子级的响应,然后使用卷积和最大池化操作提取重要的匹配特征,最后通过单层感知器将其融合为一个匹配分数。更重要的是,由于大多数注意力计算可以完全并行化,因此DAM有望在实践中方便部署。
模型细节
问题符号化
给定一个对话数据集 D={(c,r,y)z}Z=1ND=\{(c,r,y)z\}_{Z=1}^ND={(c,r,y)z}Z=1N,其中 c={u0,...un−1}c=\{u_0,...u_{n-1}\}c={u0,...un−1} 表示一个对话上下文,其中 {ui}i=0n−1\{u_i\}_{i=0}^{n-1}{ui}i=0n−1 作为语句和 rrr 作为候选响应。y∈{0,1}y\in\{0,1\}y∈{0,1} 是一个二进制标签,指示 rrr 是否是对 ccc 的合适响应。我们的目标是学习与 DDD 匹配的模型g(c,r)g(c,r)g(c,r),该模型可以测量上下文 ccc 和候选响应 rrr 之间的相关性。
模型结构
下图展示了DAM的模型结构,该模型通过representation-matching-aggregation框架来将响应与多回合上下文进行匹配。对于上下文中的每个语句 ui=[wui,k]k=0nui−1u_i=[w_{u_i,k}]_{k=0}^{n_{u_i}-1}ui=[wui,k]k=0nui−1 和它的候选响应 r=[wr,t]t=0nr−1r=[w_{r,t}]_{t=0}^{n_r-1}r=[wr,t]t=0nr−1(其中,nuin_{u_i}nui 和 nrn_rnr 代表单词数),DAM首先查找共享的单词嵌入表,并将 uiu_iui 和 rrr 表示为单词嵌入序列,即 Ui0=[eui,00,...,eui,nui−10]U_i^0=[e_{u_i,0}^0,...,e_{u_i,n_{u_i}-1}^0]Ui0=[eui,00,...,eui,nui−10] 和 R0=[er,00,...,er,nr−10]R^0=[e_{r,0}^0,...,e_{r,n_r-1}^0]R0=[er,00,...,er,nr−10],其中 e∈Rde\in\mathbb{R}^de∈Rd 表示 ddd 维词嵌入。
接下来,通过表示模块为 uiu_iui 和 rrr 在不同的粒度上构造语义表示。实现方式是通过 LLL 个相同的自注意层堆叠,每个第 lll 个自注意层都将第 l−1l-1l−1 层的输出作为其输入,从而将输入语义向量合成为更复杂的表示形式。通过这种方式,逐渐构建了 uiu_iui 和 rrr 的多粒度表示,分别表示为 [Uil]l=0L[U_i^l]_{l=0}^L[Uil]l=0L 和 [Rl]l=0L[R^l]_{l=0}^L[Rl]l=0L。
给定 [Ui0,...,UiL][U_i^0,...,U_i^L][Ui0,...,UiL] 和 [R0,...,RL][R^0,...,R^L][R0,...,RL],语句 uiu_iui 和响应 rrr 随后以segment-segment相似矩阵的方式相互匹配。实际上,对于每个粒度 l∈[0...L]l\in[0...L]l∈[0...L],构造两种匹配矩阵,即self-attention匹配 Mselfui,r,lM_{self}^{u_i,r,l}Mselfui,r,l 和cross-attention匹配 Mcorssui,r,lM_{corss}^{u_i,r,l}Mcorssui,r,l,这样便分别使用文字信息和依存关系信息测量话语和回应之间的相关性。这些匹配分数最终被合并为 3D3D3D 的匹配 Q1Q^1Q1。QQQ 的每个维度表示each utterance in context, each word in utterance and each word in response。然后,通过使用最大池操作进行卷积,提取跨多回合上下文的段对之间的重要匹配信息和候选响应,然后通过单层感知器将其进一步融合为一个匹配分数,代表候选响应与整体上下文之间的匹配程度。
注意力,我们使用一个共享组件,即“注意力模块”来实现表示中的self-attention和匹配中的cross-attention。在以下各节中,我们将详细讨论注意力模块的实现以及如何使用它来实现self-attention和cross-attention
注意力模块-Attentive Module
下图显示了Attentive模块的结构,与Transformer中使用的模块相似。
注意力模块具有三个输入语句:QQQ,KKK,VVV,即Q=[ei=0nQ−1]Q=[e_{i=0}^{n_Q-1}]Q=[ei=0nQ−1],K=[ei]i=0nK−1K=[e_i]_{i=0}^{n_K-1}K=[ei]i=0nK−1,V=[ei]i=0nV−1V=[e_i]_{i=0}^{n_V-1}V=[ei]i=0nV−1,其中,其中 nQn_QnQ,nKn_KnK 和 nVn_VnV 表示每个句子中的单词数,而 eie_iei 表示维数嵌入,nKn_KnK 等于 nVn_VnV。注意力模块首先通过Scaled Dot-Product Attention将查询语句中的每个单词与关键语句中的单词关联,然后将结果应用于值语句,定义为:
Att(Q,K)=[softmax(Q[i]⋅KTd)]i=0nQ−1Att(Q,K)=[softmax(\frac{Q[i]\cdot K^T}{\sqrt{d}})]_{i=0}^{n_Q-1}Att(Q,K)=[softmax(d
其中 Q[i]Q[i]Q[i]是查询语句 QQQ 中的第 iii 个嵌入,VattV_{att}Vatt 的每一行(表示为 Vatt[i]V_{att}[i]Vatt[i])存储值语句中可能与查询语句中的第 iii 个单词相关的单词的语义信息。对于每个 iii,将 Vatt[i]V_{att}[i]Vatt[i] 和 Q[i]Q[i]Q[i] 加在一起,将它们组合成一个包含其联合含义的新表示形式。然后应用层归一化操作,可防止梯度消失或爆炸。接着将具有RELU的前馈网络FFN应用于标准化结果,以便进一步处理融合嵌入,定义为:
FFN(x)=max(0,xW1+b1)W2+b2FFN(x)=max(0,xW_1+b_1)W_2+b_2FFN(x)=max(0,xW1+b1)W2+b2
其中,xxx 是与查询语句 QQQ 形状相同的 2D2D2D 张量,W1W_1W1,b1b_1b1,W2W_2W2,b2b_2b2 是学习参数。FFN(x)FFN(x)FFN(x) 的结果是一个具有与 xxx 相同形状的 2D2D2D 张量,然后将 FFN(x)FFN(x)FFN(x) 残留连接添加到 xxx,最后将融合结果标准化为最终输出。将整个注意力模块表示为:
AttentiveModule(Q,K,V)AttentiveModule(Q,K,V)AttentiveModule(Q,K,V)
如上所述,注意力模块可以捕获查询语句和关键语句之间的依存关系,并进一步使用依存关系信息将查询语句和值语句中的元素合成为组成表示形式。我们利用Attentive Module的此属性来构造多粒度语义表示以及与依赖项信息的匹配。
整理表示
给定 Ui0U_i^0Ui0 或 R0R^0R0 (语句 uiu_iui 或响应 rrr 的单词级嵌入表示),DAM将 Ui0U_i^0Ui0 或 R0R^0R0 用作输入,并分层堆叠Attentive模块以构造 uiu_iui 和 rrr 的多粒度表示,即表示为:
Uil+1=AttentiveModule(Uil,Uil,Uil)U_i^{l+1}=AttentiveModule(U_i^l,U_i^l,U_i^l)Uil+1=AttentiveModule(Uil,Uil,Uil) Rl+1=AttentiveModule(Rl,Rl,Rl)R^{l+1}=AttentiveModule(R^l,R^l,R^l)Rl+1=AttentiveModule(Rl,Rl,Rl)
其中 lll 的范围是 000 到 L−1L − 1L−1,表示不同的粒度级别。通过这种方式,每个话语或响应中的单词会反复发挥作用,以合成越来越多的整体表示形式,我们将这些多粒度表示形式表示为 Ui0,...,UiLU_i^0,...,U_i^LUi0,...,UiL 和 R0,...,RLR^0,...,R^LR0,...,RL 之后。
Utterance-Response 匹配
给定 [Uil]l=0L[U_i^l]_{l=0}^L[Uil]l=0L 和 [Rl]l=0L[R^l]_{l=0}^L[Rl]l=0L ,在每个粒度级别 lll 上构造了两种segment-segment匹配矩阵,即self-attention匹配 Mselfui,r,lM_{self}^{u_i,r,l}Mselfui,r,l 和cross-attention匹配 Mcorssui,r,lM_{corss}^{u_i,r,l}Mcorssui,r,l。其中, Mselfui,r,lM_{self}^{u_i,r,l}Mselfui,r,l 被定义为:
Mselfui,r,l={Uil[k]T⋅Rl[t]}nui×nrM_{self}^{u_i,r,l}=\{U_i^l[k]^T\cdot R^l[t]\}_{n_{u_i}\times n_r}Mselfui,r,l={Uil[k]T⋅Rl[t]}nui×nr
其中,矩阵中的每个元素都是 Uil[k]U_i^l[k]Uil[k] 和 Rl[t]R^l[t]Rl[t] 的点积,第 kkk 个嵌入在 UilU_i^lUil 中,第 ttt 个嵌入在 RlR^lRl 中,反映了 uiu_iui中 第 kkk 个分段和 rrr 中第 ttt 个分段之间,在 第lll 层粒度的相关性。 cross-attention匹配矩阵基于cross-attention,其定义为:
U~il=AttentiveModule(Uil,Rl,Rl)\tilde{U}_i^l=AttentiveModule(U_i^l,R^l,R^l)U~il=AttentiveModule(Uil,Rl,Rl) R~l=AttentiveModule(Rl,Uil,Uil)\tilde{R}^l=AttentiveModule(R^l,U_i^l,U_i^l)R~l=AttentiveModule(Rl,Uil,Uil) Mcorssui,r,l={U~il[k]T⋅R~l[t]}nui×nrM_{corss}^{u_i,r,l}=\{\tilde{U}_i^l[k]^T\cdot \tilde{R}^l[t]\}_{n_{u_i}\times n_r}Mcorssui,r,l={U~il[k]T⋅R~l[t]}nui×nr
其中,我们使用注意力模块将 UilU_i^lUil 和 RlR^lRl 相互交叉,分别为它们构造两个新的表示形式,分别写为 U~il\tilde{U}_i^lU~il 和 R~l\tilde{R}^lR~l。 U~il\tilde{U}_i^lU~il 和 R~l\tilde{R}^lR~l 都隐式捕获了跨语句和响应的语义结构信息。这样,那些相互依存的片段对在表示上彼此接近,并且那些潜在相互依存的对之间的点积可以增加,从而提供了依赖于感知的匹配信息。
Aggregation
在得到 MselfM_{self}Mself 和 McrossM_{cross}Mcross 后,就需要将它们聚合起来,做法是将所有的 2D2D2D 匹配矩阵聚合成一个大的 3D3D3D 匹配图像 QQQ,具体的聚合方法就是将 MselfM_{self}Mself 和 McrossM_{cross}Mcross 所有的矩阵排列起来,所以就增加了一个维度,新的维度(可以称之为深度)大小是 2(L+1)2(L+1)2(L+1) ,具体公式如下:
Q={Qi,k,t}n×nui×nrQ=\{Q_{i,k,t}\}_{n\times n_{u_i}\times n_r}Q={Qi,k,t}n×nui×nr
其中 Qi,k,tQ_{i,k,t}Qi,k,t 可以表示为:
Qi,k,t=[Mselfui,r,l[k,t]]l=0L⊕[Mcorssui,r,l[k,t]]l=0LQ_{i,k,t}=[M_{self}^{u_i,r,l}[k,t]]_{l=0}^L\oplus [M_{corss}^{u_i,r,l}[k,t]]_{l=0}^LQi,k,t=[Mselfui,r,l[k,t]]l=0L⊕[Mcorssui,r,l[k,t]]l=0L
聚合成 3D3D3D 匹配图像后,采用了两次的 3D3D3D 卷积和最大池化去提取特征,在实际试验中,第一次 3D3D3D 卷积的输入通道数为 2(L+1)2(L+1)2(L+1) ,输出通道数为 323232,卷积核的大小是 [3,3,3][3,3,3][3,3,3],步幅为 [1,1,1][1,1,1][1,1,1],最大池化层的核大小是 [3,3,3][3,3,3][3,3,3],步幅为 [3,3,3][3,3,3][3,3,3]。第二次 3D3D3D 卷积的输入通道数为 323232,输出通道数为 161616,卷积核的大小是 [3,3,3][3,3,3][3,3,3],步幅为 [1,1,1][1,1,1][1,1,1],最大池化层的核大小是 [3,3,3][3,3,3][3,3,3],步幅为 [3,3,3][3,3,3][3,3,3]。通过卷积和池化提取到特征后(用 fmatch(c,r)f_{match}(c,r)fmatch(c,r) 表示提取后的特征),后面接一层线性层将维度转化成 111,用来表示匹配的分数,具体公式如下:
g(c,r)=σ(W3fmatch(c,r)+b3)g(c,r)=\sigma(W_3f_{match}(c,r)+b_3)g(c,r)=σ(W3fmatch(c,r)+b3)
其中 W3W_3W3 和 b3b_3b3 是学习参数,σ\sigmaσ 是sigmoid函数,如果 rrr 是 ccc 的合适候选相应,则给出概率。DAM的损失函数为负对数似然,定义为:
p(y∣c,r)=g(c,r)y+(1−g(c,r))(1−y)p(y|c,r)=g(c,r)y+(1-g(c,r))(1-y)p(y∣c,r)=g(c,r)y+(1−g(c,r))(1−y) L(⋅)=−∑(c,r,y)∈Dlog(p(y∣c,r))L(\cdot)=-\sum_{(c,r,y)\in D}log(p(y|c,r))L(⋅)=−(c,r,y)∈D∑log(p(y∣c,r))
实验结果
实验要求每个比较模型从给定对话上下文 ccc 的 nnn 个可用候选中选择 kkk 个最匹配的响应,然后我们将在 kkk 个选定的真实响应中的正确回复的召回率作为主要评估指标来计算,记为 Rn@k=∑i=1kyi∑i=1nyiR_n@k=\frac{\sum_{i=1}^ky_i}{\sum_{i=1}^ny_i}Rn@k=∑i=1nyi∑i=1kyi,其中 yiy_iyi 是每个候选项的二进制标签。除此之外,我们还使用MAP(Mean Average Precision),MRR (Mean Reciprocal Rank),Precision-at-one P@1。
参数配置
使用的词汇表和词嵌入大小和SMN模型一致。上下文中语句最大设置为 999,每个语句最多 505050 个单词,并使用word2vec进行词嵌入。我们使用零填充来处理可变大小的输入,并且将FFN中的参数设置为200,与词嵌入大小相同。 我们测试了1−71-71−7层自注意力层,其中 555 层自注意力层在验证集上获得了最佳分数。试验中两次的 3D3D3D 卷积和最大池化,第一次 3D3D3D 卷积的卷积核的大小是 [3,3,3][3,3,3][3,3,3],步幅为 [1,1,1][1,1,1][1,1,1],最大池化层的核大小是 [3,3,3][3,3,3][3,3,3],步幅为 [3,3,3][3,3,3][3,3,3]。第二次 3D3D3D 卷积的卷积核的大小是 [3,3,3][3,3,3][3,3,3],步幅为 [1,1,1][1,1,1][1,1,1],最大池化层的核大小是 [3,3,3][3,3,3][3,3,3],步幅为 [3,3,3][3,3,3][3,3,3]。我们使用adam优化器,学习率初始化为 1e−31e-31e−3,并在训练过程中逐渐降低,并且批大小为 256256256。
下表显示DAM的评估结果以及所有比较模型:
论文还使用Ubuntu语料通过数量分析和可视化分析DAM中的self-attention和cross-attention的工作方式。下图的左侧部分显示了在具有不同语句数量的上下文中,Ubuntu 语料上 R10@1R_{10} @1R10@1 的变化,右侧提供了在具有不同平均语句长度和self-attention数量的性能比较:
下图给出了第 000,第 222 和第 444 self-attention匹配矩阵,第 444 cross-attention匹配矩阵的可视化结果,以及第4层中的self-attention和cross-attention的分布。
总结
模型存在的不足:
- 模糊候选响应:候选响应虽然基本上适合于会话上下文,但是还有一些不适当的细节。
- 逻辑错误:在给定的对话上下文,由于逻辑不匹配,候选响应不合适。
作者认为在训练过程中生成对抗性示例而非随机抽样可能是解决模糊候选和逻辑错误的一个好主意,并且捕获隐藏在对话文本后的逻辑信息也值得在将来进行研究 。
论文阅读笔记:Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network相关推荐
- 论文阅读笔记:Improving Attacks on Speck32 / 64 using Deep Learning
论文阅读笔记:Improving Attacks on Speck32 / 64 using Deep Learning 本文通过神经网络利用了减少轮数的 Speck 的差分性质.为此,作者对神经网络 ...
- 论文阅读笔记--Monocular Human Pose Estimation: A Survey of Deep Learning-based Methods 人体姿态估计综述
趁着寒假有时间,把之前的论文补完,另外做了一点点笔记,也算是对论文的翻译,尝试探索一条适合自己的论文阅读方法. 这篇笔记基本按照原文的格式来,但是有些地方翻译成中文读起来不太顺,因此添加了一些自己的理 ...
- 【论文阅读笔记】老照片修复——Old Photo Restoration via Deep Latent Space Translation
目录 前言 一.问题与核心思想 二.核心工作 1.将X,R,Y映射到响应的潜在空间 2.训练映射网络 3.人脸增强网络 实践 前言 笔记主要学习的是CVPR2020上发表的一篇Oral文章,主要思路是 ...
- [论文阅读笔记]SEMANTIC ADVERSARIAL ATTACKS: PARAMETRIC TRANSFORMATIONS THAT FOOL DEEP CLASSIFIERS(ICCV)
SEMANTIC ADVERSARIAL ATTACKS: PARAMETRIC TRANSFORMATIONS THAT FOOL DEEP CLASSIFIERS(2019 ICCV) 文章简介: ...
- 【论文阅读笔记】Real-Time Video Super-Resolution on Smartphones with Deep Learning, Mobile AI 2021 Challenge
论文地址:https://arxiv.org/abs/2105.08826 论文小结 这比赛的目标是在移动手机上得到实时运行的视频超分算法,目标在480p(实际上是180∗30180*30180∗ ...
- 论文阅读笔记《USAC: A Universal Framework for Random Sample Consensus》
本文总结了RANSAC算法的流程与存在的问题,整理了近几年基于RANSAC提出的改进算法,并整合各个算法的优势,提出一个统一的RANSAC算法框架.因此本文也可以看做是一片关于RANSAC算法的论 ...
- 论文阅读笔记 | 目标检测算法——SAPD算法
如有错误,恳请指出. 文章目录 1. Introduction 2. Soft Anchor-Point Detector 2.1 Detection Formulation with Anchor ...
- 论文阅读笔记 | 目标检测算法——FSAF算法
如有错误,恳请指出 文章目录 1. Introduction 2. FSAF Module 2.1 Network Architecture 2.2 Ground-truth and Loss 2.2 ...
- 论文阅读笔记 | 目标检测算法——PP-YOLOv2
如有错误,恳请指出. 文章目录 1. Introduction 2. Revisit PP-YOLO 2.1 Pre-Processing 2.2 Baseline Model 2.3 Trainin ...
最新文章
- iOSSharing #9 | 2019-05-19
- 深度学习 Optimizer 梯度下降优化算法总结
- GARFIELD@01-31-2005
- 前端学习(3271):js中this的使用
- gocd_如何将DangerJS集成到GoCD管道中
- win7怎么设置开机密码_win7系统设置电脑密码的方法
- (一)云计算OpenStack介绍
- golang 关闭gc 并手动gc_Golang垃圾回收 屏障技术
- 蓝桥杯 ALGO-14 算法训练 回文数
- 压力校准仪器开发之日--2017-10-31
- http之httpClient工具类
- 2008-2019年高等学校科技统计资料汇编
- c语言中动态内存分配的作用,C语言中动态内存的分配(malloc,realloc)
- 国产开源数据库建模工具
- SAR图像舰船目标检测介绍
- 计算机word文档工作区名称,word文档界面名称 word文档的界面组成
- 双系统双硬盘安装(win7 64位+Ubuntu18.04)(固态硬盘+机械硬盘1T)小结
- NYOJ - 独木舟上的旅行(贪心)
- 搭建vmware虚拟机,搭建docker环境
- ubuntu20.04没有网易云音乐客户端解决办法
热门文章
- H5网站-微信浏览器中打开底部fixed遮住内容区域问题
- pdf转jpg在线转换免费
- python蛇语_python蟒蛇语法分析
- macbook12寸开发java_我买的MacBook 12寸的。我就是嘚瑟一下。
- windows7经典开机音乐_糖豆人加入索尼克皮肤;三国群英传8上线Steam;疑似PS5开机音效...
- 2021届 美的笔试 C++开发工程师
- 小王梦游记四----------隐形天使
- Msc.Marc的python开发#1
- 解决canvas画布图片跨域问题
- 阿里巴巴并购雅虎中国[北京时间8月11日14时]