《Global-Locally Self-Attentive Encoder for DST》阅读笔记

《Global-Locally Self-Attentive Encoder for Dialogue State Tracking》阅读笔记

论文链接:https://arxiv.org/pdf/1805.09655.pdf

代码链接(附有数据):https://github.com/salesforce/glad

注:代码用Python实现的,且整个工程代码量相对不大,所以非常容易懂。看完论文后,建议结合代码和数据跑一跑,能极大加深对论文的理解。

贡献:本文提出了一种基于全局-局部自注意力对话状态追踪方法,使用全局模块在每个slot的预测器间共享参数,同时使用局部模块来学习每个slot的特征表示(allowslot-specific feature learning)。通过这种模型,使GLAD在较少的训练数据上能比较好的照顾到出现较少的的slot-value对(rare slot-value pairs),从而使得在对话状态追踪的任务上达到了目前新的SOTA。本文在目前数据集相对效果已经较好的情况下,还能实现非常大的提升(WoZ上提升5.5%,DSTC2上提升1%),整体来说结果非常solid。

背景:这是发表在ACL2018的一篇paper,一作是来自华盛顿大学的一个博士生。主要解决的问题是对话状态追踪。对话状态追踪的背景如下:

任务型对话包括:SLU(口语理解)、DM(对话管理)、NLG(自然语言生成)。对话管理器是任务型对话中的核心模块,包括对话状态追踪(Dialogue State Tracking)和对话策略学习(Dialogue Policy Learning)两部分。

对话状态追踪的目的是追踪当前的对话状态,并指导对话策略学习来采取恰当的action(eg. request、inform)。它的输入是之前的state和action以及当前的输入,输出是当前的state。

根据前面的描述,来个形式化的定义来说明,以便于理解:

再来一个真实的对话过程以便于理解:

再说下,DST的常用方法:

创新点:采用基于全局-局部相结合的自注意力来追踪对话状态。本文跳过了SLU,直接做的DST。

Problem:在多轮交互中,难免在某一轮会出现rare slot-value pairs(38.6% of turns have a joint goal that contains a rare slot-value pair with less than 20 training examples.),而如果对这些pairs处理出错,就可能导致误差累计或者严重影响对话体验而使用户没有继续交互下去的动力。

Motivation:任务型对话框覆盖了很大的状态空间,所以组成状态的很多槽值对很少出现在训练数据中。在一轮交互中,尽管用户指定一个特定且稀有的槽值对的机会很小,但他们指定至少一个稀有槽值对的机会很大。

本文的Background:

虽然现在任务型对话的相关论文都是end2end的,但是具体设计网络时大多还是会为不同的子任务分开设计,这样导致的问题是SLU的错误会误差累积到DST,或者SLU丢失的上下文信息也会影响DST。本文跳过了SLU,直接做的DST。

本文评估时同时用了request accuracy和joint goal accuracy。

模型:

其中说下H和C的区别,H是单个的表示,C是整体表示。例如对应到一句话,H是对词的编码,C是对句子的编码。

虽然整个模型效果非常好,其实这个模型相对简单。整体包括编码模块和计算score的模块。编码模块先是对词进行基于全局和局部双向LSTM的编码,然后Mixture;再对整句话进行全局/局部Self-Attention,然后Mixture。具体公式如下:

接下来说下计算Score的模块,分别算action的得分和utterance(当前输入)的得分,然后Mixture。

用utterance和slot-value的相关度来整合成的表示预测utterance的得分:

用utterance和action的相关度来合成的表示预测action的得分:

最后把结果Mixture:

实验的数据集:

The Dialogue Systems Technology Challenges (DSTC),这是大部分任务型对话paper会使用的数据集

Wizard of Oz (WoZ) restaurant reservation task (Wen et al., 2017)

Experiment:

Glad效果明显好过其他模型,全方位的碾压,没啥好分析的。

Ablation study:

这里我有一个疑问,去掉global后为啥Tn request没变?莫非没有作用,然而分析上面实验结果感觉global还是很有用的。

本文还对比了局部自注意力和全局自注意力的score对比。

对比glad、去掉全局、去掉局部时F1在不同数量的训练数据时的效果,发现数据越少时glad效果越明显。

Conclusion:

本文跳过SLU,通过引入了全局-局部自注意力(GLAD)来做DST,效果明显超过传统的所有方法,即使传统的方法效果已经非常好了。我想本文能成功的主要原因是发现了多伦对话中的一个明显问题(相比很大的state空间,很多槽值对很rare,训练数据很少),并把它很有针对性的解决了。通过相对简单的模型就带来很solid的实验结果,也就不难理解了,本文发到ACL也是顺理成章。因此,观察数据是多么的重要啊!观察数据是多么的重要啊!

观察数据是多么的重要啊!做实验也好,解决工程问题也好,一定要多注意观察数据,很可能带来事半功倍的效果。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181021G1FUTH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券