zl程序教程

您现在的位置是:首页 >  IT要闻

当前栏目

【论文笔记】Efficient Dialogue State Tracking by Selectively Overwriting Memory

2023-03-07 09:10:03 时间

Efficient Dialogue State Tracking by Selectively Overwriting Memory

概要

问题动机

  最近在对话状态跟踪 (DST) 方面的工作集中于基于开放词汇的设置,以解决基于预定义本体的方法的可伸缩性和泛化问题。然而,他们效率低下,因为他们从头开始预测对话状态。

主要贡献

  • 启用高效的 DST,利用之前的对话状态生成插槽最小子集的值。
  • 在基于开放词汇表的 DST 设置中,在 MultiWOZ2.0 和 MultiWOZ2.1 上实现了最先进的性能。
  • 强调了在我们提出的框架中提高状态操作预测精度的潜力。

模型

编码器输入

输入分为两个部分,包括最近两轮对话历史 D 与前轮的状态 B_{t-1},简单表示为:

编码器输出

编码器预测对应的每一个槽的操作,一共有 4 种操作 [CARRYOVER,DELETE,DONTCARE,UPDATE], 只有当操作为 UPDATE 时槽值生成器才生成新槽值 v

槽值生成器

槽值生成器是一个 GRU 网络,初始隐藏层状态和输入分别为: 并通过将一个单词嵌入 e^{j,k}_t 作为输入,递归地更新隐藏状态 g_t^{j,k}∈ \R^d,直到生成[EOS] token:

在解码的第 t 步,解码器隐藏状态转换为词汇表的概率分布,其中 E∈R^{d{vcb}×d} 是编码器和解码器共享的单词嵌入矩阵,因此 d{vcb} 是词汇表大小:

其中 且 P_{val,t}^{j,k} 为最终分布

目标函数

在训练过程中,我们共同优化了状态操作预测器和插槽值生成器。

  • 状态操作预测器: 除了状态操作分类外,我们还使用域分类作为辅助任务,迫使模型学习插槽操作和域的相关性,域分类使用 h^X_t 之上的软最大层完成: 每个状态操作分类和域分类的损失为负对数似然的平均值,如下:
  • 槽值生成器 训练插槽值生成器的目标函数也是负对数可能性的平均值:

将 3 个任务联合训练,得道总目标函数:

实验

数据集

使用 MultiWOZ2.0(Budzianowski 等人,2018)和 MultiWOZ2.1(Eric 等人,2019)作为我们实验的数据集。这些数据集是两个最大的公开的多领域面向任务的对话数据集,包括 7 个领域内的大约 1 万次对话。MultiWOZ2.1 是 MultiWOZ2.0 的一个改进版本,其中可以更正注释错误。

结果

A Simple Language Model for Task-Oriented Dialogue

概要

动机

面向任务的对话通常被分解为三个任务:理解用户输入、决定操作和生成响应。虽然这种分解可能会为每个子任务提供一个专门的模型,但作者发现一个简单、统一的方法可以在 MultiWOZ 数据集上获得最先进的性能。

贡献

SimpleTOD 是一种面向任务的对话的简单方法,它使用单一的因果语言模型,对所有子任务重新转换为单一序列预测问题。这使得 SimpleTOD 能够充分利用来自预先训练的、开放领域的、因果语言模型的转移学习,如 GPT-2。SimpleTOD 提高了对话状态跟踪的现有最新的联合目标精度,我们的分析揭示了在这种设置下对噪声注释的鲁棒性。

  • SimpleTOD- 一种最先进的对话状态跟踪生成模型
  • SimpleTOD 也是第一个在端到端设置中一起实现对话状态跟踪、动作决策和响应生成度量的最新性能的模型
  • 分析表明,SimpleTOD 是存在噪声标记注释下的鲁棒对话状态跟踪器
  • 消融实验表明显示用户 / 系统和末端(段)标记的重要性
  • 显示预训练的重要性,也显示更大版本的简单训练,对于端到端 MiltieTOD 并不总是更好

模型

对话系统

面向任务的对话 (TOD) 对三个子任务进行评估:对话状态(信念状态)跟踪、对话管理(行动 / 决策预测)和响应生成。这种分解使得为每个子任务创建专用的模型成为可能,这是主要的方法。相比之下,我们探索了使用单模型的端到端方法的可能性,SimpleTOD。

设第 t 轮对话为 U_t, 为了在推理过程中生成响应,SimpleTOD 将之前的所有回合读取为上下文, , 并生成对话状态 B_t

这是记录特定域中的插槽值的三元组列表:(域、slot_name、值)。此信念状态用于查询数据库中的信息。数据库搜索从数据库中返回满足信念状态条件的行。返回的行以后可用于将响应词汇化(填充生成的占位符),但 SimpleTOD 只将聚合的数据库搜索结果 D_t 作为输入。D_t 包括返回的行,以及根据实验设置,是否有预订状态信息。然后,SimpleTOD 将 C_t、B_t 和 D_t 上的条件作为一个单一的序列连接在一起,以决定操作,A_t:

这些操作作为另一个三联体的列表生成:(域、action_type、slot_name)。根据连接为单一序列的所有先验信息生成分层响应 S_t:

当与来自信念状态和数据库搜索结果的信息相结合时,响应可以被词汇化,以恢复人类可读的响应文本。

因果语言模型

一个单一的训练序列由连接组成 ,允许我们建模序列 x_t 上的联合概率。给定该形式的示例序列 其中每个 x_i 来自一组固定的符号,语言建模的目标是学习 p(x)。利用概率链规则对这个分布进行因式分解是很自然的, 并训练一个具有参数 θ 的神经网络,以最小化数据集 上的负对数似然,其中,序列 x^t 的长度为 n_t

架构

作者通过训练 Transformer 的一个变体来学习这些条件分布。一个包含 n 个 token 的序列被嵌入为 n 个 d 维向量的序列。每个向量都是学习的 token 嵌入和正弦位置嵌入的和。因此,输入矩阵为 由 l 个注意层处理。第 i 层由两个块组成,每个块保留模型维数 d。第一个块使用了带有 k 个头的多头注意力。

第二个块使用具有 ReLU 激活的前馈网络,将输入投影到内部维度 f。此操作由

参数化:

每个块在核心功能之前使用 layer normalization,之后是残差连接。它们一起生成 X_{i+1}

然后根据最后一层的输出计算分数:

在训练过程中,这些分数是一个交叉熵损失函数的输入。在生成过程中,与最后一个令牌对应的分数用软最大值进行标准化,生成一个用于对新的 token 进行采样的分布。

实验