为智能助理提供架构引导对话数据集

文 / Abhinav Rastogi 与 Pranav Khaitan,Google Research

智能助理的功能十分强大,可以帮助用户完成各式各样的任务,如查找航班、搜索附近的活动和电影、进行预订、从网络上获取信息等等。智能助理为网络上的各类服务提供统一的自然语言处理接口,从而向用户提供服务。像 Google 助理这样大型的智能助理,需要与不断增加的大量服务集成。这些服务涉及诸多领域,但各服务之间的功能时有重叠。


无需收集额外数据或重新训练模型即可轻松支持新服务,以及降低维护工作量,都是适应未来发展的必要条件


尽管智能助理这一领域已取得很多方面的重大进展,但最先进 (SOTA) 的模型往往忽视很多实际问题。部分原因是缺少智能助理所面临的问题描述以及相应规模和复杂性的数据集。


在最近发表的论文《面向可扩展的多领域对话代理:架构引导对话数据集 (Towards Scalable Multi-domain Conversational Agents: The Schema-Guided Dialogue Dataset)》中,我们通过引入新的数据集来解决这些问题。


架构引导对话 (Schema-Guided Dialogue Dataset, SGD) 数据集是任务导向型对话的最大公开可用语料库,涵盖了 17 个领域的 18000 多条对话。数据集配有各种注释,可作为大规模智能助理的意图预测、语义槽填充、状态追踪(即估计用户目标)和语言生成等任务的有效测试平台。


我们还提出构建智能助理的 架构引导方法 (Schema-Guided Approach) 来解决上述问题。此方法在所有服务和领域中使用单一模型,不含特定于领域的参数。基于架构引导方法和 BERT 等预训练语言模型的强大功能,我们将对话状态追踪模型开源。此追踪模型既适用于零数据环境(Zero-Shot Setting,即不包含针对新服务和 API 的训练数据),又能在常规环境中保持竞争力。



数据集

我们发布 SGD 数据集主要是为应对现有数据集无法充分支持的许多实际挑战。


SGD 数据集包含人类和智能助理之间的 18000 多条任务导向型对话,这些对话涉及多个领域,且带有注释。这些对话涉及与服务和 API 的交互,涵盖 银行 、 活动 、 媒体、日历、 旅行、 天气 等 17 个领域。对于其中的大多数领域,SGD 数据集包含多个不同的 API;其中许多 API 虽接口不同,但功能相互重叠,而这反映了常见的实际情况。SGD 是第一个涵盖领域如此广泛,同时又为每个领域提供多个 API 的数据集。此外,为了量化模型对 API 接口变更或对新增 API 的稳定性,评估集包含许多训练集中不存在的新服务。


为了创建 SGD 数据集,我们对所包含对话中的注释种类和准确性进行了优先级排序。首先,使用 “Wizard-of-Oz” 式流程收集两人互动所产生的对话,然后众包进行标注。


初步工作表明,使用此方法获得一致的注释存在困难,因此我们开发了新的数据收集流程,将对复杂手动注释的需求降到最低,从而大幅减少数据收集的时间和成本。我们为替代方法开发了一种多领域对话模拟器,可通过 API 的任意组合及相应标注(如对话状态和系统操作)生成对话框架。


模拟器包含分别模拟用户和助理的两个角色。角色间通过一个有限的动作集进行交互,动作集使用 概率自动机 (Probabilistic Automaton,旨在捕捉各种对话轨迹) 将对话语义转化为动作表示集中的动作表示通过,旨在获取多各种对话轨迹。我们利用一组模板,将模拟器生成的动作转换为自然语言表达。众包仅用于重新表述这些模板化的表达,以使对话更加自然和连贯。这一设置消除了复杂领域特定指令的需求,同时亦可保持众包任务的简单性,产出具有一致且高质量标注的自然对话。


对话获取步骤,(其中助理标为红色,用户标为蓝色)。左:模拟器使用一个有限动作集来生成对话框架。中:使用模板将动作转换为话语(每项服务约 50 个模板),再使用自然变化替换语义槽值。右:通过众包来重新表述,使语流更具凝聚性。 



架构引导方法

借助 SGD 数据集,我们现在可以训练智能助理提供各种网络服务。要实现这一目的,我们通常需要一个大型主架构,其中列出所有支持功能及其参数。然而,开发一个能满足所有可能用例的主架构相当困难。即使解决了该问题,主架构也会使新型或小型服务的集成变得复杂,并且会增加助理的维护工作量。此外,尽管我们可以将各服务间的许多相似概念(如查询或指定电影票、机票或音乐会门票的数量在逻辑上的相似性)联合建模,但主架构方法并不会促进此类概念的联合建模,除非手动定义这些服务之间的显式映射。


我们提出的新型架构引导方法突破了这些限制,无需定义智能助理的主架构。相反,每个服务或 API 都会提供对其架构所列功能及相关属性的自然语言描述。随后,这些描述会用于学习架构的分布式语义表征(作为对话系统的附加输入提供)。然后,对话系统会作为单个统一模型实现,并不包含领域或服务的具体参数。这种统一模型有助于表示不同服务中的类似概念,而使用架构的分布式表征可以对训练数据中不存在的新服务进行操作。我们已经在开源对话状态追踪模型中实现这种方法。



第八届对话系统技术挑战赛

对话系统技术挑战赛 (Dialog System Technology Challenges,DSTC) 是一系列旨在加速开发新型对话技术的研究竞赛。今年,在刚刚落幕的第八届 DSTC 中,Google 组织了一个赛项,“架构引导对话状态追踪”。我们收到了业界和学术界共 25 个团队提交的研究成果,将在 AAAI-20  DSTC8 研讨会上进行探讨。


我们相信,这个数据集将成为构建大型对话模型的良好基准。我们很高兴并期待看到研究界用它来推动对话技术发展与创新。



致谢

感谢论文共同作者 Xiaoxue Zang、Srinivas Sunkara 和 Raghav Gupta 对本篇博文的贡献。我们还要感谢 Amir Fayazi 和 Maria Wang 在数据收集方面的帮助,以及 Guan-Lin Chao 在模型设计和实现方面所做的数据分析。



如果您想详细了解 本文提及 的相关内容,请参阅以下文档。这些文档深入探讨了这篇文章中提及的许多主题:

  • Google 助理
    https://assistant.google.com/

  • 面向可扩展的多领域对话代理:架构引导对话数据集
    https://arxiv.org/pdf/1909.05855.pdf

  • 架构引导对话
    https://arxiv.org/pdf/1909.05855.pdf

  • 数据集
    https://github.com/google-research-datasets/dstc8-schema-guided-dialogue

  • BERT 
    https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.html

  • 开源
    https://github.com/google-research/google-research/tree/master/schema_guided_dst

  • 开源对话状态追踪模型
    https://github.com/google-research/google-research/tree/master/schema_guided_dst

  • 对话系统技术挑战赛
    https://sites.google.com/dstc.community/dstc8/past-challenges

  • 第八届 DSTC 
    https://sites.google.com/dstc.community/dstc8/home?authuser=0

  • 架构引导对话状态追踪
    https://github.com/google-research-datasets/dstc8-schema-guided-dialogue

  • AAAI-20 
    https://aaai.org/Conferences/AAAI-20/

  • DSTC8
    https://aaai.org/Conferences/AAAI-20/ws20workshops/#ws09