对话状态跟踪与预训练编码器的多域 Trask-oriented对话系统

267 阅读4分钟
原文链接: zhuanlan.zhihu.com

模型

https://arxiv.org/pdf/2004.10663.pdfarxiv.org


首先,将插槽分为两类——一类是S-type 槽位 ,其值可以直接从给定的输入(如酒店区域和火车发车地点)进行标记;另一种类型的槽表示为C-type,其值在话语中找不到,需要用“Yes”或“NO”来回答,例如酒店停车场和酒店网络。

下图显示了由三个模块组成的总体架构:域预测模块(DPM)、c型槽分类模块(CSCM)和s型槽标记模块(SSLM)。

我们的神经模型体系结构包括用于域预测的DPM、用于域相关c型槽的二进制分类的CSCM和用于在给定输入中标记s型槽的SSTM。

编码器

多轮对话直接将历史内容和当前话语编码为输入,然后输出所有状态,这对模型提出了很大的挑战。本文模型中,输出每一轮的对话的置信估计,而全局对话状态是不同轮次的累积状态的集合。当用户在对话过程中更改其目标时,全局对话状态将使用最新检测到的状态进行更新。

[公式] 表示一个多轮的对话,其中 [公式][公式] 分别对应第i轮的系统话语和用户话语。 [公式] 是上一轮的域结果。在第i轮,模型的输入是 [公式][公式] 的连接,它们由一系列单词组成{ [公式] }和上一个域 [公式]

域预测模块

在多域对话中,目标域可能随着对话的进行而变化,如图1所示,其中对话涉及两个域(酒店和火车),并且在第4轮时讨论从酒店到火车的变化。在我们的模型中,除了使用了第一个隐藏状态 [公式] ,还将上一轮的域结果(表示为 [公式] )合并到域预测模块中。其背后的逻辑是,当当前话语的域不是那么明显时, [公式] 可以提供参考信息。

域的预测:

其中;表示连接操作和E(·)将一个单词嵌入到分布式表示中。在第一个回合, [公式] 是一个特殊的token[None]随机初始化。

域约束上下文信息R

此外,一个域约束的上下文记录 [公式] ,其中s为所有领域的S-type槽数,以防止我们的模型预测一些不属于当前域的插槽。R是一个分布在所有的G-slot和[EMPTY]使用

特别是 [公式] , [公式] 的损失被定义为两者之间的Kullback-Leibler (KL)散度 [公式] ,其中真实分布 [公式] 计算如下:

  • 如果没有需要预测的槽位, [公式] 接收到特殊槽[EMPTY]的概率1。
  • 如果需要预测的槽数为k(≥1),则对应的k个槽位置的概率质量为 [公式]

c型槽分类模块

给定当前预测的域结果 [公式] ,我们构建一个包含 [公式] 中所有c类型槽的 [公式] 集。如果 [公式] 为空,则表示当前域中不需要预测c类型槽。其他方面,执行For循环操作,将 [公式] 的每个槽划分为“Yes”或“No”,作为一个二元分类任务。分类函数如下所示

其中 [公式] 输出 [公式] 中第i个槽的嵌入表示,则 [公式]

s型槽标签模块

为了标记给定输入的s型槽,我们将 [公式] 的最终隐藏状态输入到softmax层中,对所有s型槽进行分类,

而不是基于 [公式] 直接预测s型槽结果,我们引入了一个域约束上下文信息R,目的是避免生成不属于预测域的s型槽。为此,我们执行一个乘法运算\

在训练过程中,我们对 [公式] 使用交叉熵损失 [公式][公式] ,分别表示为 [公式] , [公式] , [公式] 。R的损失定义为前述的Kullback-Leibler (KL)散度,记作LR。共同训练的最后,所有的参数都最小化加权和三个损失(α,β,γ,θ是hyperparameters):

实验

结论

在DST中,观察到最大的挑战主要是提取槽值,因为可能的槽值的数量可能很大而且是可变的,而槽名相对有限且固定。在本文中,提出了分解的方法将DST分成三个子任务,共同完成状态提取任务。特别地,提出的模型的新颖之处在于两个方面。首先,利用预先训练的语言模型的力量来帮助改进表示。其次,采用Kullback-Leibler (KL)散度作为学习领域相关上下文的损失。



推荐一篇融入槽位的意图识别

PaperWeekly:BERT在小米NLP业务中的实战探索zhuanlan.zhihu.com图标