摘要

在端到端面向任务的对话系统中,查询知识库(KB)长期以来一直是一个挑战。以前的序列到序列(Seq2Seq)对话生成工作将KB查询看作是在整个KB上的注意力,而没有保证生成的实体彼此一致。在本文中,我们提出了一个新的框架,该框架将KB查询分为两个步骤,以提高生成实体的一致性。在第一步中,受到通常可以通过单个KB行支持响应这一观察的启发,我们引入了KB检索组件,给定一个对话历史,该组件能够显式返回最相关的KB行。检索结果进一步用于过滤Seq2Seq响应生成模型中的无关实体,以提高输出实体之间的一致性。在第二步中,我们进一步执行注意力机制以解决最相关的KB列。我们提出了两种方法来解决在没有标注检索数据情况下进行模型训练,其中包括远程监督和Gumbel-Softmax技术。在两个公开可用的面向任务对话数据集上进行的实验显示,我们的模型要优于基线系统并生成了实体一致的响应。

1.介绍


  面向任务的对话系统可帮助用户使用自然语言实现某个特定目标,其吸引了越来越多研究的关注。随着序列到序列(Seq2Seq)模型在文本生成中的成功,一些工作试图将面向任务的对话建模为基于对话历史的Seq2Seq响应生成。这种建模方案无需在对话系统中使用人工设计的管道模块以及大量的标注工作。与典型的文本生成不同,面向任务的对话系统的成功对话在很大程度上取决于准确的知识库(KB)查询。以如图1中所示的对话为例,要回答驾驶员有关加油站的询问,对话系统需要检索诸如“ 200 Alester Ave”和“ Valero”之类的实体。对于基于Seq2Seq生成的面向任务的对话系统,最近的研究趋势是将KB查询建模为对整个KB实体表示的注意力网络,希望学会一个模型以更多地关注相关实体。
  尽管使用针对整个KB的注意力机制能得到一个良好的端到端对话生成,但这些方法不能保证KB实体的生成一致性,导致有时生成具有相互冲突实体的响应,例如对于一个加油站询问,会产生“ Valero is located at 899 Ames Ct ” 。实际上,Valero的正确地址是200 Alester Ave。对于常规管道系统,很容易实现一致的响应,因为它们通过发出API请求来查询KB,而返回的实体通常来自单个KB行,因此该实体会与用户请求的对象(例如“加油站”)相关。 这表明响应通常可以由单个KB行支持。我们希望将这种观察结果纳入Seq2Seq对话生成模型,因为它能鼓励进行KB相关的生成并避免生成具有冲突实体的响应。
  为了在Seq2Seq面向任务的对话系统中实现实体一致的生成,我们提出了一个新的框架,采用两步方法来查询KB。在第一步中,我们引入了一个检索模块-KB-retriever,以显式查询KB。受到可以通过一个KB行来支持一个响应这一观察的启发,给定一个对话历史和一组KB行,KB-retriever使用记忆网络选择最相关的行。然后将检索结果带入Seq2Seq对话生成模型,以过滤无关的KB实体并提高生成实体的一致性。在第二步中,我们进一步执行注意力机制以解决最相关的KB列。最后,我们采用复制机制来合并检索到的KB实体。
  由于对话数据集通常不会标注检索结果,因此训练KB-retriever是很难的。为了使训练可行,我们提出了两种方法:1)我们使用一组启发式方法来得到训练数据并以远程监督方式训练retriever;2)我们使用Gumbel-Softmax作为不可微分选择过程的近似,并和Seq2Seq对话生成模型一起进行训练。在两个公开数据集(Camrest和InCar Assistant)上进行的实验证实了KB-Retriever的有效性。使用远程监督和Gumbel-Softmax技术训练retrievers,在自动和人类评估中都要由于进行比较的系统。经验分析进一步验证了我们的假设,即数据集中的80%以上的响应可以通过单个KB行支持,并且更好的检索结果会导致更好地面向任务的对话生成性能。

2.定义

在本节中,我们将描述面向任务的对话系统的输入和输出,以及基于Seq2Seq的面向任务生成的定义。

2.1 Dialogue History

给定一个用户(u)(u)(u)和系统(s)(s)(s)之间的对话,我们采用与Eric et al. (2017) 相同的方法,将第kkk轮对话语句表示为{(u1,s1),(u2,s2),...,(uk,sk)}\{(u_1,s_1),(u_2,s_2),...,(u_k,s_k)\}{(u1​,s1​),(u2​,s2​),...,(uk​,sk​)}。在对话的第iii轮时,我们对对话上下文进行了整合,该对话由字符序列(u1,s1,...,si−1,ui)(u_1,s_1,...,s_{i-1},u_i)(u1​,s1​,...,si−1​,ui​)组成,并使用x=(x1,x2,...,xm)\textbf x=(x_1,x_2,...,x_m)x=(x1​,x2​,...,xm​)表示整个对话历史,其中mmm是对话历史中字符的数目。

2.2 Knowledge Base

在本文中,我们假设可以访问类似于关系数据库的KB BBB,由∣R∣|\mathcal R|∣R∣行和∣C∣|\mathcal C|∣C∣列组成。第jjj行第iii列的实体值被表示为vj,iv_{j,i}vj,i​。

2.3 Seq2Seq Dialogue Generation

我们将Seq2Seq面向任务的对话生成定义为根据输入对话历史x\textbf xx和KB BBB来找到最可能响应y\textbf yy。形式上,响应的概率被定义为:
p(y∣x,B)=∏t=1np(yt∣y1,...,yt−1,x,B),p(\textbf y|\textbf x, B)=\prod^n_{t=1}p(y_t|y_1,...,y_{t-1},\textbf x,B),p(y∣x,B)=t=1∏n​p(yt​∣y1​,...,yt−1​,x,B),
其中,yty_tyt​表示输出字符。

3.框架


  在本节中,我们描述了端到端的面向任务对话的框架。我们的框架架构在图2中进行了说明,其中包括两个主要组成部分,包括基于记忆网络的检索器以及具有KB Retriever的seq2seq对话生成。我们的框架首先使用KB-Retriever选择最相关的KB行,并进一步过滤Seq2Seq响应生成模型中的无关实体,以提高输出实体之间的一致性。在解码时,我们进一步执行了注意力机制,以选择最可能的KB列。我们将在以下各节中介绍我们的框架的细节。

3.1 Encoder

在我们的编码器中,我们采用双向LSTM来编码对话历史x\textbf xx,该历史捕获了序列中的时间关系。编码器首先将x\textbf xx中的字符映射到嵌入函数ϕemb\phi^{emb}ϕemb上的向量,然后BiLSTM通过重复应用循环单元hi=BiLSTM(ϕemb(xi),hi−1)\textbf h_i=BiLSTM(\phi^{emb}(x_i),\textbf h_{i-1})hi​=BiLSTM(ϕemb(xi​),hi−1​),以前向和反向方式读取矢量,来产生上下文敏感的隐藏状态(h1,h2,...,hm)(\textbf h_1,\textbf h_2,...,\textbf h_m)(h1​,h2​,...,hm​)。

3.2 Vanilla Attention-based Decode

在这里,我们采用 Eric et al. (2017) 中基于注意力的解码器来逐字生成响应。LSTM还被用于将部分生成的输出序列(y1,y2,...,yt−1)(y_1,y_2,...,y_{t-1})(y1​,y2​,...,yt−1​)表示为(h~1,h~2,...,h~t)(\tilde {\textbf h}_1,\tilde{\textbf h}_2,...,\tilde{\textbf h}_t)(h~1​,h~2​,...,h~t​)。对于下一个字符yty_tyt​的生成,模型首先基于对话历史来计算一个注意力表示h~t′\tilde{\textbf h}'_th~t′​:
uit=W2tanh(W1[hi,h~t]),ait=softmax(uit),h^t′=∑i=1mait⋅hi.\begin{array}{cc} \textbf u^t_i=W_2tanh(W_1[\textbf h_i,\tilde{\textbf h}_t]),\\ \textbf a^t_i=softmax(\textbf u^t_i),\\ \hat{\textbf h}'_t=\sum^m_{i=1}\textbf a^t_i\cdot \textbf h_i. \end{array} uit​=W2​tanh(W1​[hi​,h~t​]),ait​=softmax(uit​),h^t′​=∑i=1m​ait​⋅hi​.​
  然后,将部分输出表示h~t\tilde{\textbf h}_th~t​和注意力对话历史表示h~t′\tilde{\textbf h}'_th~t′​进行拼接,以通过UUU将其映射到词表空间V\mathcal VV,以计算下一个单词生成的分数(logit):
ot=U[h~t,h~t],\textbf o_t=U[\tilde {\textbf h}_t,\tilde{\textbf h}_t],ot​=U[h~t​,h~t​],
  最终,下一个字符yty_tyt​的概率被计算为:
p(yt∣y1,...,yt−1,x,B)=softmax(ot).p(y_t|y_1,...,y_{t-1},\textbf x,B)=softmax(\textbf o_t).p(yt​∣y1​,...,yt−1​,x,B)=softmax(ot​).

3.3 Entity-Consistency Augmented Decoder

如第3.2节所示,我们可以看到,字符的生成仅基于对话历史的注意力,这使得模型会忽视KB实体。在本节中,我们介绍了如何通过两个步骤显式查询KB,以改善实体一致性,第一个步骤采用KB-retriever选择最相关的KB行,通过实体增强解码器生成的KB实体被约束到一行内最可能的实体。接下来,我们执行列注意力以选择最可能的KB列。最后,我们展示了如何使用复制机制在解码时合并所检索的实体。

3.3.1 KB Row Selection

在我们的框架中,我们的KB-retriever将对话历史和KB行作为输入,并选择最相关的行。此选择过程类似于从输入中选择一个单词以回答问题的任务,我们使用记忆网络来建模此过程。在以下各节中,我们将首先描述如何表示输入,然后我们将讨论我们的基于记忆网络的检索器。
  Dialogue History Representation。我们通过采用神经词袋(BoW)来编码对话历史。对话历史中的每个字符都通过另一个嵌入函数ϕemb′(x)\phi^{emb'}(x)ϕemb′(x)映射到矢量,对话历史表示q\textbf qq被计算为这些向量的总和:q=∑i=1mϕemb′(xi)\textbf q=\sum^m_{i=1}\phi^{emb'}(x_i)q=∑i=1m​ϕemb′(xi​)。
  KB Row Representation。在本节中,我们描述了如何编码KB行。每个KB单元被表示为单元值vvv的嵌入cj,k=ϕvalue(vj,k)\textbf c_{j,k}=\phi^{value}(v_{j,k})cj,k​=ϕvalue(vj,k​),并且神经BoW也用于表示KB行rj=∑k=1∣C∣cj,k\textbf r_j=\sum^{|\mathcal C|}_{k=1}\textbf c_{j,k}rj​=∑k=1∣C∣​cj,k​。
  Memory Network-Based Retriever。我们将KB检索过程建模为选择最可能支持响应生成的行。记忆网络已证明可以有效建模这种选择。对于n-hop记忆网络,该模型保留一组输入矩阵{R1,R2,...,Rn+1}\{R^1,R^2,...,R^{n+1}\}{R1,R2,...,Rn+1},其中每个RiR^iRi都是大小为∣R∣|\mathcal R|∣R∣的堆栈 ,其存储了(r1i,r2i,...,r∣R∣i)(\textbf r^i_1,\textbf r^i_2,...,\textbf r^i_{|\mathcal R|})(r1i​,r2i​,...,r∣R∣i​)。该模型还将查询q1\textbf q_1q1​作为输入。单跳记忆网络将选择第jjj个输入的概率aja_jaj​计算为:
π1=softmax((q1)TR1),o1=∑iπi1ri1,a=softmax(Wmem(o1+q1)).\begin{array}{cc} \textbf π^1=softmax((\textbf q^1)^TR^1),\\ \textbf o^1=\sum_i \textbf π^1_i\textbf r^1_i,\\ \textbf a=softmax(W^{mem}(\textbf o^1+\textbf q^1)). \end{array} π1=softmax((q1)TR1),o1=∑i​πi1​ri1​,a=softmax(Wmem(o1+q1)).​
  对于多跳情况,通过堆叠单跳记忆网络的层,并将第(i+1)(i+1)(i+1)层网络的查询qi+1\textbf q^{i+1}qi+1计算为:
qi+1=qi+oi,\textbf q^{i+1}=\textbf q^i+\textbf o^i,qi+1=qi+oi,
最后一层的输出被用作整个网络的输出。有关记忆网络的更多详细信息,请参阅原始论文。
  在获得a\textbf aa后,我们将检索结果表示为0-1矩阵T∈{0,1}∣R∣×∣C∣T∈\{0,1\}^{|\mathcal R|×|\mathcal C|}T∈{0,1}∣R∣×∣C∣,其中TTT中的每个元素都被计算为:
Tj,∗=1[j=argmaxiai].(1)T_{j,*}=1[j=\mathop{argmax}\limits_{i}\textbf a_i].\tag{1}Tj,∗​=1[j=iargmax​ai​].(1)
  在检索结果中,Tj,kT_{j,k}Tj,k​表示第jjj行第kkk列的实体是否和最终响应生成相关。在本文中,我们进一步将TTT平铺为一个0-1向量t∈{0,1}∣E∣\textbf t∈\{0,1\}^{|\mathcal E|}t∈{0,1}∣E∣ (其中∣E∣|\mathcal E|∣E∣等于∣R∣×∣C∣|\mathcal R|×|\mathcal C|∣R∣×∣C∣),来作为我们的检索行结果。

3.3.2 KB Column Selection

在获得表示哪个KB行与生成最相关的检索结果之后,我们进一步在解码时刻执行列的注意力,以选择可能的KB列。对于KB列的选择,我们采用与Eric et al. (2017) 相同的方法,即使用解码器隐藏状态(h~1,h~2,...,h~t)(\tilde{\textbf h}_1,\tilde{\textbf h}_2,...,\tilde{\textbf h}_t)(h~1​,h~2​,...,h~t​)来计算列属性名嵌入的注意力分数。注意力分数c∈R∣E∣\textbf c∈R^{|\mathcal E|}c∈R∣E∣可以计算为:
cj=W2′tanh(W1′[kj,h~t]),\textbf c_j=W'_2tanh(W'_1[\textbf k_j,\tilde{\textbf h}_t]),cj​=W2′​tanh(W1′​[kj​,h~t​]),
其中,cj\textbf c_jcj​是第jjj个KB列的注意力分数,kj\textbf k_jkj​被表示为KB列名称的嵌入。W1′,W2′W'_1,W'_2W1′​,W2′​以及tT\textbf t^TtT是模型可训练的参数。

3.3.3 Decoder with Retrieved Entity

在完成行选择和列选择之后,我们可以将最终检索的KB实体分数定义为行检索结果和列选择分数之间的逐元素点积,这可以计算为:
vt=t∗c,(2)\textbf v^t=\textbf t*\textbf c,\tag{2}vt=t∗c,(2)
其中,vtv_tvt​表示最终的KB检索实体分数。最后,我们采用Eric et al. (2017) 中的方法使用复制机制合并检索的实体,这可以定义为:
ot=U[h~t,h~t′]+vt,\textbf o_t=U[\tilde{\textbf h}_t,\tilde{\textbf h}'_t]+\textbf v^t,ot​=U[h~t​,h~t′​]+vt,
其中,ot\textbf o_tot​的维度为∣V∣+∣E∣|\mathcal V|+|\mathcal E|∣V∣+∣E∣。在vt\textbf v^tvt中,小于∣V∣|\mathcal V|∣V∣的位置设置为零,其余的∣E∣|\mathcal E|∣E∣位置为检索实体分数。

4.Training the KB-Retriever

如第3.3.1节所述,我们采用记忆网络来训练我们的 KB-retriever。但是,在Seq2Seq对话生成中,训练数据不包含对KB行检索结果的标注,这使得无法使用有监督的训练。为了解决这个问题,我们为我们的KB行检索器提出了两种训练方式:1)在第一种方法中,受到最近远程监督方法在信息抽取领域成功的启发,我们利用了KB中的字符串和参考响应之间的相似度,并设计了一组启发式方法来提取KB-retriever的训练数据。2)在第二种方法中,我们没有将KB-Retriever作为独立组件训练,而是和Seq2Seq对话生成进行联合训练。为了使等式1中的检索过程可微分,我们将Gumbel-Softmax作为训练过程中argmaxargmaxargmax的近似。

4.1 Training with Distant Supervision

尽管很难获取KB-retriever中有标注的检索数据,但我们可以从参考响应来“猜测”最相关的KB行,然后获取弱标注数据。 直观上,对于通常属于同一个主题的对话中的当前语句,在整个对话中包含最大实体匹配数目的KB行应该被选择。在我们使用远程监督的训练中,我们进一步简化了假设,即通常属于一个主题的对话只与一个最相关KB行匹配,这意味着在进行kkk轮对话时,我们可以为检索器构建kkk对训练数据,并且所有输入(u1,s1,...,si−1,ui∣i≤k)(u_1,s_1,...,s_{i-1},u_i|i≤k)(u1​,s1​,...,si−1​,ui​∣i≤k)样例都具有相同的弱标注的KB检索结果T∗T^∗T∗。
  在本文中,我们计算每行与整个对话的相似性,并选择最相似的行T∗T^∗T∗。我们将每行的相似性定义为一行内匹配的实体跨度数。以图1中的对话为例,第四行的相似性等于4,与“ 200 Alester Ave”,“gas station”,“Valero”和“road block nearby”相匹配,第七行的相似性等于1,只有“road block nearby”匹配。
  在具有远程监督检索器的模型中,检索结果作为Seq2Seq生成的输入。在训练Seq2Seq生成期间,我们使用弱标注的检索结果T∗T^∗T∗作为输入。

4.2 Training with Gumbel-Softmax

除了将行检索结果视为生成模型的输入,并独立训练kb-row-retriever外,我们还可以以端到端的方式和Seq2Seq对话生成一起进行训练。这种训练方案的主要困难是,离散的检索结果是不可微分的,并且生成模型的训练信号不能传递给回retriever的参数。Gumbel-Softmax技术已显示出能够实现离散变量的有效近似,并被证明在句子表示中起作用。在本文中,我们采用Gumbel-Softmax技术来训练 KB retriever。我们使用如下方式作为TTT的近似:
Tj,∗approx=exp((log(aj)+gj)/τ)∑iexp((log(ai)+gi)/τ,T^{approx}_{j,*}=\frac{exp((log(\textbf a_j)+\textbf g_j)/\tau)}{\sum_i exp((log(\textbf a_i)+\textbf g_i)/\tau},Tj,∗approx​=∑i​exp((log(ai​)+gi​)/τexp((log(aj​)+gj​)/τ)​,
其中gj\textbf g_jgj​是从Gumbel(0,1)Gumbel(0,1)Gumbel(0,1)中采样(首先通过u∼Uniform(0,1)u\sim Uniform(0,1)u∼Uniform(0,1)获取样本,然后计算g=−log(−log(u))\textbf g=-log(-log(u))g=−log(−log(u)))的独立同分步的样本,并且τττ是控制分布平滑度的常数。TjapproxT^{approx}_jTjapprox​用于替换方程1中的TjT_jTj​,并通过相同的扁平和扩展过程来得到vtapprox′\textbf v^{\textbf t^{approx'}}vtapprox′,并且通过logit传递了来自Seq2Seq生成的训练信号:
otapprox=U[h~t,h~t′]+vtapprox′.\textbf o^{approx}_t=U[\tilde{\textbf h}_t,\tilde{\textbf h}'_t]+\textbf v^{\textbf t^{approx'}}.otapprox​=U[h~t​,h~t′​]+vtapprox′.
为了使Gumbel-Softmax训练更加稳定,我们首先通过通过远程监督预训练KB-retriever来初始化参数,并进一步微调我们的框架。

Entity-Consistent End-to-end Task-Oriented Dialogue System with KB Retriever翻译相关推荐

  1. End-to-End Knowledge-Routed Relational Dialogue System for Automatic Diagnosis翻译

    摘要 除了当前引起越来越多关注的对话聊天机器人或面向任务的对话系统外,我们进一步开发一种自动医学诊断的对话系统,该系统通过与患者对话,以收集超出其自我描述以外的其他症状,并自动诊断.除了对话对话系统自 ...

  2. 论文阅读笔记:A Network-based End-to-End Trainable Task-oriented Dialogue System

    提示:阅读论文时进行相关思想.结构.优缺点,内容进行提炼和记录,论文和相关引用会标明出处. 文章目录 前言 Abstract Introduction Model Intent Network Bel ...

  3. A Network-based End-to-End Trainable Task-oriented Dialogue System

    abstract 让机器去和人类自然的交谈是具有挑战性的.最近的任务型对话系统需要创造几个部分并且通常这需要大量的人工干预,或者需要标注数据去解决各部分训练的问题.在这里我们提出了一种端到端的任务型对 ...

  4. Dialogue System for Unity文档中英对照版(简雨原创翻译)第四篇(关于主流ui插件拓展相关)

    接续上一篇 UnityQuest Log Window (Old) Thissection applies to the old Unity Quest Log Window. TheUnity Qu ...

  5. Dialogue System for Unity文档中文对照版(简雨原创翻译)第一篇(我们开始仙剑demo的剧情)

         这篇文档本身有快300页,因为实在太多,所以不像前面的插件那样翻译的,很多地方直接用了机翻,因为文字量实在太大,如果翻译完全套,再加上讲解的话,估计要花几个月的时间,对于普通的程序来说,其实 ...

  6. Dialogue System for Unity文档中英对照版(简雨原创翻译)第五篇(第三方插件拓展)

    接续上面,很遗憾这里开始讲一些第三方插件的使用了,但是我们手头没有这些收费的东东,只可以去官网看下在线的运行效果(国内谁买个全套的,分享下呀) 官网地址在这里 To set up and play t ...

  7. Dialogue System for Unity使用(三)本地化语言

    文章目录 前言 一.添加多语言功能 二.导入/出CSV文件 1.导出CSV文件 2.读入数据 总结 前言 本地化语言,也就是多语言切换在大点的项目里是必备的功能,通常我们用ID或字段进行标记某一段话, ...

  8. 【论文笔记】End-to-End Knowledge-Routed Relational Dialogue System for Automatic Diagnosis

    写在前面 hello大家好,我是fantasy,今天起打算在这里分享自己在NLP上的所学所得,第一篇博客相当于对整篇论文的翻译,并不能算严格意义上的论文"笔记",希望之后可以越写越 ...

  9. U3D对话任务插件 Dialogue System for Unity 研究(六)

    这篇是关于在对话插件中,使用U3D情感插件 Love/Hate 的. Love/Hate能实现一些送礼,偷东西,表扬,辱骂等行为感情的变化,感情也可以分特别多. 我装这个Love/Hate是因为和对话 ...

最新文章

  1. 认清Hadoop和Spark的这几点区别,学习时才能事半功倍
  2. C# Task的使用
  3. ELK Stack (1) —— ELK + Redis安装
  4. python降维——局部线性嵌入算法(LLE)
  5. 读《构建之法》第四,十七章有感
  6. 为什么说车联网安全将成为热门产业
  7. linux自学笔记--DNS服务器
  8. C# DataTable Compute方法的使用
  9. VMware“该虚拟机似乎正在使用中”问题
  10. 清除内外边距(HTML、CSS)
  11. 处理增删改_实现数据的增删改查
  12. 彻底了解HASH算法及应用(一)
  13. 在shell或bash执行一个bin文件或者脚本的流程
  14. SylixOS 任务调度源代码分析
  15. 数值计算软件有哪些?一款国产软件非常亮眼。
  16. RiceQuant开源项目Rqalpha运行演示策略的错误“ERROR 'figure' is an unknown keyword argument”...
  17. 谷歌浏览器利用开发者工具截取长图
  18. 计算机程序员求职信英语作文,程序员英文求职信范文
  19. matlab里逻辑符号,下列符号中不属于MATLAB逻辑操作符的是()
  20. 常见排序算法时间复杂度和空间复杂度

热门文章

  1. NLP分词中的2750个停用词和9995个同义词
  2. 使用Date得到时间差
  3. android视频动态壁纸app,动态壁纸视频桌面
  4. 谷歌通过Chrome简化登录安卓密码支持
  5. 串口服务器 文档,串口服务器助手
  6. Macleod薄膜专题设计中高级课程
  7. 物理学在现代科技中的应用有哪些?
  8. 直播系统开发的改变可以给平台带来什么?
  9. python爬虫类型_Python爬虫:爬取国内所有高校名称、类型、官网
  10. Ubuntu-16.04 Media change: please insert the disc labeled 的解决办法