最新模型-TRADE【Transferable Dialogue state generator】
论文名称:Transferable Multi-Domain State Generator for Task-Oriented Dialogue Systems
Abstract
本文的模型叫做TRADE,全称Transferable Dialogue state generator,可转换的对话状态生成器
根据多领域DST简史的调研,TRADE属于open-vocabulary based DST方法,这种方法说白了就是为了消除对预定义的本体的过度依赖性,以及寻求一种跨领域共享知识的方法。这类方法是在对话上下文中,对每一个槽位,通过寻找text spans来跟踪槽值,寻找合适的value。这种方法从对话历史中灵活地抽取或生成槽值,但是需要要努力预测出对话历史中未出现的槽值。在解决unseen slot values问题上有所成果,但是DST的运行效率低,因为它们要在每一轮对话的一开始预测对话状态。代表模型SpanPtr、TRADE、COMER。
TRADE模型体现了encoder-decoder framework的潜力,但在计算上效率不高,因为它在每一turn为全部slots生成values。拷贝机制的使用很重要
COMER模型通过使用hierarchical decoder,一定上解决了TRADE的上述缺陷。hierarchical decoder,层次堆叠的解码器,以分层的方法解码domains, slots, and values,把当前轮对话状态本身生成为target sequence。此外,它们第一次提出了ICT的概念,以衡量不同DST模型对话状态预测的efficiency。COMER同样在slot values子集上生成,但是没有利用上一轮的对话状态信息。
此博客我们先考虑TRADE。后续再进行TRADE、COMER、SOM-DST的对比。
本文的挑战:多领域DST的可扩展性,解决unseen slot values问题,称为transferring ability。
一些名词:
utterance:话语。包括用户话语与系统话语。system utterances + user utterances = dialogue history 。
共享知识=传递知识:增加可扩展性
Introduction
传统的predefined-ontology based DST包括但不限于两个缺陷:
- 完整的本体很难事先拿到手
- 即使有了本体,也会很复杂,可能的values会非常多,造成传统的基于candicate value list上分类的思想越来越不适用。
MultiWOZ数据集出现了,这个多领域问答数据集带来了一些调整:
- DST模块需要决定的状态是domain-slot-value三元的,也就是说本体更庞大了
- DST模型需要能运行multi-turn mapping,而非过去的single-turn mapping,意思是说,三元组的推测发生在不同的domain的多个轮次,而非仅仅一个轮次。
为了应对上述调整,我们总结了DST模型需要发展出share tracking knowledge across domains(跨领域共享跟踪中的知识)的能力,或者transferring knowledge的能力。因为(1)不同领域的不同槽位的value是彼此粘接的;(2)unseen domain/zero-shot/few-shot domain的学习也需要通过已有领域的相似的slot
本文的模型:TRADE,其贡献可以归纳如下:
- 通过context-enhanced slot gate和copy mechanism,解决multi-turn mapping问题。
- 跨领域共享参数,不需要预定义本体,解决share/transfer knowledge across domains的问题。
- 利用已有的seen领域实现向unseen领域的适应。
Trade Model
模型包括三部分:an utterance encoder, a slot gate, 以及 a state generator:
和多语言神经机器翻译(Johnson et al. (2017))一样,对所有模型共享参数, state generator对每个domain-slot pair用不同的start-of-sentence token开始。
-
utterance encoder:把对话话语编码成定长向量的序列
-
slot gate:全称context-enhanced slot gate,与state generator结合用于判别话语中提到了哪个domain-slot pair。context-enhanced slot gate预测每一个pairs是否真地由对话触发(triger),通过一个three-way分类器。
-
state generator:学名copy-augmented decoder。所有domain-slot pairs的输出tokens独立地解码,以预测其相应的values
如图2是我们的模型结构,可看做一个encoder-decoder模型,话语编码器将一段对话历史编码进来,然后用带槽位门限机制的状态生成器(解码器)预测槽位和生成状态。
设对话共有T轮,T个user utterance and system response pairs组成集合。
每一轮的对话状态(一个domain-slot-value的三键映射表)记为,组成集合。
所有不同的领域构成集合D,不同槽位构成集合S,每个domain-slot pair的真实word sequence记为。
Utterance Encoder
用于encode utterance的encoder,可以是任何一种的encoder,本文使用了双向GRU。所谓的utterance其实user utterance and system response pair,将个这样的utterances编码,相当于是编码了一段对话历史。
轮到轮的对话话语(个user utterance and system response pairs)组成集合,形式上是全部words的拼接。编码后的向量记为(别名:encoder hidden states)。
为什么要有个长度呢?因为我们主张解决multi-turn mapping问题,那么编码进来的就应该是好几轮的utterances,而不是只有当前轮的utterance,这才是对话历史嘛。
总结:我们使用最近的轮对话历史作为utterance encoder的输入,编码成。
State Generator
状态生成器是open-vocabulary based DST即生成式DST必有的模块,功能是使用输入源中的text来生成slot values,学名拷贝(copy)。
目前已有三种通用的拷贝方法:
- index-based copy:Pointer networks.Vinyals et al., 2015),
- hard-gated copy:《Pointing the unknown words》(Gulcehre et al., 2016); 《Mem2seq: Effectively incorporating knowledge bases into end-to-end task-oriented dialog systems.》Madotto et al.,2018;《Global-to-local memory pointer networks for task-oriented dialogue》. Wu et al., 2019
- soft-gated copy:《Get to the point: Summarization with pointergenerator networks》(Seeet al., 2017); 《The natural language decathlon:Multitask learning as question answering》McCann et al., 2018).
其中,基于索引的拷贝不适用于DST任务,因为真实value的确切的words并不是总能在utterance中找到的。硬门拷贝通常需要gating function上额外的监督。所以,我们采用soft-gated pointer-generator copying来将vocabulary上的分布与对话历史上的分布合成成单一输出分布。
状态生成器可看做解码模块,decoder选用GRU,独立地预测每个domain-slot pair的value。
我们把domain和slot的嵌入向量求和,作为decoder的第一个输入。
在解码的时间步,对于第个domain-slot pair(一个word),生成器将词向量作为它的输入,返回一个隐藏状态。
考虑:
生成器同时干两件事,一是把这个隐藏状态映射到一个词表空间(通过一个可训练嵌入);二是用隐藏状态在编码了的对话历史上计算历史注意力。然后,两个分布加权求和,作为最终输出分布:
是一个标量,计算如下:
其中,是context vector,是context和domain-slot共同结合的结果。
因为最终输出分布是一个vocabulary与history的加权量,所以我们的模型可以生生词表中未预定义的单词(可扩展性)。
总结:状态生成器以domain-slot pair的嵌入信息、来自encoder的对话历史信息、一个为输入,输出这个word的分布。这个过程中,我们顺便表示出了context vector。
Slot Gate
slot-gate是一个判断是否需要State Generator去generate的模块。槽位门限的思想是不可或缺的,因为它能大幅提升values预测的效率。本文的slot-gate利用了上下文信息,所以叫做context-enhanced slot gate。
对第个domain-slot pair,它的context-enhanced slot gate记为。是上一部分计算的context vector,k=0表示它是decoder第一个时间步的隐藏状态。
G是一个简单的three-way分类器,把取自隐藏状态的上下文向量映射成[ptr, none, dontcare]上的概率分布。如果是none就将slot置空,如果是dontcare说明slot不关注。如果是ptr就代表需要进入状态生成器进行predict。
其中这个gate算是较新的多领域DST的标配了,与 slot-carryover、以及SOM-DST的预测组件功能相近,都是在slot的子集上预测value,提高效率。
总结:slot-gate是一个三分类器,对每个domain-slot pair判断是否需要predict value。
Optimization
slot gate与状态生成器在训练中一起优化,损失函数是两个L的加权和。
Unseen Domain DST
TRADE总是标榜自己能解决unseen问题,那么具体怎么做呢?unseen问题包括zero-slot与few-slot两个设置,前者我们假定新领域没有训练数据,后者我们假定有1%的训练数据(大约20到30场对话)。
Zero-shot DST
理想情况DST应该能对新领域实现迁移。比如,DST已经学会了train领域里的departure槽位,那么它应该能迁移到text领域里的相近槽位中。注意,生成式DST模型的输入包括领域D、槽位S,对话历史(上下文)X,生成value,即history-domain-slot-value的四元样例。跨领域中,相同的X出现在source domains和target domains中,但是domain-slot pairs是unseen的。这种设置下,如果target slots里没有slot出现在source slots中,那么挑战会很大。
Expanding DST for Few-shot Domain
few-shot方面的扩展有两个好处:(1)能够让DST快速适应新的领域,仅需要很小量的训练数据。(2)不需要对已经学过的领域全部数据再重新训练。
我们考虑一个straightforward naive baseline,两个具体的持续学习(continual learning)技术:elastic weight consolidation(EWC)和gradientepisodic memory (GEM)来对我们的模型进行微调。详细的看原文吧
Experiments
数据集:Multiwoz上的5个领域。
训练细节:包括两部分,Multi-domain Joint Training和Domain Expanding
结果:将TRADE与单领域DST的GLAD、GCE、SpanPtr等进行了对比。其中GCE是最好的单领域DST模型,SpanPtr的copy机制与槽值生成思想和本文一脉相承。我们推测,SpanPtr输在使用的拷贝方法是index-based copying,某个槽位的真实标注是cheap,而用户非常可能说economical, inexpensive, or cheaply之类近义词,而非cheap。
领域扩展方面的实验结果如图3,通过余弦相似度展示新领域新槽位如何从已有领域推论而来。更多细节看原文吧,这里略过。
Error Analysis
一些槽位错误的情况。分析推测,(1)一个slot的所有可能的values数量越多,越有可能出错,例如restaurant-name槽位;(2)value是数字的slot出错率最低,例如people、stay、arrrive_by槽位;(3)hotel领域的type槽位出错率意外地高,尽管它在本体只有两个可能的vlaue,我们猜测原因是hotel-type pair的标签在数据集里通常miss了(?)。
Zero-shot DST error analysis的图就不贴了,大意是跨领域下的slots越相似,share的效果越好。