分享一下最近看的对话状态跟踪(DST)方面的论文。
Deep Neural Network Approach for the Dialog State Tracking Challenge
- SIGDAL 2013
This paper presents a technique which solves the task of outputting a sequence of probability distributions over an arbitrary number of possible values using a single neural network, by learning tied weights and using a form of sliding window.
这篇文章用DNN的方法做对话状态跟踪,本质上是计算当前轮t时刻,NLU模块获得的value在每个slot上的概率。即若当前轮t时刻共用m个value,dialog state包含了n个语义槽,需要计算概率。本文中对于每轮人工选取了M个特征,当前轮的dialog state取决于某个窗口T内的NLU输出的value值,因此每轮共有MT个特征,最后的神经网络输出为一个标量值,同时也是轮t和某一value的函数,即。计算得到的仅和value有关,为了计算该value属于某一个slot的概率,概率值的最终定义为:
其中是关于的训练参数,因此一共需要训练n个模型对每个slot分别进行判断。
Neural Belief Tracker: Data-Driven Dialogue State Tracking
- ACL 2017
Motivation:Most current approaches have difficulty scaling to larger, more complex dialogue domains. This is due to their dependency on either: a) Spoken Language Understanding models that require large amounts of annotated training data; or b) hand-crafted lexicons for capturing some of the linguistic variation in users' language. We propose a novel Neural Belief Tracking (NBT) framework which overcomes these problems by building on recent advances in representation learning.
本文的将NLU模块和DST模块结合,用端到端简化了模型设计,也减少了标注(对NLU的标注),提高了性能。
在DSTC的框架下,DST依赖于一个定义了用户intent的domain ontology,这个domain ontology是由很多slot-value对组成。因此DST实际上是鉴定用户utterances中的ontology实体,难点包括lexical variation(如何将非标准的表达映射到ontology的标准表达)、dynamics of context(动态的上下文信息,如何利用前文信息)、noisy automated speech recognition (ASR) output(语音识别模块的噪声)。
有很多很多基于delexicalisation的方法,这些方法依赖于hand-crafted semantic lexicons,如处理lexical variation的难题是通过创建一个semantic dictionary的方式。这种方法的局限很大,特别是对于lexical variation非常多的语种,或者口语中较多的同义词和新词。因此本文的方法是用预训练的词向量来解决lexical variation的问题。
本文提出的模型名为NBT,框图如下:
NBT.png
本质上依然是一个对所有slot-value对迭代的二分类模型,但是没有用delexicalisation的方法,模型大大简化。NBT的三个输入分别是system output、user utterance和candidate pairs。
- sytem output为当前用户轮前的系统输出。系统输出主要有两种,分别是system request和system confirm。system request即系统询问某slot的值,这时的system output可由该slot的embedding 表示。system confirm即系统确认用户的目标,包含了一个具体的slot-value对,这时的system output可由该slot-value对的embedding 表示。图中的context representatoin即为三元组,若某向量不存在,用零向量代替。
- user utterance为当前轮用户说的话。utterance representation为句子的向量表示,文中提出了DNN+n-gram和CNN两种表示方法。
- candidate pair是当前循环考察的slot-value对,由slot和value的embedding组成,即二元组。
最后的输出为一个二分类的标签,表示当前的candidate pair是否代表了当前时刻的dialog state。可以看出,在这里只需要定义domain ontology,不需要用delexicalisation的方法手工提取特征或者定义semantic dictionary。因此这种方法很适合处理大规模的对话。但是本文的缺点和delexicalisation的方法一样,无法处理未知的value,即OOV词汇。不过这篇文章是一个很好的baseline。
Global-Locally Self-Attentive Dialogue State Tracker
- ACL 2018
This paper uses global modules to share parameters between estimators for different slots of dialogue states, and uses local modules to learn slot-specific features. We show that this improves tracking of rare states and achieves state-of-the-art performance on the WoZ and DSTC2 state tracking tasks.
在DST任务中,一个重要的问题是对于训练集中不常见的slot-value对,抽取效果不好(A key problem in DST that is not addressed by existing methods is the extraction of rare slot- value pairs that compose the state during each turn)。在之前的方法中,对于每个slot都是建立独立的模型分别判断。本文的创新之处在于DST的特征不仅有slot specific的,也有global的特征,global特征对于所有slot是共享的,试图捕捉不同slot的相关性。引入global特征能够使联合其他信息来考察某一slot-value对,因此对于不常见的slot-value对,能够使用的资源不仅有slot specific特征还有global特征,这样能够显著提升DST的效果。
文章的模型(GLAD)结构图如下:
可以看出,模型由 encoder module和scoring module两部分组成。encoder module使用了global的encoder和slot-specific的encoder,两种encoder的结构实际上一样的,都是BiLSTM+self attention,但是global encoder的参数对于所有的slot-value候选值都会进行更新,而slot-specific encoder的参数仅对特定slot更新,最后encoder的输出为一个语义矩阵 Pointer Network.png
本文的模型如下:
模型结构.png
可以看出,除了pointer network外,还有一个分类器。这个分类器主要用于处理non-pointable的情况,如None和dontcare。在进行decode之前,先进行分类,如果是前两种情况,则当前时刻不需要进行slot filling;如果是other,说明此时上下文中有slot values,这时再用pointer network进行slot filling。
本文在训练模型的时候用了一个dropout的技巧。这个技巧是为了解决一个slot filling中问题:insufficient training of word context features。这个问题是说,某些slot-values对在对话中出现的次数过多,模型倾向于学习到这些slot-value的词特征,而没有学到上下文特征和模式(the model oftentimes only learns to memorize these frequent slot values, and not the contextual patterns which can be more crucial for extracting slot values not known in advance)。对于人类而言,即使是没有见过的词汇,根据上下文信息也能够知道这个词汇是属于哪一个slot的,因此我们希望模型也能有这样的能力。文章进行dropout的方法是,对于训练集中所有slot-values,按概率让这个value的词向量为0,强迫模型学习上下文特征,而不是词特征。最后的实验表明,随着dropout概率在一定范围的提高,在以known slot values识别率下降很小的代价下,对于unknown slot values的识别有显著提升,综合的识别率也有明显提升。
个人认为本文的实际上是用序列标注的框架去解决DST问题,而不是使用传统的分类的框架。因此本文的问题也依然存在,即slot-value是从原文中进行拷贝,拷贝后还需要进行后处理将原文内容映射到ontology中去。另外由于DSTC数据集比较简单,通常拷贝的内容仅有一个单词,对于复杂问题难以迁移。
Sequicity: Simplifying Task-oriented Dialogue Systems with Single Sequence-to-Sequence Architectures
- ACL 2018
We propose a novel, holistic, extendable framework based on a single sequence-to-sequence (seq2seq) model which can be optimized with supervised or reinforcement learning.
本文提出了一种叫做Sequicity的框架,即用seq2seq去解决对话系统中的DST和response generation。对于DST,文中提出了一种belief span(bspan),用于表示当前状态。bspan分为informable和requestable的,用分隔符分开,如:<Inf> Italian ; cheap </Inf><Req></Req>,这个例子中的informable slot的value有Italian和cheap,没有requestable slot。
Sequicity的基本思想是用, 和生成新的 和回复。即
这里的代表在ontology中找到的result。通过上面的公式可以看出,Sequicity框架的解码包括两步,首先是解码得到,这一步是用CopyNet得到的原文中的片段,分为requestable slot和informable slot。然后在ontology中搜索结果。的表现有三种形式,分别是multiple matches,exact match和no match。因此有三种,用三维的one-hot向量表示。在解码系统回复的时候,将拼接在词的embedding上即可。解码系统回复时同样使用CopyNet,但是输入为,因为作者认为此时已经获取了文中的重要信息。
模型在Cam676和KVRET两个数据集上进行了实验,通过在BELU,Entity match rate,Success F1和Training time四个指标上和不同的baseline比较,Sequicity取得了最佳性能。此外文章还进行了ablation实验,考察模型的不同部分对结果的帮助。文章发现在模型中有关键的作用,拥有,即使使用attention seq2seq模型,效果也优于无,但有CopyNet的模型。另外,该模型训练参数较少且训练较快,得益于copy机制,该模型在处理OOV问题也有不错的表现。
本文实际上和DST关系不大,是一个端到端的对话系统,文中提出的bspan很有借鉴意义,笔者认为可以用这个思想处理一些半监督或无监督的任务。有文章受到该思路的启发,提出了一种无监督的DST系统,有兴趣的读者可以看看。
Zero-Shot Dialog Generation with Cross-Domain Latent Actions
- SIGDAL 2018
The generative end-to-end dialog model (GEDM)is data-hungry and suffers from the data scarcity problem. The key idea of this paper lies in developing domain descriptions that can capture domain-specific information and a new type of GEDM model that can generalize to a new domain based on the domain description.
现有的对话系统都是建立在特定领域的,而且在该领域需要足够大的数据集才能有不错的表现。相比之下人类在跨领域的任务性对话上有很强的适应性,能够较轻松地完成不同领域的迁移。本章作者认为用领域描述(domain descriptions)去表达知识比用对话实例(example dialogs)更有效也更直接。而且能够使得模型进行跨领域迁移。
本文提出的zero-shot dialog generation(ZSDG)可看为一个训练集为源领域的训练数据和源、目标领域描述的学习问题。具体的形式化如下:
上面的公式中,和代表上下文的生成的回复,为领域,为领域描述。
本文的领域描述方法名为Seed Responses(SR)。SR假设模型可以发现不同领域回复的相似性,因此在源领域上训练到的对话策略可以迁移到目标领域上。SR的表示为三元组:。其中为该领域采样的第个回复,为该回复的标注,这个标注是一些能够帮助系统在不同领域推理的显著特征,通常可以表示成dialog act和slot-value的形式。对于每个领域都需要列出一个可能的回复列表以获得该领域的SR。
本文的主模型名为Action Matching Encoder-Decoder。它是一个encoder-decoder架构,包含编码器将上下文和领域编码成一个分布式的表示,以及解码器将解码成。这个模型有两个目标:
- 学习一个能够在所有源领域重用的及在目标领域潜在共享的跨领域的。(learn a cross domain that can be reused in all source domainand potentially shared with target domains as well)为了实现这个目标,我们将和结合。结合的方式很简单,就是将拼接到的每个utterance的第一个token上。这样虽然简单但是让模型能够将领域编码,而且这个方法的通用性强。在训练时用同一个训练不同领域的数据。
- 创建一个能够加入领域描述知识的机制以至于在解码的时候在目标领域能够生成全新的回复。(create a mechanism to incorporate knowledge from the domain descriptions into so that it can generate novel responses when tested on the target domains)为了实现这个目标,我们将所有领域的回复和投影到同一个隐动作空间,分别是和。这个映射需要满足:当,有。这里的映射为一个表示模型,,。
在训练模型的时候,有两种数据,分别用于计算不同的loss:
- 第一种数据是所有领域的领域描述数据。这种数据的loss函数为。第一项是解码器的loss,第二项是距离函数,让回复和它的标注的映射尽可能接近。
- 第二种数据是源领域的数据。这种数据的loss函数为。第一项是解码器的loss,第二项是距离函数,让回复和编码器对编码后的结果尽可能近。
在训练模型时,交替训练两个loss即可。
在模型选择上,选择了BiGRU,选则了层级RNN(HRE),在基于attention和copy两种模型都进行了实验。
在实验设计方面,本文开发了一个自动产生对话的对话生成器SimDial。将产生的数据分为in domain、unseen slots、unseen NLG和new domain四种,以第一种数据作为训练集,实验结果发现在结合了copy机制后的AM表现出了最佳的性能。即使在new domain,模型的表现也达到了in domain的80%。模型在unseen slots的上,得益于copy机制,表现优于attention机制;在new domain上,copy和attention所生成的都是在源领域的回复,而AM生成了新领域的回复。在另一个数据集Stanford Multi-Domain Dialog Data(SMD)上,实验用两个in domian数据去范化三个new domain,效果同样远超baseline。
网友评论