共计 1576 个字符,预计需要花费 4 分钟才能阅读完成。
An End-to-end Approach for Handling Unknown Slot Values in Dialogue State Tracking
概要
动机
以前的方法通常假设预定义的候选列表,这些方法通常依赖于固定本体上的分类,或通过枚举候选列表分别对每个槽值对进行评分,输出列表中每个值的概率分布,因此不被设计来输出未知槽值。
贡献
作者提了一种基于指针网络 (PtrNet) 的 E2E 架构,它本质上以提取方式执行状态跟踪,类似于 SLU 中常用于插槽标记的序列标记技术,它可以有效地提取未知的插槽值,并且在标准的 DSTC2 基准上获得最先进的精度。
- 首先,作者的目标是 DST 中一个非常实用但很少被研究的问题,即在没有预定义本体的情况下处理未知的插槽值。
- 其次,作者提出了一种基于 PtrNet 的无 SLU 的新 E2E 架构来执行状态跟踪。
- 最后,作者还引入了一种有效的退出技术来训练该模型,它极大地提高了未知槽值的召回率。
模型
PtrNet
在 PtrNet 架构中,类似于其他序列对序列 (seq2seq) 模型,有一个编码器,它接收输入并迭代地生成与每个输入位置的特征向量对应的一系列隐藏状态序列。还有一个解码器,它在加权编码状态的帮助下生成输出,其中权重是通过注意来计算的。在这里,解码器不是使用软 max 来预测一组预定义的候选对象上的分布,而是直接正常化每个位置的注意力分数,并获得输入序列上的输出分布。最大概率的索引是点位置,选择相应的元素作为解码器输出,然后输入到下一个解码步骤。编码器和解码器都基于各种 RNN 模型,能够处理可变长度的序列。
PtrNet 专门针对输出对应于输入序列中位置的问题,广泛用于 seq2seq 任务,需要从输入进行 seq 复制。在其各种应用中,机器理解(一种问题回答的形式),如在(王和江,2016),是最接近我们如何将该模型应用于 DST 的。
DST 的输出与机器理解一样,大部分时间都是输入序列中的一个字段,因此可以自然地表述为一个指向问题。解码器不必生成更长的输出序列,而只需要预测开始索引和结束索引,以识别字段。
DST Model
- 针对用户和系统的文本第一个词前面添加一个表明角色的词,如
<sys>
和<usr>
; - 通过一个 BiLSTM 将系统和用户的文本连接起来,并得到最终的隐藏层状态表征 $h_t^f$;
- BiLSTM 得到的表征使用一个分类器。这里使用分类器的最主要原因是,针对某个具体的 slot,有可能是用户根本就未曾提供该信息(对应
nonpointable
),也有可能是用户并不关心该 slot 的值(对应dontcare
)等等,针对这些情况,显然是无需也不必在对话历史中找到某个具体的词或短语作为 slot value 的,因此需要使用一个分类模型,当分类结果为other
的时候才需要使用后面要提到的 pointer network; - 如果分类模型结果为
other
的时候,通过 pointer network 针对 encoder 的输入,在其上做 point,这个过程分为两步:第一步预测一个 value 的起始点,第二步预测该 value 的终止点。因此这两步一起组成一个 decoder,这个 decoder 的初始输入是待考察 slot 的类型
其计算过程如下:
首先第一步解码计算开始索引 $s^0$:
然后第二步解码计算结束索引 $s^1$:
$$
a_i^1 = exp(ui^1)/ \sum{j = 0}^{t} exp(u_j^1) \
s^1 = arg \text{} \underset{i}{max} \text{} a_i^1
$$
最后,文中也使用了一些 dropout 的方法,即针对那些出现次数过于频繁的值,以某种概率将训练集中的该词 embedding 替换为 0,从而让模型能够更多的从上下文结构中学习到该词。
实验
数据集
使用 DSTC2 数据集(亨德森等人,2014a)和 Bobies 对话数据集(2016)上进行实验。
结果