Frame-based 的状态表示在现代面向任务的对话系统中被广泛应用,以建模用户的意图和插槽值。然而,域本体的固定设计使得很难扩展到新的服务和 API。
最近的工作提出,使用自然语言描述来定义域本体,而不是为每个意图或插槽定义标记名称,从而提供了一组动态的模式集。
但是,尽管有了新的方法和较好的效果,当前的模式引导的对话状态跟踪任务只对模式定义有限变化的单个数据集进行评估。目前尚不清楚该范式是如何推广到其他数据集和其他不同类型的描述的。
Frame-based: 根据对话框历史记录和预定义的域本体,在每个用户回合时预测一个对话框状态框架 Schema-based: 模式引导的对话状态跟踪与经典范式之间的关键区别是新添加的自然语言描述。
在本文中,作者进行了深入的比较研究,以理解自然语言描述在对话状态跟踪中的使用。该讨论主要包括三个方面:
Multi-Sentence Encoder Strategies:
Multi-domain Dialog State Tracking:
Transferable Dialog State Tracking:
如上图,每个服务的对话状态由 3 个部分组成:active−intent,requested−slots−ser−goals(slot−values), 在不失去一般性的情况下,对于 SG-DST 和 multiwoz2.2 数据集,根据之前对双策略 (DSS-DST) 的研究,将它们的槽划分为 分类槽 和非分类槽。因此,为了填充每个用户回合的对话框状态框架,本文提出了四个子任务:
上图展示了 3 个主要的模式组件: service,intent,slot。对于每个意图,模式还描述了其可选或所需的插槽。对于每个插槽,都有一些标志,指示它是否属于分类状态。分类意味着有一组预定义的候选值(布尔值、数字或文本)。
这些添加的模式描述提出了以下三个新问题,下面的讨论将回答下述问题:
在本节中,将重点讨论使用预先训练的 BERT 匹配对话框历史和模式描述的模型架构。为了支持四个子任务,首先扩展了双编码器和交叉编码器来支持句子级匹配和 token 级预测。然后,提出了一种额外的融合编码器策略,以在不牺牲准确性的情况下获得更快的推理。我们在上图总结了不同的架构。然后,我们显示了每个子任务的分类头和结果。
以上所有的 3 个编码器都将为给定的句子对产生句子级和标记级的表示。我们将它们抽象为两个表示 CLS 和 TOK,并展示为每个子任务做出决策的通用分类头:
除了编码器中使用的训练前微调框架外,建议 在预训练之后,对目标任务进行微调之前 ,为中间任务添加一个 补充训练阶段。它在目标任务上有了显著的改善。此外,大量基于预训练和基于 Transformer 的模型可以公开访问,并在模型中心中组织良好,用于共享、训练和测试。考虑到模式化对话状态跟踪的新任务,在本节中,我们研究了四个具有不同中间任务的子任务来进行补充训练。
如 Q1 所述,我们所有的 4 个子任务都以一对对话框和模式描述作为输入,并使用总和的句子对 CLS 表示进行预测。而 NonCat 也需要基于跨度的检测,如问答。因此,它们与以下句子对编码任务具有相似的问题结构:
Natural Language Inference: 给定一个假设 / 前提句子对,自然语言推理是一项任务,以确定一个假设是包含、矛盾或中性的前提
Question Answering: 给定一个段落 / 问题对,任务是在段落中提取基于跨度的答案
在本节中,我们还将研究 在一种描述风格上训练的模型将如何在其他不同风格上执行
,特别是在聊天机器人开发人员可能设计自己的描述的场景中。我们 首先
在研究中引入不同风格的描述,然后
我们在每种描述风格上训练模型,并
对具有相应的同质和异构描述风格的测试进行评估。考虑到上一节中显示的 交叉编码器
的最佳性能以及它在 DSTC8 挑战中的受欢迎程度,我们在本节中将其作为我们的模型体系结构。
对于每个意图 / 插槽,我们通过以下不同的描述样式来描述其功能:
发现服务描述对意图、需求和 CaT 任务没有帮助,而对 NonCaT 任务的影响也不同于 SG-DST 和 multiwoz2.2 数据集。
主要发现 SNLI 在意图任务上有帮助,SQuAD2 主要对 NonCat 任务有帮助,而它们在 Cat 任务上都没有太大帮助。
在本文研究中,我们研究了模式对话状态跟踪的三个问题:编码器架构、补充训练的影响和有效的模式描述风格。主要发现如下:
通过缓存 token 嵌入而不是单个 CLS 嵌入,一个简单的 部分注意融合编码器可以获得比双编码器更好的性能,同时推断速度仍然比交叉编码器快两倍
。我们通过对 两个中间任务的补充训练来量化增益
。通过根据最近的工作仔细选择具有代表性的描述风格,我们是第一个 在模式引导的对话框中对不同的描述风格进行齐构 / 异构评估
的方法。结果表明,简单的基于名称的描述在意图和要求任务上表现良好,而 NonCat 任务受益于更丰富的描述风格
。所有的任务在训练和测试之间的描述风格上都存在不一致,尽管不同程度各不相同。
我们的研究主要在两个数据集上进行:SG-DST 和 multiwoz2.2,而编码器架构的速度精度平衡和补充训练的发现预计 是数据集无关的
,因为它们更多地 依赖于子任务的性质
,而不是数据集。基于我们提出的基准测试描述套件,齐构和异构评估揭示了跨风格模式引导对话建模的鲁棒性,我们相信我们的研究将为未来的研究提供有用的见解。
本文主要解决的问题是使用 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,可以做到在训练的时候不需要额外标注数据。
某个对话的第 t 轮拥有的所有对话上文信息用 x 表示如下:
本文要解决的问题便是如何通过 x 做改写生成一个改写之后的句子,并且达到 NLU 的目的。
而这个 f 函数(query reformulation model)在本文中使用的是 PGN,分为 encoder 和 decoder:
说白了就是来自于在 x 上的 attention 权值并利用 softmax 转变为概率含义
。对于训练数据而言,可以用下式表示 rewrites-corpus(重写语料库),其中 i,t,j 分别表示:第 i 个对话数据,某个对话中的第 t 轮,j 表示正确改写中的第 j 个改写(即 golden rewrite 不唯一,可能有多个正确改写)
而对于普通 PGN 而言,目标函数如下,其中新增的下标 k 表示第 i 个对话中第 t 轮第 j 个正确改写中的第 k 个词。
如下图中的示例(对应题图中的对话),在当前轮 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 中出现添加一个监督信号:
本文使用 query reformulation 方法解决多轮对话中的 指代消解问题
,通过改写后多轮对话中带有指代词的 query 也能被改写为包含完整信息的句子,这有一个特别大的好处是:可以与其他模块进行无缝衔接,因为改写之后的句子是完整的句子,因此可以正常调用其他模块,并且并不需要带上上下文信息,这样会使得整个对话各个模块之间的耦合没有那么严重。而针对具体做法则是一个带有 copy 机制的 PGN 以及融合了一个额外的输入中 entity 是否出现于 golden rewrites 的监督信号(即 multi-task)。
另外,指代消解问题在多域 DST 当中存在等价问题(引用),当前大部分研究都是利用自注意力网络来建模对话历史的关系,用而本文的 query reformulation 方法是否也可用于面向任务的多域 DST,值得探索。