【论文笔记】2017-ACL-Neural Belief Tracker: Data-Driven Dialogue State Tracking

2017-ACL-Neural Belief Tracker: Data-Driven Dialogue State Tracking

2021-05-22

概述

问题动机

 当时的方法都无法扩展到更大、更复杂的对话领域中,问题在于:

  • SLU 需要大量的标注训练数据
  • 用手工制作的词汇来捕捉用户语言中的一些语言变化

主要贡献

 作者提出了一种新的神经信念跟踪(NBT)框架,基于表示学习的最新进展,克服了上述问题。NBT模型是对预先训练好的单词向量进行推理,学习将它们组合成用户话语和对话上下文的分布式表示。我们对两个数据集的评估表明,这种方法超过了过去的局限性,匹配了最先进的模型的性能,这些模型依赖于手工制作的语义词汇,并在不提供这些词汇时表现优于它们。

  • NBT模型是第一个成功地使用预先训练好的单词向量空间来提高信念跟踪模型的语言理解能力的模型
  • 由于使用的是基于语义相似度训练的预训练词向量,因此模型的参数可以在不同槽之间共享
  • 具有学习领域特定释义和其他变体的灵活性,这使得依靠精确匹配和去词缀化作为一种可靠的策略是不可行的

模型

 神经信念跟踪器(NBT)是一种模型,设计用于检测在对话过程中在给定回合中构成用户目标的槽值对。它的输入包括在用户输入之前操作的系统对话、用户话语本身以及它需要做出决定的单个候选插槽值对。例如,模特可能不得不预测”FOOD=IATLIAN”的目标是否在“I am looking for good pizza”中表达出来。为了执行信念跟踪,NBT模型迭代所有候选插槽值对(由本体定义),并决定哪些插槽值对刚刚由用户表示。

image-20210522092844123

 上图显示了模型中的信息流。NBT层次结构中的第一层在给定三个模型输入时执行表示学习,为用户话语(r)、当前候选槽值对(c)和系统对话作用$(t_q、t_s、t_v)$生成向量表示。随后,学习到的向量表示通过上下文建模和语义解码子模块进行交互,获得中间交互(summary vectors)摘要向量$d_r、d_c$和$d$。这些作为最终决策模块的输入,该模块决定用户是否表示候选槽值对所表示的意图。

Representation Learning

 对于任何给定的用户话语、系统行为和候选槽值对,表示学习子模块生成向量表示,作为模型下游组件的输入。并且,所有的表示学习子组件都使用预先训练好的词向量集合。作者使用的是Paragram-SL999 word vectors,一种基于语义相似度训练的词向量表示。这样,在测试时,unseen的单词与熟悉的槽值语义相关。将纯粹通过它们在原始向量空间中的位置来识别。

令$u$表示一个长度为$ku$的用户话语表示 $u = [u_1,u_3,…,u{k_u}]$,设$v_i^n$是从索引$i$开始的$n$个词向量的连接:

$\oplus$: vector concatenation

作者提出了两种不同于生成$u$表示的方法的模型变体:NBT-DNN和NBT-CNN。两者都作用于话语的组成n-gram表示。

NBT-DNN

image-20210522095901862

该模型生成话语的累加 unigrams, bigrams, trigrams 表示

再难过softmax函数归一化:

最后将三者相加后得到最终表示:

该模型使用的累加n-gram表示只是话语中所有单词向量的未加权和。理想情况下,该模型应该学会识别话语的哪些部分与后续的分类任务更相关。例如,它可以学会忽略动词或停止词,并更注意更有可能表达插槽值的形容词和名词。

NBT-CNN

image-20210522100557960

令 $mn = [v_1^n;v_2^n;…;v{k_u-n+1}^n]$, 则3个中间表示为:

$F_n^s$ : 滤波器

之后经过非线性变化和最大值池化:

同样三者相加后得到最终表示:

Semantic Decoding

 这个模块对表征 $r$ 检测是否包含候选slot-value对 $c$ ,处理方法也比较简单。($c_s,c_v$)分别是slot和value的词向量表示,投影映射成与 $r$ 相同维度的向量,点积求相似度$d$。

这个模块主要是计算slot-value对和用户句子的关系,简单而言的话,slot的词向量(如果有多个词则简单相加)和value的词向量(如果有多个词则简单相加),通过一个全连接层和非线性映射后得到表征c(该表征将slot和value的信息融合成一个向量),与句子表征r进行element-wise的乘积,得到d(依然是一个向量)。

Context Modelling

 当用户询问时,仅从当前用户的输入还不足以抽取意图,belief tracker应该考虑对话的上下文,特别是上一句系统的动作。作者提出了两种动作:System RequestSystem Confirm

  • 系统请求(System Request):系统上一轮在向用户请求一个具体的信息,比如”what price range would you like?”,此时用户需要给出一个具体的信息,此时用t(q)表示”price range”这个slot;
  • 系统确认(System Confirm):系统上一轮在让用户在确认一个具体的信息,比如”‘how about Turkish food?’”,此时用户一般只需要回答是与不是即可,此时用(t(s),t(v))表示(food, Turkish)这个slot-value对。

第一种情景是,系统对一个特定的slot发出提问,用户一般会给出具体的value。第二种是系统询问用户,某个slot-value是否正确,用户一般只会回答对或错。这两个场景应分别计算。$t_q$ 是request的参数,$(t_s,t_v)$是comfirm的参数。 $t_q,t_s,t_v$都是slot/value的词向量,多个词直接求和得到。通过系统动作,候选对$(c_s,c_v)$作为一个gate, 控制输入表征$r$的信息输出般情况下系统要么是请求,要么是确认,那么此时$t_q$为0向量或者$(t_s,t_v)$是零向量。):

该机制有点类似于将候选槽值与系统请求某个槽的信息或确认某个槽值对,计算一个相似度(上面公式都是点乘),然后通过这个相似度对用户的句子表征进行一个类似于门的控制(主要是scale作用)。

Binary Decision Maker:

 最后的二分类决策层。$\phi_{dim}(x) = \sigma(W_x + b)$ 将输入 x xx 映射到维度为size的向量,softmax二分类,完成slot-value对的存在检测:

Belief State Update Mechanism

 论文提出了一种简单的belief state的更新机制:先估计当前轮对话的slot-value,再更新历史记录。在嘈杂的环境中,取ASR输出的前N个最佳结果(N-best list)进行分析。对于第 $t$ 轮对话,$sys^{t-1}$ 表示前一个系统动作,$h^t$ 是 ASR输出的结果假设, $h_i^t$ 是 N-best list 中的第$i$个,$s$ 是slot, $v$ 是value,NBT 模型需要估计$(s,v)$在用户的口语输入中的概率:

image-20210522105055966

对于当前和历史对话的belief state 更新, 引入一个权重系数 $\lambda$:

image-20210522105203468

然后对于slot s ss检测到的values,取概率最大的作为当前的goal value。

实验

数据集

实验仍然是task-oriented的对话任务,数据集有两个:DSTC2和WOZ 2.0。

结果

image-20210522105359277

可以看到,NBT-DNN和NBT-CNN都能超过基于语义词典的模型,当然NBT-CNN多了不同n-grams特征的权重学习,会更好一点。论文还做了不同词向量对结果影响的实验。

image-20210522105454114

可以看出,专门针对语义任务的词向量Paragram-SL999对实验效果提升明显,这也很显然,先验知识更丰富,对下游的任务当然效果更佳。