【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

A Sequence-to-Sequence Approach to Dialogue State Tracking

概要

​ 本文提出了一种新的对话状态跟踪方法,称为 Seq2SeqDU,它将 DST 形式化为一个序列到序列问题。Seq2Seq-DU 的 独特之处 是它使用两个基于 BERT 的编码器分别对对话中的话语和模式描述进行编码,一个注意者计算话语嵌入和模式嵌入之间的注意,以及一个解码器生成表示对话当前状态的指针。

​ 此外,Seq2Seq-DU 也可用于对话系统的 NLU(自然语言理解)模块中。在不同设置下的基准数据集 (SGD、MultiWOZ2.2、MultiWOZ2.1、WOZ2.0、DSTC2、M2M、剪断和 ATIS) 上的实验结果表明,Seq2Seq-DU 的性能优于现有方法。

问题定义

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

模型

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

​ 模型共分为 4 个部分,如上图所示。在对话的每个回合中,话语编码器将当前用户的话语和对话先前的话语转换为一个嵌入序列;模式编码器也将模式描述转换为一组模式嵌入;话语模式注意者计算话语嵌入和模式嵌入之间的注意,以创建参与的话语和模式表示;最后,状态解码器根据使用 LSTM 和指针生成的参与表示顺序生成状态表示。下面分别介绍这几个部分:

Utterance Encoder

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

话语编码器以当前用户的话语以及对话中之前的话语(用户和系统话语)作为输入,并使用 BERT 构建一系列话语嵌入序列。当 前的话语与之前的话语之间的关系 被编码器捕获。

假设输入序列长度为 $X = (x_1,x_2,...,x_N)$, 其中 $x_1 = [CLS]$ , 当前对话与先前对话用 $[SEP]$ 标志分隔。经过 BERT 后输出为 $D = (d_1,...,d_N)$ 被称为话语嵌入,每个输入 token 都有一个嵌入。

Schema Encoder

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

模式编码器以对意图、插槽和分类插槽值(一组组合的 token 序列)的描述作为输入,并使用 BERT 来构造一组模式嵌入。

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

假设模式中包含 I 个意图、S个槽、V 个槽值。每个模式元素由上表所述的两个描述表示。

输入是一个 组合序列 $Y = {y_1,...,y_M},M=I+S+V$. 每一个组合序列都以[CLS] 标记开始,后面是以 [SEP] 作为分隔符的两个描述的标记。[CLS]的最终表示用于嵌入输入意图、插槽或插槽值。

输出是一组嵌入,所有的嵌入都称为 模式嵌入 $E = {e_1,...,e_M}$.

该方法有 两个优点 。首先,编码器可以在不同的领域中进行训练。不同域中的架构描述可以一起使用。其次,一旦对编码器进行了 微调,它就可以用于处理具有新意图、插槽和插槽值的未见过的模式。

Utterance-Schema Attender

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

​ 话语模式注意者将话语嵌入序列和模式嵌入集作为输入,计算 有模式参与的话语表示 有话语参与的模式表示。这样,来自话语的信息和来自模式的信息就被融合了。

​ 首先,注意力注意者构造一个 注意力矩阵,指示话语嵌入和模式嵌入之间的相似性。给定第 $i$ 个话语标记嵌入 $d_i$ 和第 $j$ 个模式嵌入 $e_j$,它计算的相似性如下:

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

$r,W_1,W_2$: 均为可训练参数

​ 然后,注意力模块将每一行矩阵 $A$ 归一化为概率分布,得到矩阵 $\overline{A}$。每一行都表示模式元素相对于一个话语 token 的注意力权重。然后计算出 模式参与的话语表示 为 $D_a=E\overline{A}^T$。注意力模块还将矩阵 $A$ 的每一列归一化为概率分布,以得到矩阵 $\widetilde{A}$。每一列表示话语标记相对于一个模式元素的注意权重。然后将 话语参与的模式表示 计算为 $E_a=D\widetilde{A}$。

State Decoder

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

​ 状态解码器依次为当前回合生成状态表示(语义框架),其表示为指向模式元素和话语标记的指针序列。然后,该序列可以重新形式化为对话状态跟踪中的语义框架即:

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

指针指向模式描述中的意图、插槽和插槽值(类别插槽值)以及话语中的 token(非分类插槽值)。模式中的元素可以是单词或短语,而话语中的标记形式的跨度用于提取插槽值,如下图:

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

状态解码器是一个使用指针和注意力的 LSTM。它以 $D_a,Ea$ 作为输入。在每个解码步骤 t,解码器接收前一项 $w{t−1}$、话语上下文向量 $u_t$、模式上下文向量 $st$ 和前一隐藏状态 $h{t−1}$ 的嵌入,并产生当前隐藏状态 $h_t$:

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

其中:

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

然后,解码器根据隐藏状态 $h_t$,从模式元素中的指针集和话语的标记中生成一个指针。具体地说,它根据以下分布生成项 $w$ 的指针:

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

$k_w$: 话语表示 $D_a$, 或者模式表示 $E_a$ 中的项 $w$ 的表示

在解码过程中,解码器使用 Beam Search 来根据序列的概率找到最佳的指针序列。

实验

数据集

  • SGD
  • Multi WOZ2.0
  • Multi WOZ2.1
  • Multi WOZ2.2

主要结果

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

消融实验

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

Find or Classify? Dual Strategy for Slot-Value Predictions on Multi-Domain Dialog State Tracking

概要

​ 现有的 DST 方法主要分为 ontology-based 方法和 ontology-free 方法两类之一。最近的工作引入了一个基于 BERT 的模型,通过预定义分类和非分类槽来在这两种方法之间取得平衡。然而,目前还不清楚哪些槽可以更好地处理两种槽类型,而且使用预训练模型的方法也没有得到很好的研究。在本文中,作者提出了一个简单而有效的 双元策略模型(DS-DST),通过适应一个简单的阅读理解模型来联合处理分类和非分类插槽。

问题定义

​ 令 $X = {(U_1^{sys},U_1^{usr}),\cdots , (U_T^{sys},U_T^{usr}) }$ 为对话历史。每个回合 $(U_t^{sys},U_t^{usr})$ 都谈论一个特定的领域(例如,酒店),并且一定数量的插槽(例如,价格范围)与该领域相关联。假设有 N 个可能他的 域 - 槽对 $S = {S_1,...,S_N}$,每个域槽对 $S_i = {s_1,...,s_n}$,如 hotel-price range 包含 3 个 token。

​ 令 $X_t = {(U_1^{sys},U_1^{usr}),\cdots , (U_t^{sys},U_t^{usr}) }$ 表示在第 t 轮的对话上下文且 $X_t = {x_1,x_2,...,x_m}$。我们的目标是预测 $S$ 中所有域槽对的对应值,这里我们假设 S 中的 M 个域 - 槽对被视为 非分类槽 ,其余的 N−M 对被视为 分类槽。每个分类槽都有 L 个可能的候选值(选择列表),即 ${V_1,…,V_L}$ 其中 L 是选择列表的大小,$V_i = {v_1,…,v_c}$。

模型

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

​ 如上图,是一个具有对话上下文和域插槽对之间直接交互的双策略模型。

  • 首先利用预先训练好的 BERT 对对话上下文 $X_t$ 的信息以及 S 中的每个域槽对进行编码,并获得以域槽信息为条件的上下文化表示。
  • 然后,我们设计了一个插槽门来处理特殊类型的值。特别地,对于 非分类插槽 ,我们使用双向线性映射来查找 文本跨度 。对于 分类插槽,我们根据上下文表示从选择列表中选择最合理的值。

下面详细介绍其组成:

Slot-Context Encoder

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

​ 我们使用一个预先训练好的 BERT 来编码域插槽类型和对话框上下文。对于第 $j$ 个 域 - 插槽对 和对话框中的上下文 $Xt$,我们将它们连接起来并得到相应的表示:
$$
R
{tj} = BERT ([CLS] \oplus S_j \oplus [SEP] \oplus Xt)
$$
该模型的输出格式 $R
{tj} = [r{tj}^{CLS},r{tj}^1,...,r{tj}^K]$, 其中 $r{tj}^{CLS}$ 为 $K$ 个输入 token 的聚合表示。$[r{tj}^1,...,r{tj}^K]$ 为 token 级的表示,用于插槽值预测,并在训练过程中对 BERT 进行了微调。

Slot-Gate Classification

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

​ 这个模块在很多文章中都出现过,这里我们利用 $r{tj}^{CLS}$ 进行槽门分类,第 $t$ 个域槽对的概率计算为:
$$
P
{tj}^{gate} = softmax(W{gate}\cdot (r{rj}^{CLS})^T + b{gate})
$$
其中 $W
{gate},b{gate}$ 为可训练的参数和偏置。损失函数采用交叉熵损失:
$$
\mathcal{L}
{gate} = \sum{t=1}^{T} \sum{j=1}^{N} -\log(P{tj}^{gate} \cdot (y{tj}^{gate})^T)
$$
其中 $y_{tj}^{gate}$ 是第 $j$ 个域槽对值的真实标签。

Non-Categorical Slot-Value Prediction

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

​ 对于每个 非分类插槽 ,其值可以映射到对话框上下文中具有开始和结束位置的 跨度,例如,出租车域中的插槽在上下文中的跨度为MARKDOWN_HASH55f74e44fd84930575d618dd369d87e8MARKDOWNHASH。我们采用 token 级表示 $[r{tj}^1,...,r{tj}^K]$ 作为输入,并应用双向线性映射来获得开始向量 $α{tj}^{start}$ 和结束向量 $α{tj}^{end}$:
$$
[\alpha
{tj}^{start},\alpha{tj}^{end}] = W{span} \cdot ([r{tj}^1,...,r{tj}^K]) + b{span}
$$
其中 $W
{span},b_{span}$ 为可训练的参数和偏置。

第 $i$ 个 token 作为跨度的起始位置的概率计算如下:
$$
p_{tj}^{starti} = \frac{e^{\alpha{tj}^{start} \cdot r{tj}^i}}{k^{\alpha{tj}^{start} \cdot r{rj}^k}}
$$
损失函数同样为交叉熵损失:
$$
\mathcal{L}
{start} = \sum{t=1}^{T} \sum{j=1}^{N} -\log(P{tj}^{start} \cdot (y{tj}^{start})^T)
$$
其中 $y_{tj}^{start}$ 是第 $t$ 轮对话第 $j$ 个域槽对值的真实标签。

Categorical Slot-Value Prediction

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

​ 每个分类槽都有几个候选值;例如,酒店领域的槽价格范围有三个值{便宜、昂贵、适中}。在第 t 个回合,对于第 j 个域 - 插槽对,我们首先使用另一个预先训练的 BERT 来获得候选列表中每个值的聚合表示:
$$
y_l^{CLS} = BERT([CLS]\oplus V_l \oplus [SEP])
$$
【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

再通过余弦相似性计算聚合表示和参考候选表示之间的相关性分数:
$$
cos(r_{tj}^{CLS},yl^{CLS}) = \frac{r{tj}^{CLS}\cdot (yl^{CLS})^T}{||r{tj}^{CLS}|| \cdot ||y_l^{CLS}||}
$$

​ 在训练过程中,损失函数如下:
$$
\mathcal{L}{picklist} = \sum{t=1}^T \sum{j=1}^{N-M} max(0-,\lambda - cos(r{tj}^{CLS},y{target}^{CLS}) \ + \max{yl^{CLS} \neq y{target}^{CLS}} cos(r_{tj}^{CLS},y_l^{CLS}))
$$

训练目标

​ 在训练过程中,上述三个模块可以共同训练并共享 BERT 参数。我们优化了不同损失的总和,具体如下:
$$
\mathcal{L}{total} = \mathcal{L}{gate} + \mathcal{L}{span} + \mathcal{L}{piclist}
$$
对于未提及的插槽或用户可以在每个对话回合接受任何值(即插槽类型∈{none,dontcare}),$\mathcal{L}{span}$ 和 $\mathcal{L}{pick}$ 设置为 0,并且在训练过程中仅优化插槽门分类模块。

实验

数据集

  • MultiWOZ 2.0
  • MultiWOZ 2.1

主要结果

【论文笔记】A Sequence-to-Sequence Approach to Dialogue State Tracking

正文完
 
yhlin
版权声明:本站原创文章,由 yhlin 2023-01-17发表,共计4851字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码