概要

问题:

现有方法利用历史信息来确定通常表示为槽值对的对话状态。这导致了两个问题:

  • 由于缺乏建模插槽和对话历史之间的交互的强大机制,它们中的大多数在有效利用相关上下文方面都有局限性
  • 现有的方法通常忽略槽不平衡问题,不加区别地处理所有槽,这限制了槽的学习,最终损害整体性能

方法贡献:

  • 提出了一种有效的上下文层次注意网络,以充分利用对话历史中的相关上下文,并采用状态转换预测任务来进一步增强它。
  • 设计了一个自适应的目标来动态地调整每个槽的权重解决槽不平衡问题,并且该方法是第一个解决DST中的槽不平衡问题的方法。

相关工作

模型

Contextual Hierarchical Attention Network

Sentence Encoder

 利用Bert来编码句子表示 $h_t$:

对于槽$s$和值$v_t$,用另外一个Bert来将他们分别编码为两个上下文语义向量$h^s,h_t^v$, 并使用特殊标记[CLS]的输出向量来获得整个句子的表示形式:

Slot - Word Attention

 一个多头注意力模块$MultiHead(Q,K,V)$,对于每个槽,将每个回合$t$的字级槽相关信息汇总为$d$维向量$c_{s,t}^{word}$,其确定如下:

Context Encoder

 一个单向Transformer编码器,被用来对${1,…,t}$回合中已经被提取的字级槽相关信息的上下文关系进行建模。它堆叠了$N$个相同的层,如下图所示:

首先是一个多头注意力层$MultiHead(Q,K,V)$且令$Q = K = V$, 然后是一个全连接前馈网络层$FNN$,它由两个线性层组成,激活函数为$ReLU$:

因此,上下文编码层输出$c_{s,\le t}^{ctx}$的计算过程如下:

$m^n$: 第$n$层的输出

$PE(\cdot)$: 位置嵌入

$\color{red}{Note}$: 上述公式中省略了残差连接和归一化

Slot - Turn Attention

 也是一个多头注意力层,被用来从上下文表示中提取出回合级别的相关信息,其计算过程如下:

因此,该模型可以从历史对话中获取字级和回合级的相关信息。

Global-Local Fusion Gate

 为了平衡全局上下文和局部话语的信息,本文建议动态控制上下文信息当前回合信息的比例,这样模型不仅能从相关上下文中获益,还能在全局和局部表示之间保持平衡。利用融合门机制,该机制计算权重,根据$c{s,t}^{word}$和$c{s,t}^{turn}$决定应该组合多少全局和局部信息。其定义如下:

$W_g\in \R^{2d\times d}$:权重矩阵

最终,将其经过Dropout再用一个线性层投影并经过归一化后获得最终输出:

槽值$v_t$的概率分布和训练目标定义为:

$\nu_s$: 槽 $s$ 的候选值集合

$\hat{v_t} \in \nu_s$: 槽 $s$ 的真实值

$||\cdot||_2$: $L2$ 距离

State Transition Prediction

 为了更好地捕获相关的上下文,进一步引入了一个辅助的二进制分类任务(DST: 状态转移预测)来与DST联合训练。该任务预测插槽的值是否更新,该模型以$c{s,t-1}^{gate}$和$c{s,t}^{gate}$作为输入,转移概率的计算公式如下:

$W_c \in \R^{d\times d}, W_p \in \R^{2d}$: 参数矩阵

$\color{red}{Note}$: 当 $t=1$时,$c_{s,t-1}^{stp}$ 为 零向量

该任务的训练目标函数:

Adaptive Objective

 从本质上说,槽不平衡问题可以看作是一种类别不平衡,因为不同槽和不同样本之间都存在不平衡。与其不加区分地处理所有插槽,不如平衡不同插槽的学习权重。2017-IEEE-Focal loss for dense object detection提出了一种叫做焦点损失的软采样方法以重新计算不同类别的损失。根据他们的工作,本文设计了一个新的自适应目标,评估验证集上每一个插槽的精度差异,并在优化期间自适应地调整每个插槽的权重。

 定义槽$s$的精度为$acc_s^{val}$, 该自适应目标遵循下面的直觉:

  • (1) 如果$acc{s}^{val} \le acc{s^{‘}}^{val}$;这时候称槽$s$的处境比$s^{‘}$要困难,假设槽级别的困难度用$\alpha_s$表示:

  • (2) 假设两个样本${ (Ut,R_t),(s,v_t) }$和${ (U{t^{‘}},R{t^{‘}}),(s^{‘},v{t^{‘}}) }$,如果前者的置信度低于后者,那么称前者比后者更困难,样本级别的困难度用$\beta$表示:

$p(s,v_t)$: ${ (U_t,R_t),(s,v_t) }$的信心

$\gamma$: 超参数

因此,自适应目标函数为:

焦点损失在插槽上分配静态学习权重,并且在整个训练过程中不再改变它们。与焦点损失相比,我们的自适应目标可以通过动态地评估困难,然后自适应地控制不同插槽的学习权重来更好地适应数据,这在实验中得到了证明。如果插槽的困难度大于所有插槽的平均难度,$\alpha_s$将增加并增加$s$的损失(表示模型对其更加敏感)。同样,置信度低的样本损失将促进优化。当一个世代结束时,自适应目标会重新评估每个插槽的困难度值,并更新$\alpha_s$。因此,它不仅可以促进对这些插槽和样本的优化,而且还可以平衡所有插槽的学习

Optimization

联合训练损失函数:

在微调阶段,我们采用自适应目标来微调DST任务如下:

实验

数据集

 使用联合精度和插槽精度作为评估指标。联合精度是指每个回合的对话状态的准确性,只有在正确预测插槽的所有值时,才会正确地评估一个对话状态。插槽精度只考虑单个插槽级的精度。

主要结果

消融实验

注意力可视化

自适应目标对插槽精度的影响