现有的方法通常将以前的对话状态与对话历史连接作为编码器的输入。它们依赖于编码器的自我注意机制来连接其中的 token。然而,编码器可能会注意到虚假的联系,从而导致错误的推断。
最近的工作 (Kim 等人,2019;Zhu 等人,2020)(SOM-DST) 表明,之前的对话状态已经可以作为对话历史的明确、紧凑、信息丰富的表现;因此,我们不需要使用完整的对话历史,而只需要使用部分对话历史与之结合。一般来说,连接后的输入被输入到一个双向 Transformer 中用于编码,在此基础上提取新的状态。
在本文中,作者提出构造一个将先前对话状态的域、槽和值正确连接起来的对话状态图。通过训练,图节点和边缘嵌入可以编码域域、槽槽和域槽之间的共现关系,反映了一般对话中的强过渡路径。用 Relation-GCN 编码的状态图被融合到 Transformer 编码器中。
本文的工作主要集中在状态图的利用上。因此,将使用 Kim 等人最近提出的有效模型(SOM-DST)(2019)作为基础模型。在下面的小节中,将在状态图之前简要描述基本模型中的组件。
, 编码器的输出表示为:
状态预测,与 SOM-DST 类似,分为:CARRYOVER, DELETE, DONTCARE,UPDATE 且只有在预测为 UPDATE 时解码器才生成一个新的槽值。
解码器在编码器的输出序列上采用 GRU 网络以及拷贝机制,h_{cls}^L 被用来初始化 GRU 的初始隐藏状态,为了得到每一个词的概率,在解码的第 i 步利用拷贝机制:
W_e \in \R^{|V| \times d_h} : 单词嵌入矩阵,跨编码器和解码器共享 H^L \in \R^{|x| \times d_h}: 解码器的输入 P_s^i \in \R^{|V|}: 词表分布 P_c^{'i} \in \R^{|x|}: 输入分布 \alpha = softmax(W_{\alpha} [si;e{v_j^i};ci;g{cls}]):其中 c_i = Pc^iH^L 为上下文向量, g{cls} = softmax(\frac{h_{cls} G^{'T}}{\sqrt{dh}}) G^{'} 为状态图的表示,是利用 h{cls} 作为 query 查询得到的状态图表示。G^{'} 为 GCN 更新后的图节点嵌入,包括值占位符中的隐藏状态。图节点的嵌入将在下一个小节中进行描述。
状态图的构建。堆叠的双向 Transformer Block 利用自注意力机制相当于为输入构建一个完全图(全连接),图中的每个节点表示为 H^{l-1} = [H_{cls}^{l-1},h1^{l-1},...,h{sl1}^{l-1},...,h_{sl_J}^{l-1}] (对于第 l 块) , 之前提到这个图会非常巨大,会包含一些不怎么正确的链接(噪声)从而影响模型的推理能力。
由于对话框状态是历史的一个紧凑的表示,直接从它中构建一个多关系图(见上图):给定先前对话状态 S_{t-1} = {(d_j,s_j,v_j) | 1 \le j \le J } 每一个元组都由 域节点 和槽值节点(占位符)并由 MARKDOWN_HASHb17b5f108a0418c15bc57aa03b31977eMARKDOWNHASH 连接。请注意,图中只包含具有填充值的(域、插槽)对(NULL 和 dontcare 除外)。此外,如果两个域节点在 S{t−1} 中同时出现,则添加一个共现边来连接它们。创建共现边是为了 捕获对话中自然相关的域和对话转换 。 插槽边是单向的,而共现边是双向的。
每个域节点或插槽边都有自己的嵌入向量,记为 E([...]),如下图所示:
以前的工作通常假设每个(域、槽)对相互独立。在本文的工作中,从数据中训练出来的 域节点 和槽边 嵌入可以编码 域 - 域 、 槽 - 槽 和域槽共现 ,这可能有助于 DST。此外,由于有许多插槽值(MultiWOZ 数据集中的 4500),并且我们不假设它们是预定义的,因此MARKDOWN_HASH635689d558e216392894fe1b43fb4d33MARKDOWNHASH。相反,这些位置会被在[SLOT] 位置上的输出动态地填充,即 {c{sl1}^l,...,c{sl_J}^l }。有了这些上下文化的隐藏状态、与上下文无关的图节点和边缘嵌入,在对话状态图上的推理可以包含不同域和插槽的局部上下文和全局信息。
给定一个状态图,我们必须决定:
如上图所示,第 l-1 个 Transformer block 的输出为 H{cls}^{l-1} = [h{cls}^{l-1},...,h_{slJ}^{l-1},...] 被作为输入输入一个多头注意力层,其输出表示 C^l = {c{cls}^l,...,c_{cls_J}^l,... } 计算如下:
Q_j,K_j,V_j \in \R^{n\times d_k}: 为 H^{l-1} 通过 W_j^Q,W_j^K,W_j^V \in \R^{d_h\times d_k} 线性变换而来。
对于图中的一个值占位符,利用对应的 c_{sl_j}^l 填充它,该表示集成了一个元组的信息。然后利用 GCN 通过池化邻接节点的特征来更新节点表示,例如,对于域节点 d :
(v,sl) \in N(d): 表示相邻的值占位符和对应的插槽边,d^{'} \in N(d) 表示相邻的域节点; c_v^l: 占位符中的上下文化表示; W_S,W_I,W_O \in \R^{d_h\times d_h} : 分别为自环边、进入边和外出边的权重矩阵; e_d,eS,e{sl},e_{co} \in \R^{d_h}: 非别为域、自环边、插槽边、域共现边 的嵌入表示; f : 激活函数
因此,更新的域节点表示 g^l_{dj} 对上下文和图结构信息进行编码。然后,通过以下方法将 g^l{d_j} 与相应的 [SLOT] 位置的上下文表示进行融合:
在上的例子中,g^l_{dj} 与 c^l{slj} 融合,g^l{di} 分别与 c^l_{sli} 和 c^l{sl_{i+1}} 融合。
本文提出了一种快速和模块化的体系结构,称为显式分解 (EMD),在该结构中, 该结构结合了基于分类和基于提取的方法
,并设计了四个模块(三个分类和一个序列标记)来联合提取对话状态。基于 MultiWoz2.0 数据集的实验结果验证了,与最先进的方法相比,模型在复杂性和可伸缩性方面的优越性,特别是在多域对话纠缠着许多话语的情况下。
模型利用 MT-DNN(一个与 Bert 具有相同结构的多任务预训练模型,MT-DNN 已被证明是下游 NLP 任务的一个更好的上下文特征提取器),给定对话语句作为输入, MT-DNN 的输出为 {H_{[CLS]},H_1,H_2,...,Hn },n 为系统话语与用户话语拼接后的长度。句子级表示为 H{[CLS]}。基于这些上下文表示预测域和信念状态。
如上图的一个对话例子,本文将槽分为两类:
在多域对话中,目标域可能会随着对话的进行而发生改变。在之前的工作中直接使用 H_{[CLS]} 作为句子的表示,在本文中还加了个最后一轮的域结果 D_l 输入预测模型。其背后的基本原理是,当当前话语的域不明确时,Dl 可以为域识别提供有用的参考信息。该域被预测为:
E(\cdot): 利用 MT-DNN 将单词嵌入到一个分布表示中 D_c: 预测结果
上的分布:
具体来说,R 的损失被记为
的最终隐藏状态输入一个 softmax 层,对所有 S -type 插槽进行分类:
我们没有基于 直接预测 S -type 槽的结果,而是引入了一个域 - 槽匹配约束 R,它有助于避免生成不属于预测域的 S -type 槽。乘法运算如下:
\odot: 点积
:
以前的模型如 TRADE 都是每一步都从头预测,如果上下文变多了会增加噪音影响结果。相反,我们的模型的输入由当前回合的系统话语和用户话语组成,所以我们的模型只输出当前回合的对话状态的估计,并且之前的对话直接包括在了不需要重新预测的地方。
,分类器被表述为:
\hat{p} = \sum_{i=1}^{3} E(p^i)
, 最终联合损失为:
我们从测试数据集中选择 200 个样本,其中每个对话在系统和用户之间有 8 次以上的话语。然后,以第 6 号回合作为阈值,我们将对话内容分为两类,COLD、HOT。回合号小于 6 的迭代被分配给 COLD 类别,6 以上的迭代被分配给 HOT 类别。
Frame-based 的状态表示在现代面向任务的对话系统中被广泛应用,以建模用户的意图和插槽值。然而,域本体的固定设计使得很难扩展到新的服务和 API。
最近的工作提出,使用自然语言描述来定义域本体,而不是为每个意图或插槽定义标记名称,从而提供了一组动态的模式集。
但是,尽管有了新的方法和较好的效果,当前的模式引导的对话状态跟踪任务只对模式定义有限变化的单个数据集进行评估。目前尚不清楚该范式是如何推广到其他数据集和其他不同类型的描述的。
Frame-based: 根据对话框历史记录和预定义的域本体,在每个用户回合时预测一个对话框状态框架 Schema-based: 模式引导的对话状态跟踪与经典范式之间的关键区别是新添加的自然语言描述。
在本文中,作者进行了深入的比较研究,以理解自然语言描述在对话状态跟踪中的使用。该讨论主要包括三个方面:
Multi-Sentence Encoder Strategies:
Multi-domain Dialog State Tracking:
Transferable Dialog State Tracking:
如上图,每个服务的对话状态由 3 个部分组成:active-intent,requested-slots-ser-goals(slot-values), 在不失去一般性的情况下,对于 SG-DST 和 multiwoz2.2 数据集,根据之前对双策略 (DSS-DST) 的研究,将它们的槽划分为 分类槽 和非分类槽。因此,为了填充每个用户回合的对话框状态框架,本文提出了四个子任务:
上图展示了 3 个主要的模式组件: service,intent,slot。对于每个意图,模式还描述了其可选或所需的插槽。对于每个插槽,都有一些标志,指示它是否属于分类状态。分类意味着有一组预定义的候选值(布尔值、数字或文本)。
这些添加的模式描述提出了以下三个新问题,下面的讨论将回答下述问题:
在本节中,将重点讨论使用预先训练的 BERT 匹配对话框历史和模式描述的模型架构。为了支持四个子任务,首先扩展了双编码器和交叉编码器来支持句子级匹配和 token 级预测。然后,提出了一种额外的融合编码器策略,以在不牺牲准确性的情况下获得更快的推理。我们在上图总结了不同的架构。然后,我们显示了每个子任务的分类头和结果。
以上所有的 3 个编码器都将为给定的句子对产生句子级和标记级的表示。我们将它们抽象为两个表示 CLS 和 TOK,并展示为每个子任务做出决策的通用分类头:
除了编码器中使用的训练前微调框架外,建议 在预训练之后,对目标任务进行微调之前 ,为中间任务添加一个 补充训练阶段。它在目标任务上有了显著的改善。此外,大量基于预训练和基于 Transformer 的模型可以公开访问,并在模型中心中组织良好,用于共享、训练和测试。考虑到模式化对话状态跟踪的新任务,在本节中,我们研究了四个具有不同中间任务的子任务来进行补充训练。
如 Q1 所述,我们所有的 4 个子任务都以一对对话框和模式描述作为输入,并使用总和的句子对 CLS 表示进行预测。而 NonCat 也需要基于跨度的检测,如问答。因此,它们与以下句子对编码任务具有相似的问题结构:
Natural Language Inference: 给定一个假设 / 前提句子对,自然语言推理是一项任务,以确定一个假设是包含、矛盾或中性的前提
Question Answering: 给定一个段落 / 问题对,任务是在段落中提取基于跨度的答案
在本节中,我们还将研究 在一种描述风格上训练的模型将如何在其他不同风格上执行
,特别是在聊天机器人开发人员可能设计自己的描述的场景中。我们 首先
在研究中引入不同风格的描述,然后
我们在每种描述风格上训练模型,并
对具有相应的同质和异构描述风格的测试进行评估。考虑到上一节中显示的 交叉编码器
的最佳性能以及它在 DSTC8 挑战中的受欢迎程度,我们在本节中将其作为我们的模型体系结构。
对于每个意图 / 插槽,我们通过以下不同的描述样式来描述其功能:
发现服务描述对意图、需求和 CaT 任务没有帮助,而对 NonCaT 任务的影响也不同于 SG-DST 和 multiwoz2.2 数据集。
主要发现 SNLI 在意图任务上有帮助,SQuAD2 主要对 NonCat 任务有帮助,而它们在 Cat 任务上都没有太大帮助。
在本文研究中,我们研究了模式对话状态跟踪的三个问题:编码器架构、补充训练的影响和有效的模式描述风格。主要发现如下:
通过缓存 token 嵌入而不是单个 CLS 嵌入,一个简单的 部分注意融合编码器可以获得比双编码器更好的性能,同时推断速度仍然比交叉编码器快两倍
。我们通过对 两个中间任务的补充训练来量化增益
。通过根据最近的工作仔细选择具有代表性的描述风格,我们是第一个 在模式引导的对话框中对不同的描述风格进行齐构 / 异构评估
的方法。结果表明,简单的基于名称的描述在意图和要求任务上表现良好,而 NonCat 任务受益于更丰富的描述风格
。所有的任务在训练和测试之间的描述风格上都存在不一致,尽管不同程度各不相同。
我们的研究主要在两个数据集上进行:SG-DST 和 multiwoz2.2,而编码器架构的速度精度平衡和补充训练的发现预计 是数据集无关的
,因为它们更多地 依赖于子任务的性质
,而不是数据集。基于我们提出的基准测试描述套件,齐构和异构评估揭示了跨风格模式引导对话建模的鲁棒性,我们相信我们的研究将为未来的研究提供有用的见解。