0%

Towards Scalable Multi-Domain Conversational Agents: The Schema-Guided Dataset

论文地址

诸如谷歌助手、Alex 以及 Siri 之类的虚拟助手为横跨多个领域的一系列服务或者 API 提供了一个对话接口。这些系统需要支持越来越多的服务,它们可能具有重叠的功能。而且这些服务中的一部分没有可用的训练数据集。现在公开的任务导向对话数据集不足以解决以上挑战,这是因为他们只覆盖了少量的领域,并且假定每个领域都有一个固定的本体。

本文提出了 SGD 数据集(16k 条多领对话横跨 16 个领域)。我们的数据集在规模上超过了现存的所有任务导向对话语料库,同时也强调了与构建大规模虚拟助手相关的挑战。它为语言理解、槽填充、对话状态追踪以及回复生成提供了一个具有挑战的测试平台。

同时,我们为任务导向对话提出了一个模式引导的范式。其中,模型在一组动态的意图和槽位上进行预测,使用它们的自然语言描述作为输入。这使得单个对话系统可以轻松地支持多种服务,并且有助于不依赖额外的训练数据整合新的服务。

在此范式基础上,我们发布了一个对话状态追踪模型,该模型能够在新的 APIs 上进行 zero-shot 泛化,并且在常规的配置中具有竞争力。

The Schema-Guided Dialogue Dataset

在训练集、验证集以及测试集中有包含 20 个领域,具体信息罗列在表 2 中。我们在这些领域上创建总计 45 个服务或 api 的综合实现。我们的模拟器框架与这些服务进行交互以此生成对话大纲,它是对话语义的结构化表征。然后我们使用了众包的步骤来解释这些大纲的自然语言语句。我们新颖的众包步骤保留了从模拟器获得的所有标注,并且在对话收集之后不需要任何额外的标注。本节,我们将描述详细的步骤,然后对收集的数据进行分析。

此节是描述数据收集的步骤,不做翻译。下面做简要的概述。

  1. Services and APIs:定义一个服务的协议(模式)由意图和带有约束的槽位组成。
    • 使用 SQL 引擎实现所有服务。为了反映现实世界中的服务以及 api 中的约束,我们施加了一些限制:
      1. 不暴露某些槽位的所有候选值,例如日期、时间,将它们定义为不可分类槽位
      2. 并且确保验证集中有相当一部分槽值不存在于训练集中,以此评估模型处理新槽值的能力。(博主注:这是否意味着不可分类槽位也可以使用分类模型?而不是指针神经网络?因为可分类槽位的槽值都很具体,例如性别只有男女,不需要进行隐藏)
      3. 某些槽位被视作可分类槽位,例如性别、人数、一周的天数。
    • 服务调用限制:现实世界中用户只能调用有限的槽位组合,例如在“预定酒店”这项服务中,用户不被允许使用日期搜索酒店,他最少提供一个酒店的地址。然而现存的数据集允许使用任意组合的槽位调用服务,从而产生实际服务或者 api 不支持的流程。
  2. Dialogue Simulator Framework:生成对话大纲
  3. Dialogue Paraphrasing:对话翻译

数据集分析

The Schema-Guided Approach

虚拟助理旨在支持网络上的大量服务。一个可行的方式是为助理定义一个巨大的统一模式,使得可以集成不同的服务供应商。然而,很难提出一个覆盖所有案例的通用模式。拥有一个通用的模式也会使开发人员集成有限服务变得复杂。我们建议使用模式引导的方法作为一种替代方案,以便新服务和 api 的集成。

在我们提出的方法中,每一项服务都提供了一种模式,其中罗列了支持的槽位和意图,以及它们的自然语言描述(图 1 展示了一个例子)。这些描述被用于获取模式中元素的语义表征。基于这些模式元素,助理使用一个统一的模型进行预测,其中不包含特定领域或者服务的参数。

使用单个模型有助于在有关联的服务之间获得更好的表征以及传递公共知识。这是因为模型使用模式元素的语义表征作为输入,它可以与未经训练的未知服务或者 api 之间建立连接。同时它也能灵活地适应诸如新增意图或者槽位之类的更改。

Zero-shot Dialogue State Tracking

我们为 zero-shot schema-guided DST 提出一个基于模式以及预训练模型的简易原型模型。

Model

我们使用一个模型在所有的服务以及领域中执行预测。我们首先将所有的语句、槽位以及可分类槽位的槽值(模式中所呈现的)编码为嵌入表征。由于不同的模式有不同数量的槽位和意图,所以使用模式元素的嵌入进行预测。这与现存的模型相比有所不同,它们在一个固定的模式上进行预测,并且无法跨领域进行知识共享。它们也无法适应模式的改变,需要使用新的标注数据进行重新训练。

  1. Schema Embedding 这个组件用于获取每个服务模式中意图、槽位、可分类槽位的槽值的表征。表 3 展示了用于嵌入的每个元素的序列对。这些序列对被输入进 BERT 中,然后输出值 \(u_{CLS}\) 被用作模式的嵌入,如图 6 所示。 SGD模式嵌入序列对 BERT encoder编码SGD序列对
  2. Utterance Encoding 与 Chao and Lane (2019)(BERT-DST) 类似,我们使用 BERT 编码用户的语句以及前一条系统语句,以此获得语句对的嵌入表征 \(u=u_{CLS}\) 以及字符级的表征 \(t_1, t_2, \cdots, t_M\),其中 \(M\) 代表两句的字符总数。通过使用一组投影(projection),语句以及模式的嵌入均被用于进行模型预测。
  3. Projection\(x, y \in \mathbb{R}^d\)。对于任务 \(K\),定义 \(l = \mathcal{F}_K(x,y,p)\) 作为将 \(x,y\) 转换为 \(l \in \mathbb{R}^p\) 的映射,公式如下所示。其中 \(h_1, h_2 \in \mathbb{R}^d\)\(W^K_i\)\(b^K_i\) 是可训练的参数。\(A\) 是激活函数。我们参考 BERT,使用 gelu 函数。 \[ \begin{align} h_1 & = A(W^K_1 x + b^K_1) \\ h_2 & = A(W^K_2 (y \oplus h_1) + b^K_2) \\ l & = W^K_3 h_2 + b^K_3 \\ \end{align} \]
  4. Active Intent 对于一个给定的服务,active intent 代表用户请求以及系统正在实现的意图。如果服务当前没有在处理意图,那么为值为 NONE。令 \(i_0 \in \mathbb{R}^d\) 为“NONE”意图的可训练参数。我们定义意图网络为: \[ l^j_{int} = \mathcal{F}_{int}(u, i_j, 1), \quad 0 \le j \le I \] 使用一个 softmax 将 \(l^j_{int}\) 归一化为在所有 \(I\) 个意图以及“NONE”意图上的概率分布。在推理阶段,我们预测最大概率的意图是 active intent。
  5. Requested Slots 对于有些槽位,用户会在当前语句中请求它们的槽值。映射函数 \(\mathcal{F}_{req}\) 预测第 \(j^{th}\) 个槽位的 \(l^j_{req}\),它被 sigmoid 归一化到 \([0,1]\) 之间。在推理阶段,所有分数 \(> 0.5\) 的槽位被预测为 requested: \[ l^j_{req} = \mathcal{F}_{req}(u, s_j, 1), \quad 1 \le j \le S \]
  6. User Goals 我们将用户目标定义为对话上下文中的用户约束,上下文中包含从第一轮到当前轮为止的语句。与在每轮用户语句之后预测全部的用户目标不同,我们预测当前轮和前一轮用户目标的差集。在推理阶段,对预测出的结果更新至用户目标中,以生成最新的用户目标。 我们将预测步骤分为两步:首先对于每个槽位,使用 softmax 归一化得到一个大小为 3 的分布,其代表槽位的状态,分别为 \(none, dontcare, active\)\(none\) 代表值不改变,\(dontcare\) 代表槽位填入特殊值 \(dontcare\)\(active\) 代表进入第二步。 在第二步中,公式 7 计算可分类槽位的槽值。对于不可分类的槽位,使用公式 8 和 9 生成跨度(span)。 \[ \begin{align} l^j_{status} & = \mathcal{F}_{status}(u, s_j, 3), \quad 1 \le j \le S & \tag{6} \\ l^{j,k}_{value} & = \mathcal{F}_{value}(u, v^k_j, 1), \quad 1 \le j \le V^k, 1 \le k \le C & \tag{7} \\ l^{j,k}_{start} & = \mathcal{F}_{start}(t_k, s^n_j, 1), \quad 1 \le j \le N, 1 \le k \le M & \tag{8} \\ l^{j,k}_{end} & = \mathcal{F}_{end}(t_k, s^n_j, 1), \quad 1 \le j \le N, 1 \le k \le M & \tag{9} \\ \end{align} \]

Evaluation

  1. Active Intent Accuracy
  2. Requested Slot F1
  3. Average Goal Accuracy
  4. Joint Goal Accuracy