A Comparative Study on Schema-Guided Dialogue State Tracking
概要
问题动机
Frame-based 的状态表示在现代面向任务的对话系统中被广泛应用,以建模用户的意图和插槽值。然而,域本体的固定设计使得很难扩展到新的服务和 API。
最近的工作提出,使用自然语言描述来定义域本体,而不是为每个意图或插槽定义标记名称,从而提供了一组动态的模式集。
但是,尽管有了新的方法和较好的效果,当前的模式引导的对话状态跟踪任务只对模式定义有限变化的单个数据集进行评估。目前尚不清楚该范式是如何推广到其他数据集和其他不同类型的描述的。
Frame-based: 根据对话框历史记录和预定义的域本体,在每个用户回合时预测一个对话框状态框架
Schema-based: 模式引导的对话状态跟踪与经典范式之间的关键区别是新添加的自然语言描述。
主要贡献
在本文中,作者进行了深入的比较研究,以理解自然语言描述在对话状态跟踪中的使用。该讨论主要包括三个方面:
-
模式编码模型架构:对模式编码架构的比较研究表明,采用部分注意编码器可以良好地平衡推理速度和准确性。
-
补充训练的中间任务:通过自然语言推理和问答等中间任务,对模式引导的对话状态跟踪进行补充训练的实验研究。
-
模式描述的各种样式:对一套新的基准测试数据集进行了针对 SG-DST 和 multiwoz2.2 的不同模式描述风格的深入分析。
相关研究
- [] 2019-AAAI-Towards scalable multi-domain conversational agents: The schema-guided dialogue dataset.
- [] 2020-AAAI-Schema-guided dialogue state tracking task at dstc8.
Multi-Sentence Encoder Strategies:
-
[] 2019-ICLR- Poly-encoders: Architectures and pre-training strategies for fast and accurate multi-sentence scoring.
-
[] 2018-ACM- Response ranking with deep matching networks and external knowledge
in information-seeking conversation systems.
-
[] 2017-ACL- Sequential matching network: A new architecture for multi-turn response selection in retrieval-based chatbots.
Multi-domain Dialog State Tracking:
- [] 2019-ACL-Efficient dialogue state tracking by selectively overwriting memory.
- [] 2019-ACL-Transferable multi-domain state generator for task-oriented dialogue systems.
Transferable Dialog State Tracking:
-
[] 2020-arXiv-Soloist: Few-shot task-oriented dialog with a single pre
trained auto-regressive model.
-
[] 2020-arXiv-A simple language model for task-oriented dialogue.
-
[] 2019-arXiv-Find or classify? dual strategy for slot-value predictions on multi-domain dialog state tracking.
-
[] 2019-ACL-Sumbt: Slot-utterance matching for universal and scalable belief tracking.
-
[] 2020-arXiv- From machine reading comprehension to dialogue state tracking:
Bridging the gap.
方法
Schema-Guided Dialog State Tracking
Subtasks:
如上图,每个服务的对话状态由 3 个部分组成:$active-intent,requested-slots-ser-goals(slot-values)$, 在不失去一般性的情况下,对于 SG-DST 和 multiwoz2.2 数据集,根据之前对双策略 (DSS-DST) 的研究,将它们的槽划分为 分类槽
和非分类槽
。因此,为了填充每个用户回合的对话框状态框架,本文提出了四个子任务:
-
意图分类(Intent)
-
请求的槽标识(Req)
-
分类槽标签(Cat)
-
非分类槽标签(NonCat)
所有子任务都需要多次将当前对话框历史记录与候选模式描述进行匹配。
Schema Components:
上图展示了 3 个主要的模式组件: $service,intent,slot$。对于每个意图,模式还描述了其可选或所需的插槽。对于每个插槽,都有一些标志,指示它是否属于分类状态。分类意味着有一组预定义的候选值(布尔值、数字或文本)。
New Questions:
这些添加的模式描述提出了以下三个新问题,下面的讨论将回答下述问题:
- 应该如何编码对话和模式?
- 不同的补充训练如何影响每个子任务?
- 不同的描述样式如何影响状态跟踪性能?
Dialog & Schema Representation and Inference (Q1):
在本节中,将重点讨论使用预先训练的 BERT 匹配对话框历史和模式描述的模型架构。为了支持四个子任务,首先扩展了双编码器和交叉编码器来支持句子级匹配和 token 级预测。然后,提出了一种额外的融合编码器策略,以在不牺牲准确性的情况下获得更快的推理。我们在上图总结了不同的架构。然后,我们显示了每个子任务的分类头和结果。
以上所有的 3 个编码器都将为给定的句子对产生句子级和标记级的表示。我们将它们抽象为两个表示 CLS 和 TOK,并展示为每个子任务做出决策的通用分类头:
-
Active Intent: 通过一个线性层和 softmax 将回合话语表示 CLS 与每一个意图的描述相匹配,输出一个概率分布 $P_{I_k}^{active}$ .
-
Requested Slot: 在一个回合中可以存在多个被请求的插槽。我们使用与意图预测相同的策略来预测一个请求。但是,为了支持多个请求的插槽预测。我们用 $P_{req}^{active}>0.5$ 预测所有请求的插槽.
-
Categorical Slot: 对于交叉编码器和融合编码器,我们使用典型的两阶段状态跟踪来逐步构建状态,第一步利用 CLS 分类插槽为 $none,dontcare,active$. , 第二步,如果是 active 的,我们将对话历史记录与每个值进行匹配,并通过排序选择最相关的值。
-
Noncategorical Slot: 非分类槽的槽状态预测采用相同的两阶段策略。此外,我们使用对话历史 TOK 的令牌表示来计算每个 token 的两个起始和结束分数,分别表示预测令牌为起始和结束位置的分数。最后,我们找到了起始和结束得分最大的有效跨度.
Supplementary Training(Q2)
除了编码器中使用的训练前微调框架外,建议 在预训练之后,对目标任务进行微调之前 ,为中间任务添加一个 补充训练阶段。它在目标任务上有了显著的改善。此外,大量基于预训练和基于 Transformer 的模型可以公开访问,并在模型中心中组织良好,用于共享、训练和测试。考虑到模式化对话状态跟踪的新任务,在本节中,我们研究了四个具有不同中间任务的子任务来进行补充训练。
如 Q1 所述,我们所有的 4 个子任务都以一对对话框和模式描述作为输入,并使用总和的句子对 CLS 表示进行预测。而 NonCat 也需要基于跨度的检测,如问答。因此,它们与以下句子对编码任务具有相似的问题结构:
Natural Language Inference: 给定一个假设 / 前提句子对,自然语言推理是一项任务,以确定一个假设是包含、矛盾或中性的前提
Question Answering: 给定一个段落 / 问题对,任务是在段落中提取基于跨度的答案
Impact of Description Styles(Q3)
在本节中,我们还将研究 在一种描述风格上训练的模型将如何在其他不同风格上执行
,特别是在聊天机器人开发人员可能设计自己的描述的场景中。我们 首先
在研究中引入不同风格的描述,然后
我们在每种描述风格上训练模型,并
对具有相应的同质和异构描述风格的测试进行评估。考虑到上一节中显示的 交叉编码器
的最佳性能以及它在 DSTC8 挑战中的受欢迎程度,我们在本节中将其作为我们的模型体系结构。
对于每个意图 / 插槽,我们通过以下不同的描述样式来描述其功能:
-
Identifer: 仅仅由一个标识符号来表示
-
NameOnly:直接由数据集提供的意图 / 槽名来表示
-
Q-Name: 将域 / 槽名封装层一个问题如 "What is the value for slot i ?" , "Is the user intending to intent j ?"
-
Orig: SG-DST 和 multiwoz2.2 数据集的原始描述
-
Q-Orig: 与 Q -Name 不同,首先它是基于原始的描述;其次,不总是使用“what is”模板来查询意图 / 槽值,而是添加“what”、which”、“how many”或“when”,这取决于槽所需的实体类型。
实验
数据集
- SG-DST
- MultiWOZ 2.2
主要结果
编码器比较
发现服务描述对意图、需求和 CaT 任务没有帮助,而对 NonCaT 任务的影响也不同于 SG-DST 和 multiwoz2.2 数据集。
补充训练结果
主要发现 SNLI 在意图任务上有帮助,SQuAD2 主要对 NonCat 任务有帮助,而它们在 Cat 任务上都没有太大帮助。
不同描述风格的比较
总结
在本文研究中,我们研究了模式对话状态跟踪的三个问题:编码器架构、补充训练的影响和有效的模式描述风格。主要发现如下:
通过缓存 token 嵌入而不是单个 CLS 嵌入,一个简单的 部分注意融合编码器可以获得比双编码器更好的性能,同时推断速度仍然比交叉编码器快两倍
。我们通过对 两个中间任务的补充训练来量化增益
。通过根据最近的工作仔细选择具有代表性的描述风格,我们是第一个 在模式引导的对话框中对不同的描述风格进行齐构 / 异构评估
的方法。结果表明,简单的基于名称的描述在意图和要求任务上表现良好,而 NonCat 任务受益于更丰富的描述风格
。所有的任务在训练和测试之间的描述风格上都存在不一致,尽管不同程度各不相同。
我们的研究主要在两个数据集上进行:SG-DST 和 multiwoz2.2,而编码器架构的速度精度平衡和补充训练的发现预计 是数据集无关的
,因为它们更多地 依赖于子任务的性质
,而不是数据集。基于我们提出的基准测试描述套件,齐构和异构评估揭示了跨风格模式引导对话建模的鲁棒性,我们相信我们的研究将为未来的研究提供有用的见解。
2019-NAACL-Scaling Multi-Domain Dialogue State Tracking via Query Reformulation
概要
本文主要解决的问题是使用 query reformulation 的方法解决多轮对话中的 指代消解问题
(reference resolution),例如在上图中的对话场景中第一轮是正常的问答轮(通过 wikibot 解决),第二轮中用户使用了一个指代词his
,这个时候会通过一个 CQR 模块进行 query reformulation,从而将原始用户的问句Buy his latest book.
改写成 Buy Yuval Harari's latest book.
如何通过改写做到对话中的指代消解问题,便是本文要探讨的主题。主要思想是使用 pointer generator network(PGN)做改写,并且使用了 multi-task learning(MTL)的方法训练 PGN,可以做到在训练的时候不需要额外标注数据。
模型
Pointer Generator Network
某个对话的第 t 轮拥有的所有对话上文信息用 x 表示如下:
本文要解决的问题便是如何通过 x 做改写生成一个改写之后的句子,并且达到 NLU 的目的。
而这个 f 函数(query reformulation model)在本文中使用的是 PGN,分为 encoder 和 decoder:
- encoder 主要结构是一个两层的 Bi-LSTM 模型,对输入 x 进行建模;
- decoder 在生成每一个词的时候,使用了 copy 机制,也就是词的生成概率来自于两部分,一部分是正常 decoder 在词典上的概率大小,另一部分则 copy 自输入 x 中的词。当然后文会提到只针对 x 中的实体才进行 copy,这个 copy 的概率则来自于 pointer network 的机制,
说白了就是来自于在 x 上的 attention 权值并利用 softmax 转变为概率含义
。
对于训练数据而言,可以用下式表示 rewrites-corpus(重写语料库),其中 i,t,j 分别表示:第 i 个对话数据,某个对话中的第 t 轮,j 表示正确改写中的第 j 个改写(即 golden rewrite 不唯一,可能有多个正确改写)
而对于普通 PGN 而言,目标函数如下,其中新增的下标 k 表示第 i 个对话中第 t 轮第 j 个正确改写中的第 k 个词。
Multi Task Learning
如下图中的示例(对应题图中的对话),在当前轮 t = 2 时,输入会做一些相应处理:在每个句子前加上 SLU(Spoken Language Understanding)模块识别出来的 domain 和 intent 信息,比如这里的 BOOKQUERY
和SYSTEM INFORMINTENT
,这些信息都会添加到各自句子的前面;此外,还会将句子内部的 entity 进行 delexicalize,即用该实体类型或名称替换掉具体的实体 value。下标 l 只是表示输入 x 中的词位置,可以数一数,到最后确实是 l =16. 对于输出的文本句子 y 而言,这里有两个 golden rewrites。
而这里所谓的 multi-task 实际上也很简单,即在普通的 PGN 中,添加一个目标函数,主要针对输入中存在的 entity 是否会在 golden rewrites 中出现添加一个监督信号:
- 首先针对输入 x 中的每个词做如下判断,也就是如果输入中的实体在 golden rewrites 中出现则表明该实体需要进行 copy,用 1 表示;而如果未在 golden rewrites 中出现则不应该进行 copy,用 - 1 表示;
- 最后,将这部分目标函数加入到总的目标函数中。而正是因为最终的目标函数包含了两部分的监督信号,所以论文中将这叫做 multi-task 的方法。
Framework
总结
本文使用 query reformulation 方法解决多轮对话中的 指代消解问题
,通过改写后多轮对话中带有指代词的 query 也能被改写为包含完整信息的句子,这有一个特别大的好处是:可以与其他模块进行无缝衔接,因为改写之后的句子是完整的句子,因此可以正常调用其他模块,并且并不需要带上上下文信息,这样会使得整个对话各个模块之间的耦合没有那么严重。而针对具体做法则是一个带有 copy 机制的 PGN 以及融合了一个额外的输入中 entity 是否出现于 golden rewrites 的监督信号(即 multi-task)。
另外,指代消解问题在多域 DST 当中存在等价问题(引用),当前大部分研究都是利用自注意力网络来建模对话历史的关系,用而本文的 query reformulation 方法是否也可用于面向任务的多域 DST,值得探索。