DST 问题面临的问题包括跨域对话难以追踪以及数据稀缺。
我们的工作最类似于 TRADE,并通过提出自我和交叉注意力机制来捕捉位置和历史相关性。特别是,本文使用交叉注意在不同语义级别上的上下文和槽之间的模型关系,并使用自我注意来解决跨域共引用。此外,本文提出的体系结构并不依赖于事先了解域本体,也可以用于新域或看不见的插槽值的零镜头设置。
与 MultiWoZ2.1 数据集上目前的 SOTA 模型相比,我们的模型在全数据设置下的联合目标精度提高了 5%,在零镜头设置下提高了高达 2%。
定义到第 t 回合的对话历史为 C_t = {U_1,A_1,U_2,A_2,...U_t}, 其中 U_i, A_i 分别表示第 i 轮的用户话语和系统话语。令 S = {s_1,s_2,...,s_n} 表示所有 n 个可能的插槽。DST_t = {s_1:v_1,s_2:v_2,..,s_n:v_n} 表示第 t 回合的对话状态。若槽未被提及,其值为 "none"。DST 的任务为给定 C_t 预测 DST_t。
以往的对话状态常见状态中每个插槽值的预测作为分类问题,但是槽值有可能是 OOV 的,因此基于实体候选值的预测存在问题。TRADE 为了解决该问题提出了一种基于解码器的方案,同时使用生成和指向机制,使得模型能够生成未见槽值。
这篇论文是对 TRADE 的改进,重点改进 DST 的对话上下文和槽语义编码,以稳健地捕获槽和对话历史之间的重要依赖关系,以及对话历史中的共同引用。提出了一个 Multi-Attention DST(MA-DST)网络。它包含了槽编码和对话历史之间的多层交叉注意,以捕获 不同粒度级别
的关系,然后是一个 自我注意
层,以帮助解决对对话历史中早期槽提到的引用。
该模型对槽名 s_i 和对话历史 C_t 进行编码,然后解码槽值 v_i。模型包括一个用于槽名的 编码器 、一个用于对话历史的 编码器 、一个生成槽值的 解码器 和一个三类 槽门分类器 SG,它预测特殊符号{none、dontcare、gen},这将在后面详细描述。模型权值在槽之间共享,这使得模型更健壮和可伸缩。
本文提出的插槽 s_i 和对话历史 C_t 编码器使用了三个阶段的注意力:
对于 C_t 和 s_i,我们首先将每个单词投射到一个低维空间中。我们使用了一个 300 维的 GloVE 嵌入,和一个 100 维的字符嵌入,这两者都得到了微调。对于对话历史 C_t,我们还添加了一个 5 维 POS 标签嵌入和一个 5 维 NER 标签嵌入。我们还使用每个单词的转弯索引作为特征,并将其初始化为 5 维嵌入。
的 1024 维 ELMo 嵌入。我们只在训练模型时学习这些组合权重,而不是微调所有 ELMo 层的参数。所有的单词级嵌入都被连接起来,生成丰富的上下文单词级表示 e :
为了突出对话历史中的单词与插槽的关系,引入了二者词到词的注意力: $$ \alpha_{jk} = \frac{exp(f(We_j^C)Df(Wek^s))}{\sum{k=1}^{K} exp(f(We_j^C)Df(We_k^s))} \ \hat{a}^Cj = \sum{k=1}^{K} \alpha_{jk} * e_k^s $$
e_j^C, e_k^s 分别表示第 j 个上下文单词嵌入以及第 k 个槽名嵌入 f 表示非线性激活函数,为 ReLU
,我们将参与的向量与初始单词嵌入连接起来:
对于槽名称中每个单词 k 的槽表示,我们使用嵌入
槽名中每个单词和对话的计算表示 r^s_k 和 r_j^C,然后通过一个门控重复单元(GRU),为了对单词之间的时间交互进行建模,并得到一个上下文表示。对于每个 C_t 和 s_i,我们使用双向 GRU,并通过平均每个时间步长的每个 GRU 方向的隐藏状态来获得隐藏的上下文表示:
H_1^C 和 H_1^s 分别是会话历史和槽名的编码表示序列,由第一个双向 GRU 层输出(K 为槽名长度,J 为对话历史长度)。
我们在基础 RNN 层上添加了一个交叉注意网络,以参与由之前的 RNN 层生成的更高层次的表示,即 H_1^C 和 H_1^s。我们使用了双向交叉注意网络,一个从对话历史 H_1^C 到插槽 H_1^s,另一个在相反的方向。这一灵感来自于阅读理解方面的一些作品,其中交叉注意力被用来计算长段落和查询问题之间的关系。
槽到对话历史的注意子网络有助于突出显示对话中与我们想要生成值的槽相关的单词。与词级注意相似,注意力权重计算如下:
我们将插槽名中的每个单词的注意向量 \hat{h}_k^{s,1} 与其对应的隐藏状态 h_k^{s,1} 融合如下:
类似地,对话历史对槽的子网络计算注意权重来突出槽名称中的哪些单词与对话历史记录中的每个单词最相关。这用基于注意力的表示 \hat{h}_j^{C,1} 丰富了对话历史 h_j^{C,1} 中的单词表示,从而产生了一个新的表示 r_j^{C,1}。所有的计算都类似于对话历史注意的槽,但方向相反。
然后将表示 r_k^{s,1} 和 r_j^{C,1} 通过第二个双向 GRU 层,得到 h^{s,2}_k 和 h^{C,2}_j。这有助于将这些向量与时间信息融合在一起。
在对话表示 h^{C,2}_j 之上添加了一个自我注意网络。这一层有助于解决对话历史记录中跨话语的单词之间的相关性。我们引入这个子网络来解决用户引用之前话语中出现的插槽值的情况,这是对话中常见的现象, 自注意力计算如下:
对话中每个单词的最终表示 r_j^{C,2} 是自参与向量 \hat{h}_j^{C,2} 的合并表示和隐藏状态 h_j^{C,2} 的合并表示,根据公式 (9) 进行合并。
使用第三层 RNN 来获得会话历史记录的最终表示:
由于插槽名称的长度比对话历史记录要短得多,因此可以用更少的信息进行编码。因此没有使用额外的 RNN,而是使用线性转换来总结槽,以将槽表示减少为单个向量:
w^T 为训练过程中的用来学习的参数
最后,HC、3=[h_1^{C,3},h_2^{C,3},...,h_J^{C,3}] 是对话历史中的每个单词表示,而 h^{s,3} 是总结的槽名表示,两者都将在解码步骤中使用。
解码器网络是一个 GRU,它可以解码插槽 s_i 的值 v_i。在计算槽值中的每个单词的每个解码步骤 i 中,网络计算 两个分布:一个是所有词汇内词汇(单词生成分布)和一个是对话历史中所有单词的分布(单词历史分布)。这允许解码器生成在对话历史中出现但在训练数据的词汇表中不存在的看不见单词。这个公式消除了有一个包含所有可能的槽值的预定义本体的依赖性,这对自由形式的槽是有限制性的。由于能够生成看不见的插槽值,该网络非常适合零镜头用例。
通过结合对话历史表示的最后一个隐藏状态和总结的槽表示来初始化解码器:
其中 W 是一个可学习的参数。在每个解码时间步长 时,解码器在词汇表上生成一个概率分布:
解码器还通过使用指针网络生成对话历史中单词的概率分布,即计算对话历史中每个单词的注意力权重。为了生成最终的词汇表分布,我们取 的加权和:
为了避免对对话中不存在的插槽运行解码器,我们还训练了一个插槽门分类器。这是一个三分类器,它预测以下类别{none,dontcare,gen}。只有当分类器预测 gen 时,我们才能解码槽值。
利用标准的交叉熵损失,以多任务的方式训练网络。我们将插槽发生器(解码器)和 SG 分类器的损失组合如下:
传统上,对话状态跟踪通常使用基于本体的方法来解决,该方法基于所有槽值都预先已知的假设。然而,在实际情况下,不可能知道所有的槽值,对话状态跟踪模型经常遇到在训练中从未见过的槽值,也被称为未知槽值。这使得现有的方法表现不佳。
事实上,在一个未知的插槽值中,通常有不止一个词汇表外的单词,指针机制无法只通过单词嵌入来区分它们。由于解码过程中这种情况的输入不确定性,解码器的输出会逐渐发生偏差,导致未知槽值的误差。
一般来说,目前的开放词汇表 DST 方法基本上依赖于指针机制来解决未知的槽值问题。然而,指针机制在解码中面临着输入信息不确定的问题。当未知槽值中存在多个词汇外单词时,指针机制中的指针生成的未知槽值会发生偏差。
为了解决这个缺点,本文强调解码器的输入应该注入更多的信息,而不仅仅是单词嵌入。本文针对对话状态跟踪中的未知槽值问题,提出了一种新的上下文敏感生成网络 (CSG)。我们提出的模型将单词上下文信息连接到解码器的输入。这样,不同的词汇外单词可以 通过单词上下文信息来区分
,单词上下文信息也可以丰富单词的表示,而过去只能通过单词嵌入来表示。
如上图,绿色部分为 编码器,用于生成对话历史的向量表示和每个单词的上下文表示,其可以是任何编码模型如 Bi-LSTM 和 Bi-GRU。编码器的输入是对话历史 H=[w_1,...,wl]∈R^{l×d{emb}},这是对话历史中所有单词的连接。l 是对话历史的长度,d{emb} 是单词嵌入的大小。输出包含两个部分,一个是最终隐藏状态 S \in \R^{d{hid}},将作为解码器的初始隐藏层状态。另一部分为每一编码时刻的隐藏状态 OT = [o_1^{enc},...,o_l^{enc}]。在我们的模型中,我们假设 OT 不仅是对话历史的表示,而且是对话历史中每个单词的上下文表示。因此,OT 可以用于增强解码中 OOV 词汇的表示。
用于生成对对话历史的注意力分布: p_t^{history} = softmax(OT\cdot (o_t^{dec})^T) 然后,输入对话历史中槽值的第 pos_t = {argmax} \text{} pt^{history} \ i \in [1,...,l] 在解码的第 t+1 步,传统的指针网络将第 t 步选择出的嵌入 w{post} 作为解码器 I{t+1} 的输入。然而 OOV 词汇嵌入中的信息是不完整的,不能有效地表示单词。因此,本文提出的模型融合了单词的嵌入以及上下文表示作为编码器的输入: I{t+1} = com(w{post}, o{pos_t}^{enc})
在本文中,我们认为单词不仅应该有词汇表空间表示,即单词嵌入 w_{pos_t},而且还应该有上下文表示。在传统的编码器 - 解码器模型中,通常只考虑单词嵌入,而忽略上下文表示。当一个单词是一个词汇外的单词时,通常使用一个统一的单词嵌入“UNK”来表示这个单词。这样,这个词的信息就不能得到充分的表示,这将导致结果的偏差。因此,我们建议将单词的嵌入和上下文表示相结合,不仅可以提高单词中的信息,而且可以有效地解决未知的槽值问题。
为了有效地利用单词上下文信息,我们提出了将单词上下文信息与单词嵌入相结合的不同方案,如下:
上下文表示法被直接用作单词的表示法:
单词嵌入和上下文表示的和被用作单词的表示:
使用单词嵌入和上下文表示的连接作为单词的表示:
上述三个单词的上下文利用方案是为了探讨不同情况下不同的上下文利用方式。在特定的对话状态跟踪系统中,模型的实现基本上是异构的,因此不同的上下文利用方案可能会产生不同的效果。接下来,将通过实验分析来详细说明它。
零镜头跨域对话状态跟踪 (DST) 使我们能够在看不见的领域内处理面向任务的对话,而无需花费收集域内数据的费用。因此研究能够使用很少或没有域内数据构建健壮和可扩展的对话系统的方法是非常重要的。
本文提出了一种零镜头跨域 DST 的 槽描述增强
生成方法。具体来说,模型首先用预先训练好的自注意编码器对对话上下文和插槽进行编码,并以自动回归的方式生成插槽值。此外,我们还结合了槽类型的信息描述,以捕获跨槽的共享信息,以促进跨领域的知识转移。在 MultiWOZ 数据集上的实验结果表明,本文提出的方法在零镜头跨域设置中显著改进了现有的最先进的结果。
:
这个生成过程的学习目标是最小化给定 的负对数似然,即:
n 为追踪的槽的数量
我们使用 T5 初始化模型参数,这是一种具有相对位置嵌入的编码器 - 解码器变压器,对大量英语文本进行了预训练。我们将我们的模型表示为 T5DST。为了将插槽描述合并到 T5DST 中,我们将插槽名称替换为相应的插槽描述作为模型输入。
虽然不同的槽可能有不同的名称,但它们可以共享相同的槽类型。如上表所示,酒店星级和餐厅预订人员的插槽类型都是 数字插槽 ,而酒店互联网和酒店停车场都是 布尔插槽。根据这些观察结果,我们 \color{olive}{假设在槽描述中添加槽类型信息有助于不同槽之间的知识转移}。我们为下面的域的“槽类型”构建一个模板 [slot \text{} type]\text{} of \text{}[slot] \text{} of\text{} the \text{} [domain]。我们表示槽描述为槽类型。更多细节见下表。
本文在 MultiWOZ2.0 数据集上评估了所提出的方法,该方法有 7 个域。本文使用了 Wu 等人的预处理和评估设置。其中 餐厅、火车、景点、酒店和出租车 领域被用于训练,因为测试集只包含这 5 个领域。
在零镜头跨域实验中,模型首先用四个域进行训练,然后在未见的域的测试集上进行评估。联合目标精度用于评价模型的性能。当且仅当所有的预测值都与 Oracle 值完全匹配时,生成的对话状态才被认为是正确的。
零镜头跨域实验结果见表 2。总的来说,与三个基线模型 TRADE,SUMBT 和 SimpleTOD++ 相比,T5DST 在平均联合目标精度方面取得了显著更高的性能。这些结果表明,该模型可以有效地捕获槽 - 上下文关系,从而更好地推广到未见的领域。
进一步在少镜头跨域设置下进行实验,模型首先在 4 个域上训练,然后用 1%、5% 和 10% 的目标域数据进行微调。如表 3 所示,模型在 5 个领域中的 4 个领域中都优于 DSTQA 模型。此外,本文的方法在现实世界的学习场景中更实际,因为它不需要一个完整的本体的监督。本文还进行了全面的实验,并将该模型与以前的方法进行了比较。结果见下表:
总之,本文提出的槽类型描述提高了 T5DST 在所有领域的零镜头性能。与人类标记和朴素的描述公式相比,它产生了平均 2% 的联合目标精度提高。这一结果表明,槽类型信息可以更好地捕获不同槽之间的共享属性(如时间、位置),从而促进 DST 的域知识传输
。