A Contextual Hierarchical Attention Network with Adaptive Objective for Dialogue State Tracking
概要
问题:
现有方法利用历史信息来确定通常表示为槽值对的对话状态。这导致了两个问题:
- 由于缺乏建模插槽和对话历史之间的交互的强大机制,它们中的大多数在有效利用相关上下文方面都有局限性
- 现有的方法通常忽略槽不平衡问题,不加区别地处理所有槽,这限制了槽的学习,最终损害整体性能
方法贡献:
- 提出了一种有效的上下文层次注意网络,以充分利用对话历史中的相关上下文,并采用状态转换预测任务来进一步增强它。
- 设计了一个自适应的目标来动态地调整每个槽的权重解决槽不平衡问题,并且该方法是第一个解决DST中的槽不平衡问题的方法。
相关工作
- 2017-IEEE-Focal loss for dense object detection
- 1997-NC-Long short-term memory
- 2018-EMNLP-Towards universal dialogue state tracking.
模型
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任务如下:
实验
数据集
使用联合精度和插槽精度作为评估指标。联合精度是指每个回合的对话状态的准确性,只有在正确预测插槽的所有值时,才会正确地评估一个对话状态。插槽精度只考虑单个插槽级的精度。
主要结果
消融实验
注意力可视化
自适应目标对插槽精度的影响
Sequential Labeling for Tracking Dynamic Dialog States
概要
本文提出了一种用于跟踪会话目标变化情况下会话状态的序列标注方法。利用SLU算法得到的特征,利用线性链条件随机场训练跟踪模型。实验结果表明,该方法能够提高对话状态跟踪挑战的子任务的性能。
这项工作的重点是DSTC的第二阶段。DSTC 2与前面挑战的主要区别是,用户目标甚至可以在单个对话会话中更改。所以先前假设每个会话都有固定的用户目标可能会导致前面方法的局限性。为了解决这个动态状态跟踪问题,本文提出了一种使用线性链条件随机场(CRFs)的顺序标记方法。该方法通过对对话状态进行预测和分割来提高跟踪器在目标变化情况下的性能。
问题定义
DSTC2 中定义的对话状态由三个部分组成:目标、方法、请求槽
目标跟踪
目标代表了用户在每个时刻真正想要的约束值。这些值可以通过使用槽填充来表示,总共有4个类别:(area、food、name、price range)。假设每个槽的可能值集合是固定的,这个任务可以看作是在这些假设下找到分布的问题。虽然前面的挑战旨在为每个会话确定单一的固定目标,但DSTC 2的模型应该能够处理会话期间的目标更改,如下图所示。
方法跟踪
方法跟踪是通过将用户请求信息的方式分为以下四类来执行的: “按约束”、“按备选方案”、“按名称”和“已完成”。每一轮都计算这4个假设的概率分布。例如,上图中的对话框会话可以获得一个方法序列:
请求槽跟踪
确定用户所请求的槽,跟踪器的输出是一个二进制分布代表每个槽被请求的概率。由于可请求的位置是区域、食物、姓名、价格范围、地址、电话、邮政编码和签名,因此在每个回合都可以获得8种不同的分布。在前面的例子对话中,电话和地址分别在第五和第六轮被请求。
Method
对话状态的序列标记
序列标记的目标是对于一个给定的输入序列$x={x_1,…,x_n}$产生最可能的标签序列$y={y_1,…,y_n}$。在对话追踪任务中$X_t = {x_i,x_2,…,x_t}$代表的是第$t$轮的输入序列,$x_i$表示在给定对话的第$t$回合,那么跟踪器应该能够为每一个子任务输出一组标签序列。
对于目标和请求槽任务,一个标签序列被分配给每个目标槽,这意味着这些子任务的输出序列总数分别为4和8。另一方面,只为方法跟踪任务定义了单个标签序列。
所有的标签序列都采用BIO标记方案,将块的开始标记为“B”,块的继续标记为“I”,块的外部标记为“O”。示例如下图:
Linear Chain CRFs
Linear Chain CRFs 是以输入序列$x$为条件的标签序列$y$上的条件概率分布,定义如下:
$Z(x)$: 使分布和为 1 的归一化函数
${f_k}$: 用于观察和转换的一组特征函数
${\lambda_k}$: 学习得来的权重参数
为了训练跟踪模型,根据给定回合的实时SLU结果获得的$n$个最佳用户动作列表和与之前系统输出对应的系统动作定义了一组特征函数。捕捉用户意图的最基本信息可以通过“inform”行动类型的SLU假设获得。对于n-best SLU结果中的每一个“inform”操作,特征函数定义如下:
$S_i(inf,s,v)$:SLU得到的置信分数
$UA_i$:SLU得到的N-best 列表
相似的,“confirm” 和 “deny”,”affirm”、”negate”、用户行为”request”和“reqalts”操作的特征函数定义分别如下:
另外还有一个函数用于指出系统是否有能力提供信息: