Dialog State Traking 论文笔记

分享一下最近看的对话状态跟踪(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个语义槽,需要计算概率P_{t}(s_{n}=v_{m})。本文中对于每轮人工选取了M个特征,当前轮的dialog state取决于某个窗口T内的NLU输出的value值,因此每轮共有MT个特征,最后的神经网络输出为一个标量值,同时也是轮t和某一value的函数,即E(v,t)。计算得到的E仅和value有关,为了计算该value属于某一个slot的概率,概率值的最终定义为:
P_{t}(s_{n}=v_{m})=\frac{E(v_{m},t)}{z_{n}}
z_{n}=e^{B_{n}}+\sum_{v}e^{E(v,t)}
其中B_{n}是关于s_{n}的训练参数,因此一共需要训练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 T_{q}表示。system confirm即系统确认用户的目标,包含了一个具体的slot-value对,这时的system output可由该slot-value对的embedding (T_{s}, T_{v})表示。图中的context representatoin即为三元组(T_{q}, T_{s}, T_{v}),若某向量不存在,用零向量代替。
  • user utterance为当前轮用户说的话。utterance representation为句子的向量表示,文中提出了DNN+n-gram和CNN两种表示方法。
  • candidate pair是当前循环考察的slot-value对,由slot和value的embedding组成,即二元组(c_{s}, c_{v})

最后的输出为一个二分类的标签,表示当前的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)结构图如下:

GLAD.png

可以看出,模型由 encoder module和scoring module两部分组成。encoder module使用了global的encoder和slot-specific的encoder,两种encoder的结构实际上一样的,都是BiLSTM+self attention,但是global encoder的参数对于所有的slot-value候选值都会进行更新,而slot-specific encoder的参数仅对特定slot更新,最后encoder的输出为一个语义矩阵
H
和一个语义向量
c

scoring module为某一slot-value对是否为用户所表达的意图打分,这里的scoring module分为两部分。首先是utterance scorer,它主要是判断候选slot-value对是否显式地出现在了用户 utterance中,因此不需要之前的system action信息。而 action scorer主要判断slot-value是否隐式地出现在用户utterance中,即根据system action的回复,这种回复有时不会显式的包括候选slot-value(如回答系统的是否问题。),因此需要之前的system action信息。最后将输出的分数加权,再通过sigmoid函数判断概率值。

本文的模型在DSTC2和WoZ两个数据集上都取得了state-of-art的结果。

An End-to-end Approach for Handling Unknown Slot Values in Dialogue State Tracking
  • ACL 2018

They highlight a practical yet rarely discussed problem in dialogue state tracking (DST), namely handling unknown slot values. Previous approaches generally assume predefined candidate lists and thus are not designed to output unknown values, especially when the spoken language understanding (SLU) module is absent as in many end-to-end (E2E) systems.

这篇文章主要有三个贡献:

  1. 正式提出了DST中一个常见且重要的问题:未知slot values的检测(handling unknown slot values in the absence of a predefined ontology)。
  2. 用end-to-end模型进行DST,使用的模型是pointer network。
  3. 提出了一种dropout技巧,这种技巧能大大提升位置slot values的召回率。

在DST中,通常的框架是涉及一个fixed ontology,用户的对话状态是可枚举的,由fixed ontology定义。因此DST问题常常转化为分类问题(多分类、二分类)。由于ontology是预定义的,因此无法抽取未定义的slot values。本文借助了POS tagging的框架,认为slot filling是一个标注问题,只要对话中(用户和系统)显式出现了某种slot value,该方法就能提取出来。

pointer network为本文DST的主要框架,这是2015年发布在NIPS上的工作。这是一种seq2seq模型的变种,它比传统的seq2seq+attention的模型更加简洁高效,主要解决了输出严重依赖输入的问题(the output dictionary size depends on the number of elements in the input sequence)。意思是说,在很多任务中,输出token的字典大小依赖于输入的长度或输入的字典大小(文中的例子分别是finding planar convex hulls、computing Delaunay triangulations、planar Travelling Salesman Problem)。对于不同长度的训练样本,需要训练不同的模型(softmax输出层个数变动)。pointer network的解决方案是直接将归一化后的attention score作为下一个token的概率,即
\begin{align} u_j^i=v^Ttanh(W_{1}e_{j}+W_{2}d_{i}) j \in (1,...,n) \\ p(C_{i}|C_1,...C_{i-1},P)=softmax(u^i) \end{align}
这样对于不同长度的输入可以只训练一个模型,这种方式在处理OOV时也有优势。下图可以看到pointer network和以前seq2seq+attention结构的区别:

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的基本思想是用B_{t-1}R_{t-1}U_t生成新的 B_t和回复R_t。即
\begin{align} B_t={\bf \rm seq2seq}(B_{t-1}R_{t-1}U_t|0,0) \\ R_t={\bf \rm seq2seq}(B_{t-1}R_{t-1}U_t|B_t, {\bf \rm k}_t) \end{align}
这里的{\bf \rm k}_t代表B_t在ontology中找到的result。通过上面的公式可以看出,Sequicity框架的解码包括两步,首先是解码得到B_t,这一步是用CopyNet得到的原文中的片段,分为requestable slot和informable slot。然后在ontology中搜索结果{\bf \rm k}_t{\bf \rm k}_t的表现有三种形式,分别是multiple matches,exact match和no match。因此{\bf \rm k}_t有三种,用三维的one-hot向量表示。在解码系统回复R_t的时候,将{\bf \rm k}_t拼接在词的embedding上即可。解码系统回复R_t时同样使用CopyNet,但是输入为B_t,因为作者认为此时B_t已经获取了文中的重要信息。

模型在Cam676和KVRET两个数据集上进行了实验,通过在BELU,Entity match rate,Success F1和Training time四个指标上和不同的baseline比较,Sequicity取得了最佳性能。此外文章还进行了ablation实验,考察模型的不同部分对结果的帮助。文章发现B_t在模型中有关键的作用,拥有B_t,即使使用attention seq2seq模型,效果也优于无B_t,但有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)可看为一个训练集为源领域的训练数据和源、目标领域描述的学习问题。具体的形式化如下:
\begin{align} {\rm Train\ Data}:\ \{{\rm \bf c},{\rm \bf x},d\} \sim p_{source}({\rm \bf c},{\rm \bf x},d);\ \{\phi(d)\}, d \in D \\ {\rm Test Data}:\ \{{\rm \bf c},{\rm \bf x},d\} \sim p_{target}({\rm \bf c},{\rm \bf x},d) \\ {\rm Goal}:\ {\cal F}:\ C \times D \rightarrow X \end{align}
上面的公式中,{\rm \bf c}{\rm \bf x}代表上下文的生成的回复,d为领域,\phi为领域描述。
本文的领域描述方法名为Seed Responses(SR)。SR假设模型可以发现不同领域回复的相似性,因此在源领域上训练到的对话策略可以迁移到目标领域上。SR的表示为三元组:\phi(d)=\{{\rm \bf x}^{(i)},{\rm \bf a}^{(i)},d\}_{\rm seed}。其中{\rm \bf x}^{(i)}为该领域采样的第i个回复,{\rm \bf a}^{(i)}为该回复的标注,这个标注是一些能够帮助系统在不同领域推理的显著特征,通常可以表示成dialog act和slot-value的形式。对于每个领域都需要列出一个可能的回复列表以获得该领域的SR。

本文的主模型名为Action Matching Encoder-Decoder。它是一个encoder-decoder架构{\cal F},包含编码器{\cal F}^e将上下文{\rm \bf c}和领域d编码成一个分布式的表示{\rm \bf z_c}={\cal F}^e({\rm \bf c},d),以及解码器{\cal F}^d{\rm \bf z_c}解码成{\rm \bf x}。这个模型有两个目标:

  • 学习一个能够在所有源领域重用的及在目标领域潜在共享的跨领域的{\cal F}。(learn a cross domain {\cal F} that can be reused in all source domainand potentially shared with target domains as well)为了实现这个目标,我们将{\rm \bf c}d结合。结合的方式很简单,就是将d拼接到{\rm \bf c}的每个utterance的第一个token上。这样虽然简单但是让模型能够将领域编码,而且这个方法的通用性强。在训练时用同一个{\cal F}训练不同领域的数据。
  • 创建一个能够加入领域描述知识的机制以至于在解码的时候在目标领域能够生成全新的回复。(create a mechanism to incorporate knowledge from the domain descriptions into {\cal F} so that it can generate novel responses when tested on the target domains)为了实现这个目标,我们将所有领域的回复{\rm \bf x}{\rm \bf a}投影到同一个隐动作空间Z,分别是{\rm \bf z_x}{\rm \bf z_a}。这个映射需要满足:当{\rm \bf z}_{\rm \bf a1}^{d1} \approx {\rm \bf z}_{\rm \bf a2}^{d2},有{\rm \bf z}_{\rm \bf x1}^{d1} \approx {\rm \bf z}_{\rm \bf x2}^{d2}。这里的映射{\cal R}为一个表示模型,{\rm \bf z_x}={\cal R}({\rm \bf x},d){\rm \bf z_a}={\cal R}({\rm \bf a},d)

在训练模型的时候,有两种数据,分别用于计算不同的loss:

  • 第一种数据是所有领域的领域描述数据\{{\rm \bf x},{\rm \bf a},d\}_{\rm seed}。这种数据的loss函数为{\cal L}_{\rm dd}({\cal F}^d,{\cal R})=- \log p_{{\cal F}^d}({\rm \bf x}|{\cal R}({\rm \bf a},d))+\lambda {\Bbb D}({\cal R}({\rm \bf x},d)||{\cal R}({\rm \bf a},d))。第一项是解码器的loss,第二项是距离函数,让回复{\rm \bf x}和它的标注{\rm \bf a}的映射尽可能接近。
  • 第二种数据是源领域的数据\{{\rm \bf c},{\rm \bf x},d\}。这种数据的loss函数为{\cal L}_{\rm dialog}({\cal F},{\cal R})=- \log p_{{\cal F}^d}({\rm \bf x}|{\cal F}^e({\rm \bf c},d))+\lambda {\Bbb D}({\cal R}({\rm \bf x},d)||{\cal F}^e({\rm \bf c},d))。第一项是解码器的loss,第二项是距离函数,让回复{\rm \bf x}和编码器对{\rm \bf}编码后的结果尽可能近。

在训练模型时,交替训练两个loss即可。
在模型选择上,{\cal R}选择了BiGRU,{\cal F}^e选则了层级RNN(HRE),{\cal F}^d在基于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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343