2020-ACL-TripPy: A Triple Copy Strategy for Value Independent Neural Dialog State Tracking
概要
多域对话以及开放词典设置使得对话状态追踪标的异常复杂。在本文中,作者充分利用了多种 拷贝机制
来填充槽值。一个槽的填充依赖于以下三种拷贝机制之一:
- 用户话语跨度预测:从用户输入中预测跨度作为槽值。
- 系统提示记忆:槽值从系统所保留的提示信息中获得,这解决了显示选择问题。
- 对话状态记忆:槽值可以从对话状态中已经包含的其他插槽复制值,以解决槽间共引问题。
实验表明该方法结合了 基于跨度的槽填充方法
和基于记忆的方法
的优点,以 完全避免使用候选值选择列表 。该策略简化了 DST 任务,同时在各种流行的数据集,包括 MultiWOZ2.1 的基础上实现了最先进的性能,其中我们实现了超过55%
的联合目标精度。
相关研究
最近,提出了一种称为 DS-DST 的混合方法,利用基于跨度和基于选择列表的预测进行槽填充预测(Zhang 等人,2019)。与生成方法相比,基于选择列表和基于跨度的方法使用现有的单词序列来填充插槽。DS-DST 通过用选择列表方法填充槽的子集,在某种程度上减轻了跨度预测的限制。
最近的研究似乎揭示了模型中的价值独立性水平和 DST 性能之间的权衡。BERT-DST(2019)仅依赖于跨度预测,但它的性能落后于至少部分依赖于预定义的候选值列表的方法。他们的模型在完全依赖于跨度预测时没有竞争力。相比之下,当模型仅依赖于选择列表插槽填充方法时,它在 MultiWOZ2.1 上获得了迄今为止的最佳性能。所提出的二元策略方法 DS-DST 有利于解决这两个极端的问题。
我们的工作通过引入一种依赖于跨度预测和记忆机制的三拷贝策略来解决这一限制。
问题定义
设长度为 T 的对话序列 $X = {(U_1,M_1),...,(U_T,M_T) }$,$U_t,M_t$ 分别表示第 t 回合的用户话语和系统话语。DST 模型的任务如下:
- 确定每一对话回合 $S={S_1,……,S_N}$ 中的任何 N 个
域 - 槽对
是否存在 - 预测每一个槽 $S_n$ 的值
- 追踪 $t \in [1,T]$ 之间的对话状态 $DS_t$
模型
模型架构如上图。用 BERT 编码对话上下文,并将生成的上下文表示转发给各种分类头,以解决 DST 的子任务。聚合序列表示作为槽门分类器的输入。token 表示的序列是对跨度预测器的输入。
模型的大致执行流程如下:
- 在对话的每一回合,将当前
用户话语
、先前系统话语
、对话历史
经过上下文编码器(Context Encoder)编码得到聚合表示和 token 表示。 - 对于每一个槽,槽门分类器(Slot gate)判断其是否在输入中被给出。
- 根据槽门的分类结果(Span prediction, Inform memory, DS memory)通过拷贝机制之一预测相应的槽值。
下面分别介绍其组成:
Context Encoder
使用 BERT(Devlin 等人,2018)作为编码器,在每个回合的对话框上下文中进行编码为:
$Ht = (U{t-1},M_{t-1}),...,(U_1,M_1)$: 为 t 回合前的对话历史
$R_t = [r_t^{CLS},r_t^1,...,rt^{seq{max}}]$: Bert 的输出序列
其中 $r_t^{CLS}$ 是整个回合的表示,包括对话上下文 $H_t$,其他向量都用于下游跨度预测任务。
Slot Gates
模型为每个 域 - 槽
对配备了一个槽门。这确保了多域 DST 的最大灵活性,因为对单个回合中可能出现多少个域没有限制。
在每一个回合 $t$ 中,槽门分类器都将所有插槽 $S_n$ 都从 $C = {none,dontcare,span,inform,refer}$ 分配一个类别。各类别的表示如下:
- none:表示槽不从当前回合得到值
- dontcare:槽可以接受任何值
- span:在 $U_t$ 上通过跨度预测获得值
- inform:用户引用了在 $M_t$ 上被提及的一个值
- refer:用户引用了一个在当前对话状态 $DS_t$ 中已经出现的值
槽门分类器的输入为 $r_t^{CLS}$,对于每一个 域 - 槽
对 $Sn$ 其输出为一个分布,表示每一个类别的概率:
$$
p{t,s}^{gate} (r_t^{CLS}) = softmax(W_s^{gate} \cdot r_t^{CLS} + b_s^{gate}) \in \R^5
$$
每一个槽门都由一个可训练的线性分类层实现。
对于槽值为布尔值的插槽被单独处理,其分类类别为 $C{bool} = {none,dontcare,true,false}$, 概率分布计算如下:
$$
p{t,s}^{bgate}(r_t^{CLS}) = softmax(W_s^{bgate}\cdot r_t^{CLS} + b_s^{bgate}) \in \R^4
$$
Span-based Value Prediction
改模块接受第 t 回合整个对话上下文的 token 表示 $[r_t^1,...,rt^{seq{max}}]$,计算过程如下:
每个跨度预测器都由一个可训练的线性层分类层实现,然后是两个平行的 softmax 层来预测开始和结束位置。而对于错误预测 ($end_t^s < start_t^s$) 没有特殊处理。在实际实践中,所产生的错误预测的跨度将仅仅被设为空。
System Inform Memory for Value Prediction
系统提示的记忆保存了第 $t$ 回合对话被系统提及的所有槽值。满足如下条件会激发该机制:
-
如果用户
积极
引用了它(如系统希望用户确定一个选择) -
用户仅仅显示地做出了选择但是跨度预测不可用时
$DS_t$ 中的一个槽值就需要其来填充,如下图中的红框中的对话:
其中域槽对 <restaurant,name> 被分类为 inform, 故其值会从系统提示的值中拷贝也即 fitzbililies restaurant,令 $DS_t^s = I_t^s$,其中,$s$ 是各自的域插槽的索引。
DS Memory for Coreference Resolution
对话越复杂,就越有可能需要解析 共同引用
。例如,餐馆的名字很可能是坐出租车的目的地,但在同一谈话中点出租车时可能不会明确提到餐馆。 共同引用
解决方案是具有挑战性的,因为如何形成引用的丰富多样性,以及 由于共同引用经常跨越多个回合
。
第三种拷贝机制利用 DS(对话状态)作为内存来解析共同引用。如果槽门预测用户引用了在 对话期间已经分配给不同插槽的值
,则可以引用的所有可能插槽上的概率分布为:
对于每个插槽,线性层分类层要么预测包含引用值的插槽,要么预测没有引用的插槽。
Auxiliary Features(槽门辅助特征)
一些最近的神经 DST 方法利用 辅助输入
来保存上下文信息。例如,SOM-DST 将对话状态添加到其单回合输入中,作为跨回合保存上下文的一种手段。
在本模型中,通过引入 $H_t$ 我们已经将上下文信息输入 BERT 中了。除此之外,我们还基于系统通知记忆和 DS 内存创建辅助特征。方法是生成了两个二进制向量 $a_t^{inform} \in {0,1}^N 以及 a_t^{ds} \in {0,1}^N$ 分别表示:
- 一个槽的值是否被系统提示过(基于系统提示的记忆)
- 一个槽的值是否在对话状态中被填充过(基于对话状态的记忆)
这些向量在后期的融合方法中被添加到 BERT 的输出中以及各槽门分类器的输入($r_t^{CLS}$)中去,即:
$$
\hat{r}_t^{CLS} = r_t^{CLS} \oplus a_t^{inform} \oplus a_t^{ds}
$$
Partial Masking
我们用 BERT 的通用 UNK 标记替换值,部分屏蔽对话框历史 $H_t$。掩蔽是部分的,因为它只应用于过去的系统话语。对于系统话语,所包含的值是已知的,其掩蔽也很简单。这种处理使得 该模型被迫关注历史背景信息,而不是对特定值的观察
。这将导致 更鲁棒
的表示 $r_t^{CLS}$,从而获得更好的整体槽门性能。
Dialog State Update
使用与 BERT-DST 相同的基于规则的更新机制来跟踪对话状态。在每个回合中,如果检测到一个值不是none
,我们都会更新一个插槽。如果预测一个插槽为none
,则该插槽将不会被更新。
实验
数据集
- MultiWOZ 2.1 多域
- WOZ 2.0 单域
- sim-M 单域
- sim-R 单域
主要结果
消融实验
分析
我们分析了 TripPy 在 MultiWOZ2.1 上的消融实验中的性能(见表 4)。我们的基线模型与 BERT-DST 相比最好;我们只以单个回合作为输入,只使用跨度预测从回合中提取值。由此产生的性能可与其他基于跨域的方法相媲美,如 DST- 读取器和 DST-span 等,并证实了 MultiWOZ 中的对话太复杂了,不能仅由这个信息提取机制来处理。
2021-ACL-Dual Slot Selector via Local Reliability Verification for Dialogue State Tracking
概要
问题动机
现有的方法通常从头开始预测对话状态。然而,每个回合中绝大多数插槽应该继承前一个回合的插槽值。因此,在每个回合中处理槽的机制不仅效率低下,而且可能由于冗余槽值的产生而导致额外的错误。
贡献
为了解决上述问题,我们设计了基于当前回合对话的 两段式 DSS-DST
,它由基于当前回合对话的 双槽选择器
和基于对话历史的 槽值生成器
组成。
双槽选择器从两个方面决定每个槽是更新槽值还是从前一个回合继承槽值:
- 如果它与当前回合对话话语之间有很强的关系(继承)
- 如果可以通过当前回合对话来获得高可靠性的槽值(更新)
选择要更新的槽允许输入槽值生成器,通过混合方法更新值,而其他槽直接继承上一个回合的值。实验结果表明,该方法在 MultiWOZ2.0、MultiWOZ2.1 和 MultiWOZ2.2 数据集上的联合准确率分别为 56.93%、60.73% 和 58.04%,取得了新的性能,具有显著的改进。
相关研究
传统的统计对话状态跟踪模型结合口语理解模块提取的语义来预测当前的对话状态,或者共同学习语言理解。随着深度学习和表示学习的最新发展,大多数关于 DST 的工作都集中于用深度神经网络编码对话上下文,并预测每个可能的插槽的价值。
这些模型极大地提高了 DST 的性能,但同时处理槽的机制效率低下,可能导致额外的错误。SOM-DST(Kimetal.,2020)把对话状态当作是一种显式的固定大小的内存,并提出了一种选择性的覆盖机制。然而,它也有局限性,因为它缺乏对插槽选择和本地对话信息之间关系的明确探索。
另一方面,对话状态跟踪和机器阅读理解 (MRC) 在许多方面都有相似之处。在 MRC 任务中,涉及到无法回答的问题,一些研究用直接的解决方案来关注这个问题。本文工作中的槽选择和局部可靠性验证的机制是受机器阅读理解中的回答性预测的启发。
模型
如上图所示,DSS-DST 模型包含Embedding
,Dual Slot Selector
,Slot Value Generator
三个组成部分, Dual Slot Selector 内又分为 Preliminary
和 Ultimate
两个部分。
具体来说,Preliminary Selector
简要地触及了当前回合对话话语和每个插槽的关系。然后,Ultimate Selector
获得每个插槽的临时插槽值,并计算其可信度。Ultimate Selector
的基本原理是,如果可以通过当前的回合对话获得具有高可靠性的插槽值,那么就应该更新该插槽。最终,所选的槽进入槽值生成器,并利用提取对话方法和基于分类的混合方法根据当前对话话语和对话历史生成值。
T 回合对话上下文表示为 $\mathcal{X} = {(R_1,U1),...,(R{t-1},U_{t-1}),(R_t,Ut),(R{t+1},U_{t+1}),...,(R_T,U_T) }$ , 假设有 $J$ 个预定义槽 $\mathcal{S} = {S_1,S_2,...,S_J}$ 其中 $S_j$ 表示第 $j$ 个槽。第 $t$ 回合的对话状态为 $\mathcal{B}_t = {(S_j, V_j^t) | 1 \le j \le J }$ 其中 $V_j^t \in \mathcal{V}_j$ 表示槽 $S_j$ 对应的槽值,$\mathcal{V}_j$ 表示槽 $S_j$ 的所有值的集合。
另外,本文使用 域 - 槽
对来指代槽信息,如一个完整的槽表示应该是 $\mathcal{restaurant-pricerange}$
Embedding
嵌入层的输入为 $X_t = [CLS] \oplus Dt \oplus B{t-1}$。$B_t=B_t^1 \oplus ... \oplus B_t^J,B_t^j = [SLOT]^j \oplus S_j \oplus - \oplus V_t^J $ 使用 ALBERT 作为编码器编码输入。对于每个 token,输入是输入 $Xt$ 和段 id 嵌入的和。对于段 id,我们对属于 $B{t−1}$ 的标记使用 0,对属于 $D_t$的标记使用 1。
编码器的输出表示为 $O_t∈R^{|Xt|×d},且 h^{[CLS]}_t、h^{[SLOT]^j}_t∈R^d$分别为对应于 [CLS] 和 $[SLOT]_j$的输出。为了获得每个对话和状态的表示,我们将 $O_t$分为 $H t 和 H {t−1}^B$,作为第 t 轮对话和 $t−1$ 轮对话状态的输出表示。
Dual Slot Selector
双插槽选择器由一个初步选择器和一个最终选择器组成,它们根据当前的回合对话框对每个插槽共同作出判断。
Slot-Aware Matching
插槽可以被视为一类特殊的问题,因此受到 MRC 中通道和问题之间的明确注意匹配的启发,我们将插槽表示作为表示 H 和输出表示 $H^{[SLOT]^j}_t$依次输入插槽感知匹配层:
输出表示 H 的每个位置与 t 回合的第 j 个槽之间的相关性。
Preliminary Selector
初步选择者简要介绍当前回合对话话语和每个槽的关系,以作出 初始判断
。对于第 t 回合的第 j 个插槽 (1≤j≤J),将其输出表示 $H^{[SLOT]^j}_t$ 和对话表示 $H_t$ 提供给 SAM 如下:
其中 $\alpha_t^j \in R^{N\times 1}$ 表示对话的每个位置与第 j 个槽的关系。然后我们得到聚合的对话表示 $H_t^j∈R^{N×d}$,并将其传递到一个完全连接的层,得到由第 j 个槽的选择和失败元素组成的分类,如下所示:
Ultimate Selector
最终选择器将对 $U_{1,t}$中的插槽做出判断。最终选择器的机制是获得槽的临时槽值,并通过 t 回合的对话计算其可靠性,作为每个槽的置信度。
首先预测其临时值 $\varphi_t^j$:
这里我们定义了 $V_j$,第 j 个槽的候选值集。如果 $\varphi^j_t$ 属于 $V_j$,我们计算其在所有可能提取的临时槽值中的概率,并计算 $Ult_score^j_t$ 作为第 j 个槽的分数:
如果不属于,我们使用基于分类的方法从 $V_j$中选择一个临时的插槽值:
我们选择 0 作为索引,因为 $V_j[0]=None$。
Threshold-base decision
基于阈值的决策,插槽选择的阈值 δ 是在我们的模型中设置和确定的。第 j 个槽的总分是预测的初步选择者分数和预测的最终选择者分数的组合:
Slot Value Generator
对于非继承的槽,由槽值生成器生成槽值。为了简单起见,我们将该过程概述如下,因为该模块使用了与最终选择器相同的提取方法和基于分类的混合方法:
值得注意的是,槽值生成器和最终选择器之间最大的区别是,槽值生成器的输入话语是之前 k−1 回合和当前回合的对话,而最终选择器只利用当前回合对话作为输入话语。
Optimization
在训练过程中,我们优化了双槽选择器和槽值生成器。
-
Preliminary Selector
-
Ultimate Selector
-
Slot Value Generator
本模块的训练目标 $L_{gen,t}$ 具有与最终选择器相同的训练目标形式。
实验
数据集
- MultiWOZ 2.0
- MultiWOZ 2.1
- MultiWOZ 2.2
主要结果
尽管在 MultiWOZ2.2 上的实验结果具有稀疏性,但我们的模型在现有的公共模型中仍然大幅领先。类似于(Kimetal.,2020),我们的模型在 MultiWOZ2.1 上比在 MultiWOZ2.0 上获得了更高的联合精度。对于 MultiWOZ2.2,分类槽的联合精度高于非分类槽。这是因为我们利用萃取方法和基于分类的混合方法来处理分类槽。然而,我们只能对非分类插槽使用提取方法,因为它们没有本体(即候选值集)。
消融实验
How to Tame Your Data: Data Augmentation for Dialog State Tracking
概要
问题动机
DST 问题的解空间的词表理论大小是不受限制的。因此,DST 推理过程中经常遇到一些未见过的词汇,导致模型不良的鲁棒性。
主要贡献
为了解决上述问题,本文提出了一个有针对性的 数据增强过程
,通过这个过程,从业者观察保留评估数据的错误类型,然后使用额外的语料库修改训练数据,以增加训练时的词汇量。
使用基于 RoBERTa-base 的 Transformer 架构,与只用特殊令牌屏蔽故障插槽的系统相比,实现了 最先进的结果
。此外,本文还提出了一种数据表示方案,用于无缝地重定向 DST 架构到新的领域。
方法
这项工作中的目标是创建一个健壮的,易于扩展的对话状态跟踪系统,如果模式和域发生改变,模型只需要很小的改变且不改变网络架构。
Language Model Based Transformer
为了生成这样一个通用的 DST 系统,作者重新制定了数据,使问题完全按照文本编码,而不依赖于专门的输出头。具体来说,通过执行以下操作:
- 话语级别的插槽激活 :当前话语中的插槽是否处于活动状态?如果是,插槽是否映射到特殊的
dontcare
令牌?也就是说,对于每个槽,我们预测一个slot
,none
,或dontcare
- Token 级插槽填充:对于输入中的每个令牌,它是在插槽中使用的还是其他的?
该模型旨在跟踪对话中每个回合的联合目标,表示为累积到该点的所有插槽值。我们不是在每个回合估计整个联合目标,而是预测它的变化——槽的添加
,对 槽值的修改
——并通过 应用这些变化来维护联合目标
。
Data Augmentation
在这些对话任务的数据集中有许多常见的问题,包括:
- 小数据集:注释、收集或手工修改可信的对话框是冗味和费时的。
- 开放类:鉴于许多这些任务的开放式性质,训练数据不能覆盖开放的范围(例如,餐厅名称或电影名称)
为了抵消这些问题,研究人员提出了许多不同的数据增强方案。在本文的研究开始时,我们尝试了 Chao 和 Lane(2019)使用的 10% 的槽特定 dropout 率,但我们的模型仍然过拟合于训练集。为了解决这一点,我们设计了以下处理过程:
- 确定问题插槽:检查在保留的评估集上的错误预测,以确定是否有某个插槽或意图没有得到很好的预测。
- 问题插槽的调整:为该插槽找到一个语料库的值,并在训练时从该语料库中随机插入一个值。
该方法在 Sim-R 和 Sim-M 数据集上几乎能够处理与时间、日期和人数等槽值集合较小的请求。但对于电影名、餐厅名等较大值域的请求处理效果不佳。
作者发现电影名在维基百科上有 42306 个之多,餐厅名更是多。因此在训练时用随机替换(50%)它们。
注意到,替代名有两个主要的影响。
- 通过随机替换真实值而不是简单的掩蔽,该模型能够学习更广泛种类的插槽值和值结构,而不是简单地依赖于名称周围的语法信息。
- 通过随机替换值,对话得更加难以遵循——类似于容易改变想法的用户——这迫使系统学习更好地跟踪用户(变化无常的)目标。
实验
数据集
- Sim-R
- Sim-M