为了建模槽间关系,本文提出了一种新的混合体系结构,它通过来自图注意网络的表示来增强 GPT-2,从而允许对槽值进行因果的、顺序的预测。模型体系结构捕获跨域的槽间关系和依赖关系。
总的来说就是,GPT 作为一个生成模型,其生成过程依赖于上一次的生成结果,因此对于第一回合的预测有不利的地方(第一回合没有上一次预测)。为了解决这个问题,并且充分利用之前的预测信息,利用图注意力机制来分享槽间关系以增强当前回合的预测。
这里简要介绍一下本文用到的图注意力机制,每一回合的带权无向图表示为 \mathcal{G}=(\mathcal{V},\mathcal{E}) , 定义一个邻接矩阵 S \in \R^{N\times N}, [S]_{ij}=0 \text{} if \text{} (v_i,v_j) \notin \mathcal{E} , 每一个节点 v_i 的特征表示为 x^i \in \R^F , 被集成进特征矩阵 X \in \R^{N\times F} , F 为 输入的特征维度大小。不难看出 SX 在数学上表示为将每个节点的特征与其所有邻居节点相集成(相加)。因此 S^kX = S(S^{k-1}X) 就表示将每一个节点的所有 k 跳邻居的特征相集成。
一个图注意力层将输入 X \in \R^{N \times F} 转换为一个输出 \mathcal{X} \in \R^{N\times G}。每一个 K 跳图注意力层由 P 个注意力头 \mathcal{A}^{(p)} 组成,包含 K 轮的特征聚集计算:
{Ak^{(p)}}^{K-1}{k-0} \in \R^{F\times G}: 线性特征映射 \sigma(\cdot): 非线性激活函数 E \in \R^{N\times N}: 注意力矩阵,计算如下
\mathcal{N}_i: 节点 v_i 的邻接节点 Q^{(p)} \in \R^{F\times F}: 用于计算注意力的可训练参数
通过上述机制,GAT 可以动态分配边的权重来聚合节点信息。
图注意力网络包含 l 层图注意力层 \mathcal{G}_l, 每一层都有自己的多头注意力机制。在 时刻 t , GAT 将输入特征 X_t^{(0)} 转换为输出特征 X_t^{(L)} :
本文采用 三步法
将 GNNs 合并到 GPT- 2 中进行对话状态跟踪(见上图)。在每个回合中,我们 首先
用 GPT- 2 和对话历史为实体中可能的域槽对和值生成特征。然后
,这些特征被输入一个 GAT,它捕获域槽和值之间的关系。 最后
,将在 GAT 的输出层产生的特征合并到 GPT- 2 的第二个应用程序中,该应用程序执行对话状态值的实际预测。
① 该模型在不知道基本真相的情况下,从对话历史中提取域槽嵌入; ② 域槽嵌入被传递到图注意网络中进行特征聚合和信息交换;②(a)-②(b)为实验中使用的两种图连接; ③ 将更新后的域槽特征输入相应槽的因果生成过程中。用红色阴影的 token 是模型输入,而用蓝色阴影的 token 是生成输出。为了更好地可视化,只提供了两个域插槽对(和)。
第一步是提取本体中域槽和值的特征。历史对话 H_t = uts{t-1}u_{t-1}...s_1, 实体 F=hotel \text{} name taxi \text{} departure... 其包含 所有 实体中的域槽对且域槽对 以固定的顺序出现,每个插槽之前都有一个简短的文本描述以为 GPT- 2 提供上下文。
为了在对话回合 t 时产生域槽特征,字符串 H_tF 被呈现给 GPT-2。由于域插槽是固定的,并且在 F 中以规定的顺序出现,所以在输入中的域插槽的位置和它们在 GPT- 2 输出层中的嵌入之间有一个直接的链接。例如,
使用两种类型的 GATs(两种图):DSGraph(DomainSlot)和 DSVGraph(DomainSlot-Value)。在 DSGraph 中,有 N_s 节点,每个节点代表一个域 - 插槽对。所有节点相互连接 ,允许节点相互交换特征信息。在 DSVGraph 中,有 N_s 域插槽节点和 N_v 值节点,其中每个节点都代表一个可能的值。如果一个值在域槽对的候选集中,则连接相应的值节点和域槽节点, 域 - 槽对之间没有连接。
在图操作后,只使用所得到的域插槽嵌入,因此我们提取输出张量 X^{(L)}_t 的第一个 N_s 项,并将它们收集到一个矩阵 G_t∈R^{N_s×h} 中。
最后,我们将字符串 H_t 馈入 GPT- 2 去预测对话状态。该模型需要生成输出 Y_t 序列化域槽对及其对应值:Y_t=hotel \text{} name \text{} Demon \text{} Hotel taxi \text{} departure \text{} 18:00…。在生成所有域插槽的值后,该模型将生成一个 $ 标记以结束生成过程。在实践中,发现该模型在生成过程中从未省略任何 N_s
本文旨在从两个方面(预训练目标、上下文表示形式)来探索序列到序列模型在 DST 上的应用。
我们直接将 Seq2Seq 模型应用于状态跟踪问题,其中编码器和解码器都是变压器。编码器的输入是对话上下文,并且解码器生成描述以给定上下文为条件的预测状态的格式 slot1=value1,slot2=value2,... 的字符串序列。根据我们表示对话上下文的方式,我们将考虑该模型的两种变体:
现有的训练前目标主要分为两类:掩蔽跨度预测(其中跨度长度可以为 1,对应于单词预测)和自回归预测。Bert 和 T5 的降噪设置属于前者,GPT-2 属于后者。对于生成对话建模,考虑了两种预训练风格。然而,目前尚不清楚哪种风格对理解对话更有效。为了研究这一问题,我们使用 T5 的去噪和前缀 LM 目标同时对编码器和解码器进行预训练,比较了跨度预测和自回归语言建模(ARLM)。
为了比较不同预训练风格的相对有效性,考虑了 3 种设置:
1)只对跨度预测的模型进行预训练;
2)继续对 (1)的模型进行 prefix LM 预训练;
3)仅对模型进行 prefix LM 预训练;
虽然很难定义一个直接适用于 DST 的目标任务,但我们考虑了一个看似远程的任务的替代预训练。== 总结:要正确地总结大量文本,模型需要能够从大量输入中提取关键语义,这在某种程度上具有与 DST 具有相似的问题结构。== 基于这种直觉,本文选择了 Pegasus 作为预训练任务作为比较的替代方案。
Pegasus:
生成式文本摘要
的量身定制的预训练任务尚未被挖掘 Our hypothesis is that the closer the pre-training self-supervised objective is to the final down-stream task, the better the fine-tuning performance. 关键区别是,掩蔽跨度是仔细识别的,而不是随机的
。 掩蔽跨度预测的预训练程序 (“span”、“span+ARLM”) 始终比单独使用“ARLM”表现更好
。即使“span”后继续“ARLM”,这个结果不仅可以在 MultiWOZ2.1-2.4 中看到,还在 WOZ2.0 和 DSTC2 中看到。
Pegasus 预训练的效果几乎与 T5 预训练一样好或更好,这表明一些特征可以在两个任务之间共享和转移。同样,这个观察结果在所有基准测试中都是一致的。这也证实了上述的结论,即 跨度预测目标对 DST 更有效
。
如果没有预先训练,模型质量就会像预期的那样下降严重。
仔细观察该模型产生的失败例子就会发现,循环上下文表示获得更糟糕结果的主要原因是,它们很难从早期回合的预测错误中恢复过来。由于先前预测的状态是对模型输入的反馈,只要模型在早期的回合中出现了错误,这个错误的预测将作为未来的输入进行,导致模型产生连续的预测错误。因此,我们认为,对于 DST 任务,提供模型对对话历史的充分访问可能仍然很重要,以便它能够学会在过去出现错误后学会纠正其预测
。
这篇文章主要研究不同粒度的上下文信息是如何影响对话状态追踪的。本文将对话状态追踪分为两种不同策略:
所有对话历史
获取每个槽值,优势是确保对话信息的 完整性
。但是由于 噪声问题 ,该策略很难正确跟踪 短依赖对话状态,例如对话历史中可能并不存在当前需要填充的槽的值。 当前回合对话
来更新以前的对话状态,主要特点是大大提高了对话状态预测的 效率
,避免了编码所有对话历史的高计算成本。但是该策略对 长依赖对话状态 跟踪也不是很有用,例如因为 缺少对话历史 内容而无法预测某槽的值。显然,不同粒度的上下文信息对追踪不同类型的对话状态中扮演着不同的角色。本文首先探讨了 不同粒度的上下文对状态追踪的影响有多大
。然后进一步探讨了 如何结合多个粒度来进行对话状态追踪
。最后,研究了 上下文信息粒度在少样本学习场景中的应用
。
D = (T_1,T_2,...,T_N) \ T_i = (S_i,U_i)
E = (B_0,B_1,B_2,...,B_N) \ B_i 是一个槽值对集合,表示第 i 轮对话的当前状态,B_0 为空
BN = tracker((T{N-G+1},...,TN),B{N-G}) \ G \in {1,2,...,N} 特别地,当 G=1 时有: B_N = tracker(TN,B{N-1})
时:
这种情况对应于从零开始预测状态的策略 (scratch-based)。同样地,该策略也是对话状态跟踪的一种特殊情况,其 上下文信息具有最大粒度 。由于不同对话中最大粒度 N 的大小不同,因此本文使用0 表示最大粒度
为了研究不同粒度的上下文信息如何对对话状态跟踪的影响,本文分析了几种不同类型的对话状态跟踪模型在不同数据集上的性能。为了获得更清楚的说明,本节将介绍详细的实验设置。
实验是在 5 个数据集上进行的:
Sim- M 和 Sim- R 分别是电影和餐厅领域的多回合对话数据集,是专门为评估对话状态跟踪模型的 可扩展性
而设计的。测试集中包含大量未知槽值,可以更准确地反映模型的 泛化能力
。
WOZ2.0 和 DSTC2 数据集都收集在餐厅领域中,并具有相同的三个插槽 food,area,price_range。这两个数据集提供了用户话语的自动语音识别 (ASR) 假设,因此可用于验证模型 对 ASR 错误的鲁棒性。与之前的工作一样,使用用户的话语进行训练,并使用顶级 ASR 假设进行测试。
MultiWOZ2.1 是 MultiWOZ 的修正版本。与上述四个数据集相比,MultiWOZ2.1 是一个更具有挑战性和目前广泛使用的多回合 多域
对话状态跟踪的基准,由 7
个域、超过 30
个插槽和超过 4500
个可能的插槽值组成。根据之前的工作(Wu 等人,2019;Kim 等人,2020;Heck 等人,2020;Zhu 等人,2020),仅使用 5
个领域(restaurant、train、hotel、taxi、attraction),共有 30
个插槽。
第一个考虑多域对话状态跟踪
任务中 域间知识转移
的模型。它表示一个插槽作为 域名和插槽名的连接
,使用双向 RNN 编码所有对话历史,最后使用指针生成器网络解码每个插槽值(Wu et al.,2019) 只解码当前对话回合中提到的槽的槽值
,然后使用 基于规则的更新机制从先前状态更新到当前回合状态
。它使用 BERT 编码当前对话回合,并从对话中提取插槽值(Chao and Lane,2019) 可选择性覆盖的显式记忆
,并将其与当前回合对话一起输入到 BERT 中。然后将每个槽值的预测分解为 操作预测
和槽生成
(Kim et al.,2020) 对话会话级别
而不是 对话回合级别
进行训练和评估。模型中使用 BERT 编码回合级对话,并使用单向 RNN 捕获会话级表示(Lee et al.,2019) 除了 SOMDST 和 SUMBT 使用模型的官方源代码外,其他基线模型都经过重构,其中所有的 BERT 模块都使用预训练 BERT,其拥有 12 个隐藏层每层 768 个单元以及 12 个自注意力头。所有 RNN 都使用 GRU。使用 Adam 作为优化函数。为所有模型定制了 训练阶段
,当模型在开发集上的性能连续 15 个阶段没有提高,所有结果在不同随机种子的三次运行中进行平均时,训练提前停止。
由于对话历史记录的长度与粒度有关,因此模型的输入长度需要适应粒度。特别是对于以 BERT 为编码器的模型,为了防止输入被截断,我们将最大粒度序列长度设置为超过所有输入。
使用联合 精度(Joint acc)
和 槽精度(Slot acc)
进行评估。联合精度是检查每个回合中的所有预测槽值是否与真实槽值完全相同的精度。槽精度是所有回合槽值预测的平均精度。
不难发现,一些模型并没有使用合适的粒度,而当使用一个合适的粒度时,其性能得到了很大的提高。比如 SpanPtr 在 WOZ2.0 数据集上的 Joint Acc 在 粒度为 -3
时提高了接近20%
。
这些结果表明,在不同粒度下的对话状态跟踪 存在显著差异
,因此,我们 == 应该小心地根据模型和数据集的特征来确定要使用的粒度。==
通过观察表 3 中不同模型和数据集的实验比较结果,可以发现:
编码生成
的模型更 喜欢更大的粒度
,因为它需要 更多的上下文信息来有效地学习基于词汇的分布
。例如,TRADE 和 SOMDST 在更大的粒度上都表现得更好。同时,具有 提取解码
的模型 更依赖于数据集的特征
。此外,一般来说,编码生成模型比提取解码模型具有明显的优势。 更有效地捕获对话状态跟踪数据中的长期依赖关系
,如 MultiWOZ2.1 数据集。对于更简单的单域数据集,其中有大量的 短依赖关系确定小粒度在对话状态跟踪中的有效性
。然而, 当有更多的对话导致每次信息更少时,可能需要更大的粒度来提供足够的信息
,例如,SpanPtr 在最大粒度的 DSTC2 数据集上表现最好。 根据上述分析,我们主要讨论 如何在对话状态跟踪中结合多重粒度,主要关注三个方面:
本文 在训练和推理阶段使用不同的粒度进行分析 ,结果如上图。可以看出,当我们在推理阶段确定上下文信息的粒度时,用其他粒度训练的对话状态跟踪模型仍然在该推理粒度下得到了 泛化
。甚至是在其他粒度下学习的一些模型,如图 2(b) 和(f)中的 BERT-DST,也能表现得更好。
同时,还可以发现,随着粒度间隙的增大,上下文信息越来越不一致,最终模型跨粒度泛化的能力逐渐降低。通过这些现象,我们可以总结如下:对话状态跟踪模型在不同粒度的上下文信息中学习到的知识是可迁移的,粒度间的差距越小,就会带来更多的知识迁移效应
。
然后,利用不同粒度的上下文信息之间的知识传递来改进基线。在具体的实验中,在模型的训练阶段中添加了 最相邻的粒度
,即两个粒度下的上下文用于训练,而推理阶段保持不变,如上表所示。
可以观察到,在大多数情况下,基线模型的性能得到了 显著的提高
,这表明在模型的 训练阶段添加更多的粒度上下文信息确实可以提高对话状态跟踪模型的泛化性
。当然, 在某些情况下,多粒度组合会降低性能
,例如 DSTC2 数据集上的 SpanPtr、TRADE 和 BERT-DST。造成这一现象的主要原因应该是 多粒度组合中不同粒度的上下文信息之间的大偏差
,从 DSTC2 数据集上 SpanPtr、TRADE 和 BERTDST 与其他粒度的大量减少可以看出。
鉴于多粒度组合可以提高泛化性能,在训练阶段获得更多关于不同粒度的上下文信息是否更好?
为了回答上述问题,本文在保持推理粒度不变的同时,逐渐在训练阶段增加了更大的粒度,实验结果见上图。可以发现,在训练阶段使用多粒度组合存在上限。一般来说,添加具有最小间隙的粒度会产生最佳效果,之后,随着粒度数的增加,性能就会下降。
考虑到 多粒度组合中粒度之间的知识迁移,本文探讨了多粒度组合在少样本学习场景中的应用。
上图显示了具有不同多粒度组合的模型的联合精度,以及在不同训练数据规模的 WOZ2.0 数据集上相对于基线模型的改进百分比。
可以发现,在不同规模的训练数据规模下,多粒度组合比单粒度比多粒度获得更好的性能
。此外,从(a)、(d) 和(e)中可以看出,多粒度组合的优势随着训练数据集规模的缩小而逐渐扩大。因此,多粒度组合在少镜头学习中的性能值得探索。
本文对所有 5 个数据集进行了详细的实验,以充分探索多粒度组合在少样本学习中的潜力,如上表所示。可以发现,多粒度组合在少样本学习中具有非常重要的影响 ,在某些情况下甚至可以相对提高10%
以上,如 Sim- R 和 WOZ 上的 SpanPtr2.0、Sim- M 上的 BERT-DST、WOZ2.0 上的 SOMDST 和 DSTC2 上的 SOMDST。同时,在少样本学习中,多粒度组合的上限可以更高,当在训练阶段增加更多的粒度时,可以获得更好的性能。
以上少样本学习中多粒度组合的实验结果表明,不同粒度上下文之间确实存在知识迁移,该模型可以通过学习不同粒度的上下文对话来获得更充分的对话建模
。
本文分析了现有两种传统对话状态跟踪策略在处理不同粒度上下文时的缺陷,并对不同粒度的上下文信息如何对对话状态跟踪的影响进行了全面的研究。大量的实验结果和分析表明:(1)不同粒度在不同情况下具有自身优势
;(2) 多粒度组合可以有效地改善对话状态跟踪
;(3) 多粒度组合在少镜头学习中的应用可带来显著效果
。在未来的工作中,动态上下文粒度可以用于训练和推理,以进一步提高对话状态跟踪。