现有的 DST 模型要么 忽略跨对话回合的时间特征依赖关系
,要么 未能在对话中显式地建模时间状态依赖关系
。
本文提出了时间表达网络 (TEN) 来联合建模 DST 中的两种时间依赖关系。
本文把先前的研究分为两大类:
时间特征依赖
关系如 SUMBT
使用循环网络来积累从 历史系统动作和用户话语
中提取的特征,然后在这些累积的特征的基础上建立一个分类器来进行状态预测。虽然隐式跟踪捕获了递归网络单元中的时间特征依赖,但状态依赖并没有被显式建模。
时间状态依赖
关系如 GLAD、NBT
显式跟踪方法首先构建一个分类器来预测每个回合的回合级状态,然后使用一个状态聚合器来进行状态聚合。
本文提出的模型为第三类,联合模型,其同时建模了两种时间依赖关系。
对话状态为一个槽值对集合,令 mathcal{S} 为预定义槽的集合,每一个槽 s in mathcal{S} , 令 mathcal{V}(s) 表示槽 s 的所有可能取值集合。引入额外的 token unknown 来表示未被确定的槽的值。并且定义:
令 mathcal{X} 表示状态空间,x in mathcal{X} 为一个状态。每一个状态配置 x 都可以被看作一个从 mathcal{S} 到 mathcal{V}^* 的映射函数 x(s):(槽与槽值的映射)
令 x_t 表示第 t 回合对话的状态,u_t 表示用户话语,at 表示基于上一个状态 x{t-1}的系统动作。令 y_t in mathcal{X} 表示第 t 回合的回合级状态,即用来捕捉当前话语的用户意图。系统根据 yt 和 x{t−1},通过确定性程序计算聚合状态 x_t。接下来我们将描述这个过程:
首先,对于每一个给定的槽 s , 定义一个在 mathcal{V}^ 上的运算 lhd。对任何的 v, v^{'} in mathcal{V}^{}(s) 有:
然后,拓展 lhd 运算到任意两个元素 x,y in mathcal{X} , 且 x lhd y 也是 mathcal{X} 中的元素:
最后,使用这个表示法,状态的聚合是精确地根据下式:
举个例子:
对话过程可以用一个随机过程 {(X_t,Y_t,A_t,U_t): t = 1,2,... }。在 DST 问题中,定义对话过程的概率度量 mathbb{P} 是未知的。但是本文给定了一个实现集合 mathcal{R} 来描述 mathbb{P},其中每一个 r in mathcal{R} 为一个对话,其形式为 {(x_t^{(r)},y_t^{(r)},a_t^{(r)},ut^{(r)}): t = 1,2,...) }。令 x{<t}(x_1,x_2,...,xt) , 并为 y{<t},a_{<t}mathbb{P}(xt | a{<t},u_{<t})
本节介绍了所提出的 TEN 模型,它由 动作操作编码器
、 层次编码器
、 回合级状态预测器
和状态聚合器
组成。
本文期望用一个概率图模型来表达 mathbb{P}(xt|a{<t},u_{<t}){H_t}, {Z_t} , 它们与 {Y_t}, {X_t} 共同构成一个马尔科夫链:
如此一来,将 TEN 表示为一个概率图模型结构如下图:
Z_t : 大小为 K_Z times |mathcal{S}| 的矩阵,每一列 Z_t(s) 的对应于一个槽 s in mathcal{S} , Z_t 被称为 动作 - 话语编码器 每一回合的维度为 K_Z . H_t : 大小为 K_H times |mathcal{S}|,每一列 H_t(s) 对应于一个槽 s in mathcal{S} , 在这里,循环网络 {H_t}层被用于捕获 时间特征依赖关系 ,而 H_t被称为 层次编码,其维度为 K_H. 在状态聚合中,我们引入了 因子图 来建模 状态依赖关系 。然后利用 信念传播 来减轻误差传播。它允许 Y_t 和 X_t 的软标签保持被建模。接下来,将详细解释每个模块。
该模块的功能是将输入系统的动作和用户话语总结为统一表示。该模块是一个 GRU,不妨将其表示为 GAE,GAE 的输入是一个任意长度的词嵌入序列 (bar{w}_1,bar{w}_2,...,bar{w}n) := bar{w}{<n}i 步获得一个隐藏向量 d_i,然后利用注意力机制对所有隐藏状态向量进行加权组合,构造输出向量 o。GAE 块的计算过程为:
W : GRU 的权重 theta : 注意力机制的可学习参数
对于每一个槽 s in mathcal{S} 两个编码的计算如下:
对于话语编码:
对于系统动作编码:
每个回合的系统动作可能包含几个短句。假设 a_t 包含 m 个短语。每个短语 b_t^i in a_t 被视为一个词嵌入,并让其词嵌入序列表示为 bar{b}_t^i。对于每个 i 和每个槽 s,bar{b}_t^i 被传递到 GAE 块中,动作短语向量 c_t^i(s) 被计算如下:
然后通过注意机制将动作短语向量组合到单个向量中。具体地说,动作编码是通过与话语编码 bar{u}_t(s) 相互作用得到的,计算为:
的连接。
在本模块中,没有只利用当前的动作话语编码进行回合级状态预测,而是引入了 分层递归网络 来建模 回合间的时间特征依赖关系。具体地说,在 GAE 块上,我们使用 |mathcal{S}| 个并行 GRU 网络从所有历史动作表达编码向量中获得层次编码。每个插槽 s 的层次结构编码的计算方法为:
其中,所有 GRU 网络共享参数 W_h .
回合级状态预测器是简单地由 |S| 个 softmax 分类器实现的,每个插槽 s 的值的概率分布根据下式计算:
phi_s^T in R^{K_h times |mathcal{V}^*(s)|} 为分类器的权重参数
这项工作的一个见解是,当在软标签上做出硬决定时,它产生的错误可能会传播到未来的回合,导致未来状态聚合的错误。作者坚持要保持 Y_t 和 X_t 的软标签结果,以便在建模中 保持状态聚合的不确定性 。因此,作者提出了一个基于 因子图 的状态聚合器,并使用 信念传播 来处理这些不确定性。
因子图:为了在状态聚合中使用因子图,首先引入一个函数 g(cdot) , 根据确定性聚合规则 lhd , 对于任意的 v,v^{'},v^{''} in mathcal{V}^*(s) 有:(当且仅当 v^{'} = unknow text{&&} v = v^{''} v^{'} = v^{''} neq unknow 时 g(cdot) = 1)
根据图 2 中表示的概率图形模型,可以推导出:
g(x{tau-1}(s),y{tau}(s),x_{tau}(s)) : 用来指示当前回合槽 s 的值是否应该被考虑 Q_t^s(x_t(s)) : mathcal{V}^*(s) 的概率分布 P(xt(s)|a{<t},u{<t})G(x{<t}(s),y_{<t}(s))
信念传播:
因子图由一种高效的算法驱动,称为 信念传播
或和积算法
,用于计算 边缘分布
。具体地,该算法通过沿着因子图的边缘传递“消息”来执行,并且发送的消息由其“上游”上的所有传入的消息计算出来。
应用信念传播原理,还可以有效地表示消息传递中每个回合 t 中每个槽 s 的 Q^st。令 T 表示对话的总回合数。对于每一个槽 s , 因子图表示为 G(x{<T}(s),y_{<T}(s))t , 让消息 β_t^s,γ_t^s 和 µ^s_t 在因子图的边缘被引入,如图 3 所示,这些消息的计算如下:
其中 mu_0^s 定义如下:
根据(15)中给出的消息计算规则,对于每个回合 t≤T 和每个槽 s∈S,µ^s_t=Q^s_t。回顾 Q^s_t 是状态 x_t(s) 的预测分布,α_t^s 是回合级状态 y_t(s) 的预测分布,至此我们已经完成了指定如何将因子图和信念传播用于状态聚合。
在 TEN 模型下,训练集 mathcal{R} 上的交叉熵损失遵循如下标准定义:
现有的方法通常从头开始预测对话状态。然而,每个回合中绝大多数插槽应该继承前一个回合的插槽值。因此,在每个回合中处理槽的机制不仅效率低下,而且可能由于冗余槽值的产生而导致额外的错误。
为了解决上述问题,我们设计了基于当前回合对话的 两段式 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}
嵌入层的输入为 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 轮对话状态的输出表示。
双插槽选择器由一个初步选择器和一个最终选择器组成,它们根据当前的回合对话框对每个插槽共同作出判断。
插槽可以被视为一类特殊的问题,因此受到 MRC 中通道和问题之间的明确注意匹配的启发,我们将插槽表示作为表示 H 和输出表示 H^{[SLOT]^j}_t依次输入插槽感知匹配层:
输出表示 H 的每个位置与 t 回合的第 j 个槽之间的相关性。
初步选择者简要介绍当前回合对话话语和每个槽的关系,以作出 初始判断。对于第 t 回合的第 j 个插槽 (1≤j≤J),将其输出表示 H^{[SLOT]^j}_t 和对话表示 H_t 提供给 SAM 如下:
其中 alpha_t^j in R^{Ntimes 1} 表示对话的每个位置与第 j 个槽的关系。然后我们得到聚合的对话表示 H_t^j∈R^{N×d},并将其传递到一个完全连接的层,得到由第 j 个槽的选择和失败元素组成的分类,如下所示:
最终选择器将对 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。
基于阈值的决策,插槽选择的阈值 δ 是在我们的模型中设置和确定的。第 j 个槽的总分是预测的初步选择者分数和预测的最终选择者分数的组合:
对于非继承的槽,由槽值生成器生成槽值。为了简单起见,我们将该过程概述如下,因为该模块使用了与最终选择器相同的提取方法和基于分类的混合方法:
值得注意的是,槽值生成器和最终选择器之间最大的区别是,槽值生成器的输入话语是之前 k−1 回合和当前回合的对话,而最终选择器只利用当前回合对话作为输入话语。
在训练过程中,我们优化了双槽选择器和槽值生成器。
尽管在 MultiWOZ2.2 上的实验结果具有稀疏性,但我们的模型在现有的公共模型中仍然大幅领先。类似于(Kimetal.,2020),我们的模型在 MultiWOZ2.1 上比在 MultiWOZ2.0 上获得了更高的联合精度。对于 MultiWOZ2.2,分类槽的联合精度高于非分类槽。这是因为我们利用萃取方法和基于分类的混合方法来处理分类槽。然而,我们只能对非分类插槽使用提取方法,因为它们没有本体(即候选值集)。