【论文笔记】2019-ACL-Dialog State Tracking: A Neural Reading Comprehension Approach

2019-ACL-Dialog State Tracking: A Neural Reading Comprehension Approach

2021-05-08

概要

问题动机

 以往的DST方法通常都是输出一个对所有槽值的预测概率分布,使得模型无法预测unseen的槽值。这篇文章的作者以不同角度看待DST问题,将其建模为一个阅读理解任务,让模型回答“What is the state of the current dialog ?”这个问题。

主要贡献

  • 应用阅读理解的方法,提出了一个简单的基于注意力的神经网络模型来提取对话历史中的槽值,并克服了以往方法中的fixed-vocabulary问题能够生成的unseen状态值

  • 将DST的任务描述为三个顺序决策:

    • 通过简单slot carryover模型的二元carryover决策
    • 通过slot type模型的槽类型决策
    • 通过阅读理解模型的槽跨度(slot span)决策
  • 整合Bert模型,得到相当大的改进
  • 在MultiWOZ 2.0 跨域对话数据集上取得与更复杂模型相似的精度表现

相关研究

 阅读理解任务通常被表述为一个监督学习问题,对于给定的训练数据集,目标是学习一个预测器,它将一段 $p$ 和相应的问题 $q$ 作为输入,并给出答案 $a$ 作为输出。

  • 2018-arXiv-Flexible and scalable state tracking frame work for goal-oriented dialogue systems.
  • 2017-ACL-Dialog state tracking, a machine reading approach using memory network.
  • 2018-ACL-An end-to-end approach for handling unknown slot values in dialogue state tracking.

方法详解

DST as Reading Comprehension

 定义对话 $D$ 的一个子对话 $D_t$ 作为以用户话语结束的完整对话的前缀,其状态由组成插槽$s_j(t)$的值定义,即$S(t)={ s_1(t),s_2(t),.s_j(t),…,s_M(t) }$定义。

 可以把 $D_t$ 当成一篇文章,对于每一个插槽 $i$ 制定一个问题 $q_i$ : 槽 $i$ 的值是多少? 这样子DST任务就变成了一个理解 $D_t$ 并回答问题 $q_i$ 的阅读理解任务了!

Encoding

Dialog Encoding

image-20210506114422996

 对于给定的第 $t$ 轮对话 $D_t$, 首先将用户话语与系统话语拼接成 ${ u_1,a_1,u_2,a_2,…,u_t }$. 另外为了区分二者分别在二者前面添加[U]和[A]标记。然后用预训练的词嵌入为对话序列中的每一个token生成一个 $p_i = E(w_i)$ 并将他们作为输入馈入一个RNN中:

$L$: 表示拼接序列的长度

$d_i$:RNN对于每一个token的输出,包含上下文信息

$p_i$:用Bert模型生成的预训练词嵌入

$RNN$:这里使用的是单层双向LSTM,故$d_i = (\overleftarrow{d_i};\overrightarrow{d_i})$

image-20210506115134595

另外,定义 $e(t)$ 为第 $t$ 回合对话的嵌入表示:

Question Encoding

image-20210506115315664

 将前面定义的问题 $q_i$ 定义为 “插槽 $i$ 的值是什么?” 对于每个对话,都有M个对应于M个槽的类似问题,因此,我们将每个问题 $q_i$ 表示为一个固定维度的向量 $\bf{q}_i$ 来学习。

模型

Overview

image-20210506104537332

 如上图在完整模型设置中,三个不同的模型组件被用来进行一系列的预测:首先,使用一个slot carryover模型来决定是否从最后一个回合中carryover一个槽值。如果slot carryover模型决定不延续,则执行一个slot type 预测模型,从${ Yes, No, DontCare, Span }$集合预测答案类型。如果slot type模型预测结果为Span,则Slot Span 预测模型最终将预测插槽值作为对话中tokens的span(start,end)

Slot Carryover Model

image-20210506145858168

 该模型用于判断是否将上一回合对话的槽值继承下来,对于每一个给定的槽 $s_j$ :

并且:

$W_i$ : 对于不同槽都有一个权重矩阵,神经网络将联合预测所有M个槽的slot carryover 结果

Slot Type Model

image-20210506145949051

 该模型是一个用来预测每一回合槽值类型的分类器。如果预测结果为Span表示可以在对话中找到槽值实体。如上图所示,具体计算如下:

Slot Span Model

 将槽值映射到对话$D_t$的某个区间$(start,end)$上。利用对话编码${ d_1,d_2,…,d_L }$ 和问题向量$\bf{q}_i$ 来计算双线性积(bilinear product)并且训练两个分类器来预测start和end的位置。对于特定的槽 $s_j$,其分布计算如下:

实验

数据集

 采用 MultiWOZ 多域对话数据集,包含7个不同域共37个slot,之中许多槽类型都是在不同域之间共享的。实验中通过考虑槽域、槽类型、槽名的链接来独立处理每个槽。

image-20210508101131446

主要结果

image-20210506154904357

image-20210506155211338

消融实验

image-20210506155019837

错误分析

image-20210506155328473