3 顺序匹配网络(Sequential Matching Network)

3.1 问题形式

假定,我们有一个数据集D={(yi,si,ri)}i=1N\mathcal{D}=\left\{\left(y_{i}, s_{i}, r_{i}\right)\right\}_{i=1}^{N}D={(yi​,si​,ri​)}i=1N​,
其中si=ui,1,…,ui,nis_i={u_i,1,\ldots,u_{i,n_i}}si​=ui​,1,…,ui,ni​​表示具有{ui,k}k=1ni\left\{u_{i, k}\right\}_{k=1}^{n_{i}}{ui,k​}k=1ni​​作为表达的会话上下文。
rir_iri​表示候选回复,yi∈0,1y_i\in{0,1}yi​∈0,1代表标签。yi=1y_i=1yi​=1表示rir_iri​是sis_isi​适当的回复,否则yi=0y_i=0yi​=0。
我们的目标是学到一个针对数据集D\mathcal{D}D的匹配模型g(⋅,⋅)g(\cdot, \cdot)g(⋅,⋅)。
对于任意一个背景-响应对(s,r)(s,r)(s,r),g(s,r)g(s,r)g(s,r)测量s,rs,rs,r之间的距离。

3.2 模型概述

我们提出了一个顺序匹配模型(SMN)来对g(⋅,⋅)g(\cdot,\cdot)g(⋅,⋅)建模。图1给出了他的结构。

SMN首先将上下文-响应匹配分解为若干个话语-响应对匹配,然后通过递归神经网络将所有匹配对累加为基于上下文的匹配。
SMN由三个层组成。
第一层在单词级别和片段级别上将响应候选与上下文中的每个话语进行匹配,
并通过卷积、池化来提取来自这两个级别的重要匹配信息,并将其编码在匹配向量中。
然后,匹配向量被送到第二层,他们被积累在RNN的隐藏状态中,其中的GRU遵循上下文中话语的时间顺序。
第三层根据第二层的隐藏状态来计算最终的匹配分数。

与现有模型相比,SMN具有多个优势。
首先,候选应答可以在最开始的时候匹配上下文中的每个话语,从而可以充分提取每个话语响应对中的匹配信息,并以最小的损失得到最后的匹配得分。
其次,从每个话语中提取信息是在不同的粒度级别上进行的,并且
是在应答的充分监督下进行的,因此可以很好地识别和提取每个话语中对应答选择有用的语义结构。

第三,匹配和话语的关系是耦合的,而不是单独建模的,
因此话语关系(例如,顺序关系)作为一种知识,可以监督匹配分数的形成。

通过考虑话语关系,SMN将已被证明在单轮响应选择的文本匹配中有效的“2D”匹配扩展到在多轮对话对话的响应选择中基于上下文的顺序的“2D”匹配。
在接下来的部分中,我们将描述这三个层的详细信息。

3.3话语-应答匹配

给定上下文sss的话语uuu和候选应答rrr,模型查找嵌入表,并将
uuu和rrr表示为U=[eu,1,…,eu,nu]\mathbf{U}=\left[e_{u, 1}, \ldots, e_{u, n_{u}}\right]U=[eu,1​,…,eu,nu​​]和R=[er,1,…,er,nr]\mathbf{R}=\left[e_{r, 1}, \ldots, e_{r, n_{r}}\right]R=[er,1​,…,er,nr​​],其中eu,i,er,i∈Rde_{u, i}, e_{r, i} \in \mathbb{R}^{d}eu,i​,er,i​∈Rd
分别是u,ru,ru,r的第iii个单词表示。
U∈Rd×nu\mathbf{U} \in \mathbb{R}^{d \times n_{u}}U∈Rd×nu​和
R∈Rd×nr\mathbf{R} \in \mathbb{R}^{d \times n_{r}}R∈Rd×nr​会用来构建
词与词之间的相似度矩阵M1∈Rnu×nr\mathbf{M}_{1} \in \mathbb{R}^{n_{u} \times n_{r}}M1​∈Rnu​×nr​和序列-序列相似度矩阵M2∈Rnu×nr\mathbf{M}_{2} \in \mathbb{R}^{n_{u} \times n_{r}}M2​∈Rnu​×nr​他们是CNN\text{CNN}CNN的两个输入通道。
CNN从矩阵中提取重要的匹配信息,并将该信息编码成匹配向量vvv。

特别地,∀i,j\forall i, j∀i,j,M1\mathbf{M}_1M1​的第(i,j)(i,j)(i,j)个元素定义如下:

e1,i,j=eu,i⊤⋅er,j(1)e_{1, i, j}=e_{u, i}^{\top} \cdot e_{r, j} \tag{1}e1,i,j​=eu,i⊤​⋅er,j​(1)

M1\mathbf{M}_1M1​在单词级别上对uuu和rrr的匹配建模。

为了构造M2\mathbf{M}_2M2​我们首先使用GRU\text{GRU}GRU将U\mathbf{U}U和R\mathbf{R}R变换为隐藏向量。
假定Hu=[hu,1,…,hu,nu]\mathbf{H}_{u}=\left[h_{u, 1}, \ldots, h_{u, n_{u}}\right]Hu​=[hu,1​,…,hu,nu​​]是U\mathbf{U}U的隐藏向量,∀i,hu,i∈Rm\forall i, h_{u, i} \in \mathbb{R}^{m}∀i,hu,i​∈Rm定义如下:

zi=σ(Wzeu,i+Uzhu,i−1)ri=σ(Wreu,i+Urhu,i−1)h~u,i=tanh⁡(Wheu,i+Uh(ri⊙hu,i−1))hu,i=zi⊙h~u,i+(1−zi)⊙hu,i−1(2)\begin{array}{l} z_{i}=\sigma\left(\mathbf{W}_{\mathbf{z}} e_{u, i}+\mathbf{U}_{\mathbf{z}} h_{u, i-1}\right) \\ r_{i}=\sigma\left(\mathbf{W}_{\mathbf{r}} e_{u, i}+\mathbf{U}_{\mathbf{r}} h_{u, i-1}\right) \\ \tilde{h}_{u, i}=\tanh \left(\mathbf{W}_{\mathbf{h}} e_{u, i}+\mathbf{U}_{\mathbf{h}}\left(r_{i} \odot h_{u, i-1}\right)\right) \\ h_{u, i}=z_{i} \odot \widetilde{h}_{u, i}+\left(1-z_{i}\right) \odot h_{u, i-1} \end{array} \tag{2} zi​=σ(Wz​eu,i​+Uz​hu,i−1​)ri​=σ(Wr​eu,i​+Ur​hu,i−1​)h~u,i​=tanh(Wh​eu,i​+Uh​(ri​⊙hu,i−1​))hu,i​=zi​⊙hu,i​+(1−zi​)⊙hu,i−1​​(2)
其中uu,0=0u_{u,0}=0uu,0​=0,ziz_izi​和rir_iri​分别为更新门和重置门,σ(⋅)\sigma(\cdot)σ(⋅)是sigmoid函数,
Wz,Wh,Wr,Uz,Ur,Uh\mathbf{W}_{\mathbf{z}}, \mathbf{W}_{\mathbf{h}}, \mathbf{W}_{\mathbf{r}}, \mathbf{U}_{\mathbf{z}}, \mathbf{U}_{\mathbf{r}}, \mathbf{U}_{\mathbf{h}}Wz​,Wh​,Wr​,Uz​,Ur​,Uh​是参数。
相似地,我们有Hr=[hr,1,…,hr,nr]\mathbf{H}_{r}=\left[h_{r, 1}, \ldots, h_{r, n_{r}}\right]Hr​=[hr,1​,…,hr,nr​​]
作为R\mathbf{R}R的隐藏向量。然后∀i,j\forall i, j∀i,j,M2\mathbf{M}_2M2​的第(i,j)(i,j)(i,j)个元素定义为:

e2,i,j=hu,i⊤Ahr,j(3)e_{2, i, j}=h_{u, i}^{\top} \mathbf{A} h_{r, j} \tag{3}e2,i,j​=hu,i⊤​Ahr,j​(3)

其中A∈Rm×m\mathbf{A} \in \mathbb{R}^{m \times m}A∈Rm×m是线性变换。
∀i\forall i∀i,GRU对直到位置iii的单词之间的顺序关系和依赖关系进行建模,并将直到第iii个单词的文本段落编码为隐藏向量。

因此,M2\mathbf{M}_2M2​在段落级别上对uuu和rrr之间的匹配进行建模。

M1,M2\mathbf{M}_1,\mathbf{M}_2M1​,M2​由CNN\text{CNN}CNN处理形成uuu。
∀f=1,2\forall f=1,2∀f=1,2,CNN\text{CNN}CNN用Mf\mathbf{M}_fMf​来代表输入通道,
并且交替进行卷积核池化操作。
假定z(l,f)=[zi,j(l,f)]I(l,f)×J(l,f)z^{(l, f)}=\left[z_{i, j}^{(l, f)}\right]_{I^{(l, f)} \times J^{(l, f)}}z(l,f)=[zi,j(l,f)​]I(l,f)×J(l,f)​
代表输出的特征映射由类型fff到层lll,其中z(0,f)=Mf,∀f=1,2z^{(0, f)}=\mathbf{M}_{f},\forall f=1,2z(0,f)=Mf​,∀f=1,2。

在卷积层上,我们使用具有窗口大小rw(l,f)×rh(l,f)r_{w}^{(l, f)} \times r_{h}^{(l, f)}rw(l,f)​×rh(l,f)​的2D卷积运算,定义zi,j(l,f)z_{i, j}^{(l, f)}zi,j(l,f)​:

zi,j(l,f)=σ(∑f′=0Fl−1∑s=0rw(l,f)∑t=0(l,f)Ws,t(l,f)⋅zi+s,j+t(l−1,f′)+bl,k)(4)z_{i, j}^{(l, f)}=\sigma\left(\sum_{f^{\prime}=0}^{F_{l-1}} \sum_{s=0}^{r_{w}^{(l, f)}} \sum_{t=0}^{(l, f)} \mathbf{W}_{s, t}^{(l, f)} \cdot z_{i+s, j+t}^{\left(l-1, f^{\prime}\right)}+\mathbf{b}^{l, k}\right)\tag{4}zi,j(l,f)​=σ⎝⎛​f′=0∑Fl−1​​s=0∑rw(l,f)​​t=0∑(l,f)​Ws,t(l,f)​⋅zi+s,j+t(l−1,f′)​+bl,k⎠⎞​(4)
其中σ(⋅)\sigma(\cdot)σ(⋅)是ReLU\text{ReLU}ReLU,W(l,f)∈Rrw(l,f)×rh(l,f)\mathbf{W}^{(l, f)} \in \mathbb{R}^{r_{w}^{(l, f)} \times r_{h}^{(l, f)}}W(l,f)∈Rrw(l,f)​×rh(l,f)​,
bl,k\mathbf{b}^{l, k}bl,k
是参数,Fl−1F_{l-1}Fl−1​是在第(l−1)(l-1)(l−1)层的特征映射的数量。最大池化运算跟随卷积运算,可表示为

zi,j(l,f)=max⁡pw(l,f)>s≥0max⁡ph(l,f)>t≥0zi+s,j+t(5)z_{i, j}^{(l, f)}=\max _{p_{w}^{(l, f)}>s \geq 0} \max _{p_{h}^{(l, f)}>t \geq 0} z_{i+s, j+t} \tag{5}zi,j(l,f)​=pw(l,f)​>s≥0max​ph(l,f)​>t≥0max​zi+s,j+t​(5)

其中pw(l,f)p_{w}^{(l, f)}pw(l,f)​和ph(l,f)p_{h}^{(l, f)}ph(l,f)​分别是二维池化的宽度和高度。
最终特征映射的输出通过连接和线性变换映射到低维空间来作为匹配向量v∈Rqv \in \mathbb{R}^{q}v∈Rq。

根据公式1、3、4、5,我们可以看到通过从训练数据中学习单词嵌入和GRU\text{GRU}GRU的参数,话语中的单词或片段对于识别响应适应性很有用,可能与响应中的某些单词或段落有很高的相似度,并导致相似矩阵中的高值区域。
这些区域将通过卷积和池化操作进行转换和选择,并在话语中将重要信息携带到匹配向量中。
这就是我们的模型如何在上下文中识别重要信息并在响应的监督下利用它进行匹配。

我们考虑多个通道,因为我们想在多个粒度级别上捕获重要的匹配信息。

3.4 匹配积累

假定[v1,…,vn]\left[v_{1}, \dots, v_{n}\right][v1​,…,vn​]是第一层的输出(对应于nnn对),在第二层,GRU\text{GRU}GRU接受[v1,…,vn]\left[v_{1}, \dots, v_{n}\right][v1​,…,vn​]作为输入并且将匹配序列编码为具有类似于公式222的详细参数化的隐藏状态Hm=[h1′,…,hn′]∈Rq×nH_{m}=\left[h_{1}^{\prime}, \ldots, h_{n}^{\prime}\right] \in \mathbb{R}^{q \times n}Hm​=[h1′​,…,hn′​]∈Rq×n。
这一层有两个功能:
(1)它对上下文中话语的依赖关系和时态关系进行建模;
(2)作为基于上下文的匹配,它利用时间关系来监督pair matching的积累。

此外,由公式(2)可知重置门rir_iri​和更新门ziz_izi​控制以前的隐藏状态和当前的输入流入到当前隐藏状态的信息量,
因此可以积累重要的匹配向量(对应重要的话语),同时过滤掉
向量中的噪声。

3.5 匹配预测与学习

已知[h1′,…,hn′]\left[h_{1}^{\prime}, \ldots, h_{n}^{\prime}\right][h1′​,…,hn′​],我们定义g(s,r)g(s,r)g(s,r)为:

g(s,r)=softmax⁡(W2L[h1′,…,hn′]+b2)(6)g(s, r)=\operatorname{softmax}\left(\mathbf{W}_{2} L\left[h_{1}^{\prime}, \ldots, h_{n}^{\prime}\right]+\mathbf{b}_{2}\right) \tag{6} g(s,r)=softmax(W2​L[h1′​,…,hn′​]+b2​)(6)
其中W2,b2\mathbf{W_2,b_2}W2​,b2​是参数。
我们考虑L[h1′,…,hn′]L\left[h_{1}^{\prime}, \ldots, h_{n}^{\prime}\right]L[h1′​,…,hn′​]的三个参数:

  1. 只使用最后一个隐藏状态。L[h1′,…,hn′]=hn′L\left[h_{1}^{\prime}, \ldots, h_{n}^{\prime}\right]=h_{n}^{\prime}L[h1′​,…,hn′​]=hn′​
  2. 对隐藏状态进行线性组合。L[h1′,…,hn′]=∑i=1nwihi′L\left[h_{1}^{\prime}, \ldots, h_{n}^{\prime}\right]=\sum_{i=1}^{n} w_{i} h_{i}^{\prime}L[h1′​,…,hn′​]=∑i=1n​wi​hi′​
  3. 我们遵循(Yang et al., 2016),采用一种注意力机制来合并隐藏状态。
    L[h1′,…,hn′]L\left[h_{1}^{\prime}, \ldots, h_{n}^{\prime}\right]L[h1′​,…,hn′​]定义如下:

ti=tanh⁡(W1,1hui,nu+W1,2hi′+b1)αi=exp⁡(ti⊤ts)∑i(exp⁡(ti⊤ts))L[h1′,…,hn′]=∑i=1nαihi′(7)\begin{array}{l} t_{i}=\tanh \left(\mathbf{W}_{1,1} h_{u_{i}, n_{u}}+\mathbf{W}_{1,2} h_{i}^{\prime}+\mathbf{b}_{1}\right) \\ \alpha_{i}=\frac{\exp \left(t_{i}^{\top} t_{s}\right)}{\sum_{i}\left(\exp \left(t_{i}^{\top} t_{s}\right)\right)} \\ L\left[h_{1}^{\prime}, \ldots, h_{n}^{\prime}\right]=\sum_{i=1}^{n} \alpha_{i} h_{i}^{\prime} \end{array}\tag{7}ti​=tanh(W1,1​hui​,nu​​+W1,2​hi′​+b1​)αi​=∑i​(exp(ti⊤​ts​))exp(ti⊤​ts​)​L[h1′​,…,hn′​]=∑i=1n​αi​hi′​​(7)

其中,W1,1∈Rq×m,W1,2∈Rq×q,b1∈Rq\mathbf { W } _ { \mathbf { 1 } , \mathbf { 1 } } \in \mathbb { R } ^ { q \times m } , \mathbf { W } _ { \mathbf { 1 } , \mathbf { 2 } } \in \mathbb { R } ^ { q \times q },\mathbf{b_1}\in \mathbb{R}^qW1,1​∈Rq×m,W1,2​∈Rq×q,b1​∈Rq为参数。hi′,hui,nuh_i^{'},h_{u_i,n_u}hi′​,hui​,nu​​分别是第iii个匹配向量,第iii个话语的最终隐藏状态。
ts∈Rqt _ { s } \in \mathbb { R } ^ { q }ts​∈Rq是一个在训练中随机初始化并共同学习的虚拟上下文向量。

(2)和(3)都是为了从训练数据中学习{h1′,…,hn′}\left\{ h _ { 1 } ^ { \prime } , \ldots , h _ { n } ^ { \prime } \right\}{h1′​,…,hn′​}的权重,
并突出了重要匹配向量在最终匹配中的作用。
不同的是,(2)中的权重是静态的,因为权重完全由话语的位置决定,而(3)中的权重是通过匹配向量和话语向量动态计算的。
我们用
L[h1′,…,hn′]L \left[ h _ { 1 } ^ { \prime } , \ldots , h _ { n } ^ { \prime } \right]L[h1′​,…,hn′​]
的三个参数来表示我们的模型,分别为SMNlast,SMNstatic,SMNdynamic\mathrm { SMN } _ { \text {last} } , \mathrm { SMN } _ { \text {static} } , \mathrm { SMN } _ { \text {dynamic} }SMNlast​,SMNstatic​,SMNdynamic​,
并在实验中对它们进行实证比较。

我们通过最小化与D\mathcal{D}D的交叉熵,来学习g(⋅,⋅)g(\cdot,\cdot)g(⋅,⋅)。
用Θ\ThetaΘ来代表SMN\text{SMN}SMN的参数,然后学习的目标函数可以定义为

∑i=1N[yilog⁡(g(si,ri))+(1−yi)log⁡(1−g(si,ri))](8)\sum _ { i = 1 } ^ { N } \left[ y _ { i } \log \left( g \left( s _ { i } , r _ { i } \right) \right) + \left( 1 - y _ { i } \right) \log \left( 1 - g \left( s _ { i } , r _ { i } \right) \right) \right]\tag{8} i=1∑N​[yi​log(g(si​,ri​))+(1−yi​)log(1−g(si​,ri​))](8)

4. 候选应答检索

在实践中,基于检索的聊天机器人要将匹配方法应用于响应选择,需要预先从索引中检索多个候选响应。
虽然候选检索不是本文的重点,但它是实际系统中的重要一步。
在这项工作中,我们使用启发式方法从索引中获得候选响应。
给定具有
{u1,…,un−1}\left\{ u _ { 1 } , \ldots , u _ { n - 1 } \right\}{u1​,…,un−1​}前几轮的发言的信息unu_nun​,
我们从{u1,…,un−1}\left\{ u _ { 1 } , \ldots , u _ { n - 1 } \right\}{u1​,…,un−1​}提取前5个关键字根据他们的TF-IDF分数
并且使用关键词展开unu_nun​。
然后,我们将扩展消息发送到索引,并使用索引的内联检索算法检索响应候选。
最后,我们使用g(s,r)g(s,r)g(s,r)来对候选重新排序,并返回顶部的候选作为对上下文的响应。

5. 实验

我们在公开可用的英文数据集和本文发表的中文数据集上对我们的模型进行了测试。

5.1 Ubuntu语料

英文数据集是Ubuntu语料库(Lowe等人,2015年),其中包含从Ubuntu论坛的聊天日志中收集的多轮对话。
数据集包括用于训练的100万对上下文-响应对、用于验证的50万对和用于测试的50万对。
积极的反应是来自人类的真实反应,消极的反应是随机抽样的。
在训练中,正负之比为1:1,而在验证和测试中为1:9。
我们使用了徐等人分享的副本(2016)2其中数字、URL和路径由特殊占位符替换。
我们遵循(Lowe et al., 2015),采用n个候选中k位的召回率(Rn@k)作为评价指标。

5.2 豆瓣会话语料库

Ubuntu语料库是一个特定于领域的数据集,响应候选是在没有人为判断的情况下从负抽样中获得的。
为了进一步验证我们模型的有效性,我们创建了一个新的具有开放领域对话的数据集,称为豆瓣对话语料库。
豆瓣会话语料库测试集中的应答候选按照基于检索的chatbot程序收集,并由人工判断标记。
它模拟了一个基于检索的聊天机器人的真实场景。
我们将其发布给研究社区,以促进多轮对话的研究。

具体来说,我们从豆瓣小组(在中国很受欢迎的社交网络服务)中抓取了超过2个回合的110万次双向对话(两个人之间的对话)。
我们随机抽取了50万个用于创建训练集的对话,2.5万个用于创建验证集的对话和1000个用于创建测试集的对话,并确保这三个集之间没有重叠。

对于训练和验证中的每一个对话,我们将最后一个回合作为一个积极的回应,将前一个回合作为一个背景,并从110万数据中随机抽取另一个回应作为一个消极的回应

训练集中有100万个上下文-响应对,验证集中有5万个上下文-响应对。
为了创建测试集,我们首先从中国最大的微博服务新浪微博抓取了1500万对post-reply对,并用Lucene对这些对进行了索引。

我们将测试集中每个豆瓣二元对话的最后一轮作为消息,按照第4节中的方法从索引中检索到10个响应候选,最终形成了一个具有10,000个上下文-响应对的测试集。
我们招募了三名标签员来判断候选人是否对上下文做出了适当的反应。

正确的响应意味着在给定整个上下文的情况下,响应可以自然地回复消息。
每一对收到三个标签,其中大部分标签被作为最终决定。

表二列出了这三组的统计数字。注意,标签的Fleiss‘kappa(Fleiss,1971)为0.41,这表明三个标注者达成了相对较高的一致性。

除了Rn@ksR _ { n } @ k sRn​@ks,我们还遵循了信息检索的惯例,采用了
平均精度均值 (MAP)、平均倒数排名(MRR)和在第一位的精度
(P@1)( \mathrm { P } @ 1 )(P@1)作为评价指标。

我们没有计算R2@1\mathrm{R_2}@1R2​@1是因为在豆瓣语料库中,一个语境可能有多个正确答案,因此我们不得不随机抽取一个样本用于R2@1\mathrm{R_2}@1R2​@1,这样可能会给评估带来偏差。

当使用标记集时,我们删除了所有负面响应或所有正面响应的对话,因为模型对它们没有影响。

测试集中还剩下6670个上下文响应对。

5.3 基线

我们考虑了以下基线:

Basic models: (Lowe等人,2015)和(Kadlec等人,2015)中的模型,包括TF-IDF、RNN、CNN、LSTM和BiLSTM。

Multi-view: Zhou等人提出的模型(2016)利用分层递归神经网络对话语关系进行建模。

Deep learning to respond (DL2R): Yan等人提出的模型 (2016)用上下文中的其他话语重新表达了信息。

Advanced single-turn matching models: 由于BiLSTM不代表最先进的匹配模型,我们在上下文中串联话语,并使用更强大的模型将长文本与应答候选进行匹配,这些模型包括MV-LSTM(wan等人,2016)(2D匹配)、Match-LSTM(Wang和酱,2015)、Attentive-LSTM(Tan等人,2015)(两个基于注意力的模型)和多通道,如第3.3节所述。

多通道是我们模型的一个简单版本,没有考虑话语关系。
我们还将上下文中的前5个TF-IDF单词附加到输入消息中,并计算扩展消息与具有多通道的响应之间的分数,表示为
Multi-Channelexp\text{Multi-Channel}_ { e x p }Multi-Channelexp​

5.4 参数调整

对于基线模型,如果它们的结果在现有文献中可用(例如,在Ubuntu语料库上的结果),我们只复制数字,否则我们按照文献中的设置实现模型。
所有模型都是使用Theano实现的(Theano开发团队,2016)。单词嵌入由word2vec(Mikolov等人,2013年)的结果初始化,该结果运行在训练数据上,词向量的维数为200。
对于我们的模型中的多通道和第一层,我们将GRU的隐藏状态的维数设置为200。
我们在{(2,2),(3,3)(4,4)}中调整了卷积和池化的窗口大小,最终选择了(3,3)。
特征映射的数量是8个。
在第二层中,我们将匹配向量的维数和GRU的隐藏状态设置为50。
在单个Tesla K80 GPU上,使用Adam算法(Kingma和Ba,2014)通过随机梯度下降法更新了参数。
初始学习率为0.001,Adam的参数,β1,β2\beta_1,\beta_2β1​,β2​分别为0.9,0.999。
我们采用了提前停止作为正则化策略。

对模型进行小批量训练,批大小为200个,最大话语数量为50个。
我们将最大上下文长度(即话语数量)设置为10,因为超过10的上下文不会提高模型的性能(详细信息见第5.6节)。

如果上下文中的话语数量少于10个,我们将填充零,否则我们将保留最后10个话语。

5.5 评估结果

表3显示了对这两个数据集的评估结果。

我们的模型在两个数据集的所有指标上要由于baseline,改进在统计上是显著的(用p值≤0.01进行t检验,除了豆瓣语料库上的R10@5)。
即使是最先进的单轮匹配模型,其性能也比我们的模型差得多。
结果表明,人们不能忽视话语关系,可以简单地将话语串联起来进行多轮对话响应的选择。
我们的模型比Multi-View有了重大改进,这证明了我们的“匹配优先”策略是合理的。

DL2R比我们的模型差,说明使用启发式规则的话语重构不是一种很好的利用上下文信息的方法。

Rn@ksR _ { n } @ k sRn​@ks在豆瓣语料库上较低,因为对于上下文有多个正确的候选(例如,如果有3个正确的响应,则最大R10@1R_{10}@1R10​@1为0.33)。

SMNdynamic\text{SMN}_ { d y n a m i c }SMNdynamic​仅略好于SMNstatic\text{SMN}_ { static}SMNstatic​
和SMNlast\text{SMN}_ {last}SMNlast​。

这可能是由于GRU可以通过其门机制从匹配序列中选择有用的信号,并在最终状态下将它们累加,从而导致注意力机制对手头任务的效果不明显。

5.6 进一步分析

可视化: 我们可视化了相似矩阵和GRU在第二层的门通过使用来着Ubuntu语料的样例,
来进一步阐明我们模型是如何识别语境中的重要信息,如何通过GRU的门控机制来选择重要的匹配向量,如3.3节和3.4节中所说的那样。
样例:

  • u1: how can unzip many rar(_number_for example) files at once;
  • u2: sure you can do that is bash
  • u3: okey how?
  • u4: are the files all in the same directory?
  • u5: yes thay all are;
  • r: then the command glebihan should extract them all from/to that directory

它来自测试集,我们的模型成功地将正确的回答排在了最前面。

由于空间限制,我们只可视化了M1,M2\mathbf { M } _ { 1 } , \mathbf { M } _ { 2 }M1​,M2​
和更新门(i.e.z)(\text{i.e.} z)(i.e.z)在图2中。

我们可以看到,在u1u_1u1​中,包括"unzip",“rar”,“files"等重要单词
被rrr中的"command”,“extract”,"directory"识别进行匹配,
而u3u_3u3​几乎毫无用处,因此从中提取的信息很少。

u1u_1u1​对响应的选择至关重要,来自u1u_1u1​和rrr的近乎所有信息都流向了
GRU的隐藏状态,而且其他话语的信息较少,并且相应的门几乎是关闭的,
以保持来自u1u_1u1​和rrr的信息直到最终状态。

模型消融: 我们通过将SMN\text{SMN}SMN的不同部分逐一从SMNlast\text{SMN}_{last}SMNlast​中移除
来研究SMN\text{SMN}SMN的不同部分的影响,如表4所示。

首先,用神经张量网络(NTN)(Socher等人,2013)
取代多通道的“2D”匹配(表示为ReplaceMReplace_{M}ReplaceM​)会使性能急剧下降。
这是因为NTN仅通过话语向量和响应向量匹配一对,并且丢失该对中的重要信息。

结合可视化,我们可以得出结论,“2D”匹配在“匹配优先”策略中起着关键作用,因为它以最小的损失捕捉到每对匹配中的重要匹配信息。
其次,当用多层感知器替换用于匹配积累的GRU时,性能略有下降
(表示为ReplaceA\text{Replace}_AReplaceA​)。
这表明话语关系是有用的。

最后,我们只留下一个通道进行匹配,发现M2比M1稍微强大一些,并且两者都达到了最好的效果(除了豆瓣语料库上的R10@5R _ { 10 } @ 5R10​@5)。

跨上下文长度的性能:
我们研究了我们的模型(SMNlast\text{SMN}_{last}SMNlast​)在整个上下文中的表现。
图3显示了豆瓣语料库上不同长度间隔的MAP上的比较。

我们的模型始终比基线执行得更好,并且当上下文变长时,差距会变得更大。

实验结果表明,该模型能够很好地捕捉上下文中话语之间的依赖关系,尤其是长依赖关系。

最大上下文长度: 我们研究了最大上下文长度对SMN的影响。
图4显示了在最大上下文长度方面,SMN在Ubuntu Corpus和Douban Corpus上的性能。

从图4中,我们发现,当最大上下文长度小于5时,性能将显着提高,并且在上下文长度达到10后变得稳定。

这表明上下文信息对于多轮响应选择很重要,我们可以将最大上下文长度设置为10,以平衡有效性和效率。

错误分析: 尽管SMN在这两个数据集上的表现优于基线方法,但仍有一些无法完美解决的问题。

(1)逻辑一致性。SMN在语义级别上对上下文和响应进行建模,但很少关注逻辑一致性。这导致了豆瓣语料库中的多个DSAT
例如,给定上下文:

  • a: Does anyone know Newton jogging shoes?
  • b: 100 RMB on Taobao.
  • a: I know that. I do not want to buy it because that is a fake which is made in Qingdao
  • b: Is it the only reason you do not want to buy it?

SMN对响应It is not a fake. I just worry about the date of manufacture 给予高分。

该响应与逻辑上下文不一致,因为它声称慢跑鞋不是假货。
将来,我们将探讨基于检索的聊天机器人中的逻辑一致性问题。

(2)检索后没有正确的候选项。在实验中,我们准备了1000个上下文进行测试,但是只有667个上下文在候选响应检索后具有正确的候选。
这表明候选检索组件仍有改进的空间,仅在上下文中使用几个关键字扩展输入消息可能不是候选检索的理想方法。
将来,我们将考虑用于检索候选的高级方法。

6. 结论与未来工作

我们提出了一个新的基于上下文的模型,用于基于检索的聊天机器人中的多轮回复选择。
在开放数据集上的实验结果表明,该模型可以大大优于现有方法。
此外,我们还向研究社区发布了第一个人类标记的多轮回复选择数据集。
将来,我们将研究如何对响应的逻辑一致性进行建模并改善候选检索。


做了什么?

  1. 提出了顺序匹配网络,从单词级和段落级两个粒度考虑整个会话与回复的相似度
  2. 第一层使用GRU按照时间顺序来得到语义向量
  3. 第二层的CNN有两个输入通道,分别对应于单词级和段落级

解决了什么?

解决了当前工作中没有考虑整个对话中每个话语之间关系和重要的语境信息。

顺序匹配网络:基于检索的聊天机器人中多回合响应选择的新架构相关推荐

  1. 聊天机器人中对话模板的高效匹配方法

    /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林,黄通文,薛会萍 尽管深度学习目前在研发聊天机器人方面进行的如火如荼,但是这些技术距离真正实用还有不短的 ...

  2. 【每周NLP论文推荐】 聊天机器人中FAQ相关的论文推荐

    欢迎来到<每周NLP论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 今天推荐FAQ相关的论文,FAQ是聊天机器 ...

  3. 聊天机器人中的 A/B 测试

    原文作者:Oksana Oboishchyk 原文链接:A/B 测试在 Chatbots 编译:一熊翻译组 Mason 目前,没有太多的工具和平台为聊天机器人提供 A/B 测试.但是,A/B 测试是在 ...

  4. 聊天机器人中的深度学习

    原文链接:http://www.wildml.com/2016/04/deep-learning-for-chatbots-part-1-introduction/ Part1简介--聊天机器人中的深 ...

  5. 基于检索的聊天机器人的实现

    在文章NLP入门实例推荐中提到,对话系统有两种形式: 基于检索的对话系统 模式:s1,s2–>R,即字符串s1和s2符合一定的规则. 基于生成的对话系统 模式:s1–>s2,即由字符串s1 ...

  6. 聊天机器人中的深度学习技术(引言)

    原文链接:DEEP LEARNING FOR CHATBOTS, PART 1 – INTRODUCTION 译者:刘翔宇  审核:赵屹华 责编:周建丁(zhoujd@csdn.net) 聊天机器人, ...

  7. 开放式的Video Captioning,中科院自动化所提出基于“检索-复制-生成”的网络

    关注公众号,发现CV技术之美 ▊ 写在前面 在本文中,作者将传统的视频字幕任务转换为一个新的范式,即开放式视频字幕,它在视频内容相关句子的提示下生成描述,而不限于视频本身. 为了解决开放式视频字幕问题 ...

  8. java聊天程序步骤解析_java网络之基于UDP的聊天程序示例解析

    基于UDP的Socket通信 UDP协议不是一种基于稳定连接的协议,是一种面向数据报包的通信协议,不需要通信双方建立稳定的连接,也没有所谓服务端和客户的概念,数据报包在传输的时候不保证一定及时到达,也 ...

  9. 揭秘阿里小蜜:基于检索模型和生成模型相结合的聊天引擎 | PaperDaily #25

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

  10. 论文翻译-阿里小蜜,基于检索模型和生成模型相结合的聊天引擎

    1.摘要 阿里小蜜是一款开放领域的聊天机器人引擎,他结合了IR(检索)模型与带有注意力机制的seq2seq生成模型.从效果上来讲,阿里小蜜的表现明显优于只使用某一种单一模型的情况. 2.介绍 近年来, ...

最新文章

  1. 万物皆可JOJO:这个GAN直接让马斯克不做人啦 !Demo在线可玩!
  2. Interview:算法岗位面试—11.02早上上海某银行(上海分行,四大行之一)信息技术岗笔试记录
  3. Apache Superset从入门到放弃(基于python3.6.9)
  4. Apache Flink 零基础入门(二十一)Flink HistoryServer概述与配置
  5. 【数据结构】——堆排序
  6. 前端加按钮将图片另存为_Windows 10系统如何将自己的照片制作成文件夹图标
  7. Java Code之多态
  8. word图片嵌入式为何只能看到一部分_Word排版的正确姿势!(Word论文排版教学)...
  9. 剑指Offer——链表中环的入口结点
  10. 智能一代云平台(五):移动开发之环境搭建
  11. ASP.NET的自定义分页
  12. 基于YOLO的目标检测系统实践
  13. HTML5 video autoplay=“autoplay“ 无法自动播放的问题
  14. 浙大版《Python 程序设计》题目集
  15. comsol技巧学习 day1
  16. Python爬虫实战——下载小说
  17. 模式识别分类器评价指标之DET曲线
  18. 编码与DNA存储——DNA码的构造
  19. 软件测试经理评说ISTQB认证价值
  20. 设计中常见八个构图类型

热门文章

  1. Android开发笔记——视频录制播放常见问题
  2. Golang——Go语言发展史(一)
  3. 《P2P技术详解》系列文章
  4. Web-Security-Learning
  5. nandflash地址的物理地址,逻辑地址,spare地址等理解
  6. 《战双帕弥什》的动作打击感是怎么做出来的
  7. apache启动服务失败
  8. 恢复PyCharm顶部菜单栏
  9. 清华大学梁宸计算机系,2015年自主招生--五大联赛银牌争夺战
  10. 接入网+承载网+核心网