https://zhuanlan.zhihu.com/p/73723782
ACL2019
Chinnadhurai Sankar, Sandeep Subramanian, Christopher Pal, Sarath Chandar, [Yoshua Bengio]
https://arxiv.org/abs/1906.01603
神经网络生成模型在构建对话 agent 方面越来越流行,这种方法可以灵活的适应多个 domain,且需要很少的领域专家干预。这些系统一个被大家经常指出的问题就是他们很少有效的去使用获得的对话历史。这篇文章中,作者使用一种方法去理解模型是怎样利用对话历史的,这个方法是先是人工给文本引进 unnatural 改变或者是扰动,再去观察模型对这些改变的敏感度。作者在 4 个对论对话数据集上进行 10 种不同扰动的实验,发现通常使用的基于 RNN 和 transformer 的 seq2seq 模型对于大多数扰动都是不敏感的。再者,作者开源了代码,认为这将会是一个检验对话系统的有用工具。
人们猜测是因为不能很好的利用对话历史,所以模型经常没有办法产生对话主题相关的句子,比方说回应一些诸如 “谢谢”,“好的” 这些无关紧要的话。实验的一个核心的前提(思想)是说,如果这个模型对认为造成的文本内容的改变(扰动)不敏感,那就是说它没有非常大程度的利用这段内容。作者发现:
作者将给定对话历史生成恰当回复的问题演变为一个 conditional language modeling problem. 要学习一种条件概率分布 $P_\theta (y|x)$ ,其中 $y$ 是给定对话历史 $x$ 应该出现的合理的回复。对话历史由一系列 utterance $\bold{x_1}, \bold{x_2}, … \bold{x_n}$ 表示,其中每个 $\bold{x_i}$ 由一系列单词 $x_{i_1}, x_{i_2}, …x_{i_k} $ 组成,回复 $y$ (utterance)同理由 $y_{i_1}, y_{i_2}, …y_{i_k}$ 组成。至此,完整的条件概率表示为:
$$
P_{\theta}(y|x) = \prod^n_{i = 1} P_{\theta}(y_i|y_{<i},\bold{x_1}, \bold{x_2}, … \bold{x_n})
$$
工作的关键是研究当我们人工的干扰对话历史 $\bold{x_1}, \bold{x_2}, … \bold{x_n}$ 时,学到的概率分布会有怎么样的行为。作者通过观察在这些变化下 per-token 的 perplexity (困惑度) 增加了多少来测量这姓行为。如果增加量很小,那么我们就可以总结出 $\bold{x_1}, \bold{x_2}, … \bold{x_n}$ 的顺序对于模型不是很重要。所有的模型训练的时候都不加入扰动,敏感度只在测试的时候被测试。
四个多轮对话数据集
每种扰动都独立的执行
所有的数据加载,模型实现,和评估的过程都在 ParlAI 架构实现的。模型的所有超参数也都是和那个平台一样。
实验中的模型可能不是试验中所用的数据集上表现最优的模型,作者仍然相信这些模型至少可以像一个baseline 一样具有普适性普遍的使用。在这篇文章中,作者训练10轮就停止为了去保存最好的模型(?)。
表 2 第二列展示了在测试集上不同模型的困惑度,后边几列是不同的扰动造成的困惑度的 increase;图一展示了仅仅摘取最近 k 句话作为对话历史时模型困惑度的改变。
作者有如下发现:
本文研究生成神经对话系统在其所依赖的对话历史中综合引入扰动时的行为。我们发现,即使对对话历史进行剧烈的、非自然的修改,recurrent and transformer-based seq2seq models 也没有显著的变化。我们还发现了 recurrent and transformer-based seq2seq models 在利用对话历史的方式上的细微区别。通过开源代码,我们相信这种通过引入扰动来研究模型行为的例子将成为一个有用的诊断工具。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章