大多数现有的方法都在单个领域上独立训练 DST,而忽略了跨领域之间的信息的有效共享。
为了解决多域 DST 任务,我们首先构建了一个 对话状态图
,在跨域的相关域 - 插槽对之间传输结构化特征。然后,我们通过 图卷积网络
对对话状态的图信息进行编码,并利用 硬拷贝机制
直接复制之前对话的历史状态。
与 TRADE 相比,在 MultiWOZ2.0 和 MultiWOZ2.1 上的联合精度分别提高了 2.0% 和 1.0%。
上图说明了基于图的和拷贝增强的多域对话状态跟踪器 (GCDST) 的编码器 - 解码器框架。与之前的工作不同 (TRADE),我们在编码器和解码器中引入 状态图表示
,以 建模跨域对话状态之间的相关信息
。此外,我们还提出了一种对话解码器中的 硬拷贝机制
, 从最后一个预测中获得历史状态
。该框架由四个主要组件组成。
实际对话通常包含多个领域的对话状态。不同的域通常有许多相同的插槽,可能共享相同的值或具有相似的表达式和语言特征。因此,在跨域或具有相同值的不同域槽对之间表示和传输特征是非常必要的
。
之前的工作主要通过 共享参数
来跟踪跨领域的插槽信息如 TRADE。然而,很难显式地和直接地 在插槽之间传输信息
。因此,本文提出了用一个图结构来表示对话中对话状态之间的关系。根据该图,从一个领域的状态中学习到的特征能够 直接迁移
到其他领域。
对话状态图 G = {N,E}, 其中 N = {(d,s) } 表示 节点集 ,E 表示 无向边集 。对于两个节点 N_i = (d_i,s_i) 和 N_j = (d_j,s_j),他们之间的链接情况用一个 邻接矩阵 A 来表示,4 种边链接如下:
为了在图上的对话状态节点之间传播信息,我们引入了图卷积网络 (GCN) 通过池化相邻节点的特征来更新具有结构感知功能的节点表示。
GCN 的输入包含一个节点嵌入矩阵 H \in \R^{|V|\times d}, 以及 邻接矩阵 A \in \R^{|V|\times |V|} 它表示对话状态图的结构。在对话状态图中,节点间的信息传播最多只占用两跳。因此,我们考虑一个两层的 GCN,其中每一层都可以写成一个非线性函数和一个对称的邻接矩阵:
其中 \hat{A} = A + \lambda I , 在经过 l 层的 GCN 后追踪得到节点特征矩阵 E_{node} = H^{l+1} \in \R^{|V| \times d} .
之前的方法 只利用话语来编码对话历史
。但是,先前的对话状态是信息丰富的,并与当前状态有关。例如,当用户询问酒店的区域或人数时,她很可能在接下来的对话中也有类似的询问,比如餐厅。因此,本文提出了一种话语编码器和状态编码器,利用双向门控循环单元(GRU) 分别
编码历史话语和状态。
具体来说,话语编码器 的输入为历史话语的单词序列 {w_1, w_2,...,w_U} , 状态编码器 的输入表示为 {(d_1s_1,v_1), ...,(d_Ms_M, v_M) } 其中 M 表示历史状态的数量。对于每个域插槽对,我们使用图嵌入来对其进行编码。在少数情况下,域 - 插槽对的值是一个包含多个单词的短语。为了简单起见,我们 只根据话语编码器的第一个单词来编码 v_j 的值 。最后,我们将 d_js_j 和 v_j 连接 起来作为输入表示,并将其送入状态编码器。
在测试过程中,我们只 使用预测状态作为状态编码器的输入
,尽管在预测状态中可能会有一些错误。为了模拟这种情况,我们在训练步骤中随机替换、添加和删除一些历史状态。具体来说,对于替换或添加操作,只选择具有相同域、插槽或值的状态作为候选状态。
为了预测一个对话的当前状态,可以考虑到历史话语和状态。TRADE 利用拷贝机制拷贝来自历史话语的单词,但是历史上下文可能会随着对话的进行而变得非常冗长。在这种情况下,RNN 可能会丢失从前几个回合中提取的状态信息。为了解决这个问题,本文首先提出了一种 硬拷贝机制 来直接从以前的状态复制该值,因为作为 上下文摘要 的历史状态对当前的预测很重要。然后,我们使用一个 软门 来结合基于 词汇表 、 历史话语 和MARKDOWN_HASHe3d8e1aa090e426337b0f9cac3f72afdMARKDOWNHASH的概率。特别地,使用 GRU 来解码每个域插槽对的值,并应用节点嵌入 E{node}(d_ks_k) 来表示每个对话候选状态。当解码 d_ksk 的第 t 个字时,GRU 从上一步 w{t−1,k} 中嵌入的一个单词作为输入。GRU 的隐藏状态记为 h_{t,k}。在词汇和历史话语上的分布计算如下:
其中 h_{0,k} = h_u^{enc} + hs^{enc}, w{0,k} = E_{node}(d_ks_k) , W_1 是一个从隐藏状态大小到词汇表大小的映射矩阵;H^{utter} 为对话话语状态编码器中的历史状态。
由于在每个对话回合中可能有许多不变的状态,我们试图参考以前预测的历史状态。因此,我们探索了两种方法,即 硬拷贝机制
。(Eq.4)和一种 基于注意力的方法
(Eq.5),以获得在对话历史状态上的分布。虽然硬拷贝机制将生成一个独热向量,但基于注意的方法的输出是在词汇表上的分布,如下所示:
其中 state_{t,k} 是最后一回合域槽对 d_ks_k的第 t 个单词。如果状态 t,k 不存在,我们通过 padding 来填充它。W_2 是一个用于训练的映射矩阵。
最终的输出分布是上述三个分布的加权和:
参数 β 和 γ 是可训练的门,计算如下:
与 TRADE 相似,使用一个插槽门来预测 ptr、none 和 dontcare 上的概率。输入话语和状态的上下文向量,d_ks_k的槽门表示为:
的和:
不同边链接类型的影响:
解码器对历史状态的影响:
超参数 \lambda 的影响:
上下文长度的影响:
目前 DST 常见的做法是将它视为一个问题,将对话内容分类为一组预定义的槽值对,或为给定对话历史的不同槽生成值。两者在考虑对对话发生的依赖关系方面都有局限性,并且缺乏推理能力。
具体来说,对话历史的依赖和推理的关键问题尚未得到充分的研究。比如:
因此,最近的工作针对的是总结对话历史的共同信念。一般来说,它们通过规则积累回合信念或通过各种递归神经网络建立转向模型信息(RNN)。
虽然这些基于 RNN 的方法依次建模对话,但它们通常将整个回合的话语直接传递给包含大部分噪声的 RNN,并导致不令人满意的性能。
本文提出在 后端数据
的帮助下,通过对对话回合的推理,逐步跟踪对话状态。实证结果表明,该方法在 MultiWOZ2.1 的联合精度方面显著优于现有的方法 38.6%,这是一个跨多个领域的大规模人机对话数据集。
二部图
,并对其进行信念传播,这使信念跟踪器能够深入了解潜在的候选者,并在对话过程中检测到相互冲突的需求 最先进
的方法。 定义 X = {(U_1,R_1),...,(U_T,R_T) } 为对话历史;B={B_1, ..., B_t} 作为每一回合的联合信念。Q_t 表示第 t 回合 (U_t,R_t) 的回合信念。每一个 B_t 或 Q_t 都由 (domain, slot, value) 元组组成。假设总共有 K 个不同的 (domain, slot) 对,Y_k 是第 K 个 (domain, slot) 对的真实插槽值。
图上中提出的 ReDST 模型由三个组成部分组成:一个 转向信念生成器
、一个 二部图信念传播器
和一个 增量信念生成器
。我们没有直接从对话历史中预测联合信念,而是进行两阶段推理:首先通过 BERT 标记和序列分类从增强的单回合话语中获得回合信念。然后,利用二部图的传播结果,推理回合信念和最后一个联合信念。在此基础上,它逐渐推断出最终的联合信念。
将 X_t=(U_t,R_t) 表示为第 t 个回合的话语,回合信念发生器的目标是预测这种特定话语的准确状态。虽然对话历史 X 可以以任意长度积累,但回合话语 X_t 往往相对较短。为了利用上下文表示提取信念,并享受预先训练的编码器的良好性能,我们微调 BERT 作为基础网络,同时在多任务学习设置中附加 序列分类 和token 分类 层。token 分类任务提取特定的槽值跨度,序列分类任务决定特定的(domain、slot)的值为:yes、no、dontcare、none 或 generate 从 token 分类等生成的值。
假设当前回合输入 X_t = x_1,x_2,...,x_N, 增强后的输入语句为 X^{'}_t = [CLS],domain,slot,[SEP],x_1,...,x_N 特定的(domain, slot)作为查询,以提取话语中的跨度。BERT 的输出为 H = h1,...,h{N+5} .
作为聚合序列表示来进行分类:
对于 token 分类,将除 [CLS] 外的输出输入到 softmax 层将 token 分类为
为了共同建模序列分类和标记分类,我们共同优化了它们的损失。对于前者,计算了预测的 :
对于后者:
联合后:
现在我们可以预测每个回合的回合级信念状态。直观地说,我们可以直接将我们的回合信念生成器应用于连接的对话历史上,以获得联合信念 (TRADE)。然而,这几乎不是一个最佳的实践。首先,将所有话语作为长序列处理将失去对话的迭代特性,从而导致信息丢失。其次, 目前的模型如循环网络或 Transformer 模型不能很好地建模长期依赖关系。因此,我们将对话过程模拟为一个递归过程,其中当前的联合信念 Bt依赖于最后一个联合信念 B{t−1}和当前的转向信念 Qt。一般来说,我们使用 B{t−1}和 Q_t 对基于后端数据库构建的二部图进行信念传播,以获得每个插槽值对的可信度评分。然后,我们使用不同的方法对递归过程进行增量信念推理。
作为对话系统的核心组件,对话状态跟踪器可以访问后端数据库。在面向任务的对话过程中,用户和代理相互交互,达到信息意识的同一阶段。用户表达了许多难以满足的要求。代理求助于后端数据库并相应地响应。然后,用户将调整其需求,以完成任务。在大多数现有的 DST 中,跟踪器必须从对话历史中推断出这种调整需求。通过对代理数据库的推理,我们希望获得明确的更准确的线索。
首先将数据库抽象为二部图 G=(V,E) , 其中顶点被划分为两组:实体集 V{ent} 和 属性集 V{attr} , 其中 V = V{ent} \cup V{attr} 并且 V{ent} \cap V{attr} = \emptyset . V{ent}和 V{attr}中的实体已完全断开连接。边链接来自 V{ent}和 V{attr}的两个顶点,表示属性属于关系。在每个回合过程中,我们首先通过函数 g(\cdot)将预测的 Qt和最后一个联合信念 B{t−1}映射到图上的信念分布。这里我们应用精确匹配并计算与阈值的相似性来实现 g(\cdot)。
在通过 g(\cdot)将信念映射到数据库的二部图之后,开始在图上的信念传播。有两种在二部图上的信念传播方式:
,它可以看作是在对数据库图进行推理后的状态值的可信度分数。我们通过在二部图中进行信念传播来对这组条目进行推理,以获得它们的确定性分数如下:
其中,γ 是建模可信度衰减的超参数,因为新提供的插槽值通常反映了更多更新的用户意图。
。在数学上有:
函数 f 整合了来自回合信念、最后一个联合信念和传播的可信度分数。又由于信念生成器的顺序性质,我们也可以应用 GRU 单元来依次预测信念。对于 GRU 的情况,详细的公式如下:
作为输入往往会导致非常缓慢的收敛,甚至被困在局部最优状态中。因此,我们定义了用一个依赖于训练时代数 e 的衰减函数从真實值中选择的概率 p:
其中,
数据集为 MultiWOZ 2.1 , 这是一个最近发布的多领域对话数据集,跨 7 个不同的领域,包含 1 万多个对话。
对于多域 DST,由于候选状态数量的增加,数据稀疏性问题成为一个主要障碍。现有的方法通常是 独立预测每个槽的值,不考虑槽关系
,这可能会加剧数据稀疏性问题。
本文提出了一种带有 gat 的模式引导的多域对话状态跟踪器。利用 gat 来提取模式信息是很优雅的。
最先进的性能
(联合目标精度)。消融研究也证实了模式图是重要的。 定义图 G = (V,E) 其中 V = {xi } 为节点集合,E = {e{ij} } 为边集合。\mathcal{N}(x_i) 表示节点 xi 的邻居集合。\mathcal{N}{+}(x_i) = \mathcal{N}(x_i) \cup {x_i} 包含了 x_i 与其邻居节点。
对于图中的每一个节点 x_i 都有一个输入特征 \bf{x}_i , GNN 将其作为节点 x_i 的初始化嵌入 h_i^0,然后通过以下操作将其嵌入从一步(或一层)更新到下一个:
:
f_{msg}^l(\cdot) : 在第 l层每个节点的信息函数 简单来说该函数可以为一个线性变换 f_{msg}^l = W_m^lh_i^{l-1}
将聚合来自其邻居及其自身的消息:
f^l_{agg}(\cdot): 是第 1 步中每个节点的聚合函数
GAT 与传统 GNN 的 最大区别在于它们具有不同的聚合功能。在传统的 GNN 中,所有接收到的消息都是平等对待的(取平均):
N_i: x_i 的邻居数加 1
在统一空间中嵌入的归一化相似度:
f_{sim}^l(h_i^{l-1},hj^{l-1}) = (W{a1}^lhi^{l-1})^T(W{a2}^lhj^{l-1}): 相似度函数, 其中 W{a1}^l、W_{a2}^l 为可学习的权重参数。
被用来计算消息的线性组合: ei^l = f{agg}^l({m_j^l|xj\in \mathcal{N}{+}(xi) }) = \sum{xj\in \mathcal{N}{+}(xi)} a{ij}^lmj^l 注意,在上面的方程中,由于 \hat{a}{ij}^l = f_{sim}^l(h_i^{l-1},hj^{l-1})+f{md}^l(hj^{l-1}) \ f{md}^l(hj^{l-1}) = W{md2}^l\sigma(W_{md1}^lhj^{l-1}+b{md1}^l) + b{md2}^l 一旦得到,\hat{a}{ij}^l将用特征化的多维 softmax 函数进行归一化,得到特征水平上 a^l_{ij}的分类分布: ei^l = f{agg}^l({m_j^l|xj\in \mathcal{N}{+}(xi) }) = \sum{xj\in \mathcal{N}{+}(xi)} a{ij}^l \odot m_j^l
\odot: element-wise product of two vectors
:
值得注意的是,h^{l−1}_i并没有直接用于上述 MLP 函数,因为 e^l_i已经包含了来自 xi 本身的消息.
为了使训练稳定,在两个步骤 / 层周围使用残差连接,然后进行层归一化 LayerNorm(h^li+h^l{i−1})。在更新节点嵌入 L 步骤后,我们将获得每个节点 x_i 的上下文感知嵌入 h^L_i。
。整个对话过程可以表示为:
传统上,许多 DST 模型都是 根据最新的整个对话上下文来预测对话状态 的。它们MARKDOWN_HASH3ca9d4f53b24e45a52f698af9e874543MARKDOWNHASH。相比之下,本文提出的 SST 模型根据 :
SST 模型包含两个部分:本体模式图和话语匹配模块 和 状态更新模块。第一个模块学习域模式和话语中每个令牌的上下文表示,并从彼此中获取有用的信息。第二模块根据第一模块获得的槽指定信息将对话状态从
在以往的工作中,本体模式信息在学习中没有得到充分利用。在这里,我们提出了图注意匹配网络 (GAMTs) 来同时学习本体模式和对话话语的表示。
首先根据原始本体模式,定义 token 级别的模式图 G^1 = (V^1, E^1),该图的节点由所有的域 token 以及所有的槽 token。槽和槽所属的域之间有边。如果一些插槽 / 域用多个一个词来描述,例如。,它将被分为单一 token。
然后根据对话语句定义另一个图 G^2 = (V^2, E^2),图节点由最新的系统响应和用户话语对中的所有单词组成组成。图中的所有节点都已连接起来。
在 GAMT 中,对于每个节点的 x^k_i∈V^k(k=1,2),嵌入 h^{k,l}_i在每一步都会更新,不仅考虑来自其邻居的聚合消息,还考虑来自另一个图的跨图消息。G^1中每个节点的输入特征为对应的token 嵌入,G^2中每个节点的输入特征为token 嵌入、分割嵌入和位置嵌入的总和,这里我们使用预先训练的单词嵌入作为 token 嵌入,随机初始化嵌入作为分割嵌入。它们会在训练过程中进行更新。我们使用不同频率的正弦和余弦函数作为位置嵌入。与 GAT 相比,这里对节点嵌入的更新过程进行了如下修改。在不失去一般性的情况下,使用 G^1中的节点来描述更新过程,并且 G^2中的节点的更新过程是相似的:
mi^{1\rightarrow 1,l} = f{msg}^{self,l}(h_i^{1,l-1}) \ mi^{1\rightarrow 2,l} = f{msg}^{cross,l}(h_i^{1,l-1})
ei^{1\rightarrow 1,l} = f{agg}^{self,l}({m_j^{1\rightarrow 1,l}|xj^1\in \mathcal{N}{+}(x_i^1) }) \ ei^{2\rightarrow 1,l} = f{agg}^{cross,l}({m_j^{2\rightarrow 1,l}|x_j^2\in V^2 })
hi^l = f{ue}^l([e_i^{1\rightarrow 1,l},e_i^{2\rightarrow 1},l], h_i^{l-1})
然后获得基于 h^{1,L_1} 槽的向量表示 g_s . 假设 G^1 中的一个槽包含一个或多个 token,每个 token 用 MLP 计算特征化得分向量,然后用 MD-softmax 进行归一化。最后,节点嵌入 h_i^{1,L_1} 用归一化的分数进行加权,得到 g_s.
状态更新模块以 g_{s_i} 作为输入,并更新每个插槽 s_i的对话状态。如之前介绍,在多域对话状态跟踪中,槽之间可能存在潜在的关系。为了捕捉插槽之间的相互作用,使用循环注意图神经网络 (RGAT) 进行状态更新。
首先定义一个特定于领域的插槽级模式图 G。G 的节点由所有的插槽组成。如果两个插槽属于同一域,则在它们之间有一条边。如果两个插槽属于不同的域,但它们的一些候选值是相同的,那么它们之间也有一条边。
每一个节点 x_i 的输入特征是第 t 轮对应槽 s_i 值的嵌入向量 \bf{v}_i , RGAT 将 \bf{v}_i 作为节点 x_i 的初始化隐藏状态 h_i^0. 然后将其嵌入从一步更新到下一步,类似于 GAT。然而,GAT 和 RGAT 之间最显著的区别是,RGAT 在所有步骤中的参数都是共享的,且其节点嵌入更新函数也不同:
Sending Messages:
Aggregating Messages:
Updating Embedding:
其中 f_{ue}(\cdot) 为一个 GRU 单元:
MD-softmax 是特征级多维 softmax 函数 z{i,1},z{i,2},z_{i,3} 为 GRU 的 3 个信息控制门: z_{i,1} : 控制来自最新对话背景下的信息 z_{i,2} : 控制其上次对话状态中的信息 z_{i,3} : 控制来自其邻居的信息 所有参数 W 和 b 都是跨步骤共享, 因此才叫 循环 GAT
的分布,即:
其中,
在前面的介绍中,SST 模型只在最近的回合中使用对话上下文。每次都要考虑到最新的用户话语和系统响应。它可以自然地扩展到编码对话上下文,即下式中的 DST 公式: