《Do Neural Dialog Systems Use the Conversation History Effectively? An Empirical Study》
https://zhuanlan.zhihu.com/p/73723782
请复制粘贴到markdown 查看器查看!
Do Neural Dialog Systems Use the Conversation History Effectively? An Empirical Study
ACL2019
Chinnadhurai Sankar, Sandeep Subramanian, Christopher Pal, Sarath Chandar, [Yoshua Bengio]
https://arxiv.org/abs/1906.01603
abstract
神经网络生成模型在构建对话 agent 方面越来越流行,这种方法可以灵活的适应多个 domain,且需要很少的领域专家干预。这些系统一个被大家经常指出的问题就是他们很少有效的去使用获得的对话历史。这篇文章中,作者使用一种方法去理解模型是怎样利用对话历史的,这个方法是先是人工给文本引进 unnatural 改变或者是扰动,再去观察模型对这些改变的敏感度。作者在 4 个对论对话数据集上进行 10 种不同扰动的实验,发现通常使用的基于 RNN 和 transformer 的 seq2seq 模型对于大多数扰动都是不敏感的。再者,作者开源了代码,认为这将会是一个检验对话系统的有用工具。
introduction
人们猜测是因为不能很好的利用对话历史,所以模型经常没有办法产生对话主题相关的句子,比方说回应一些诸如 “谢谢”,“好的” 这些无关紧要的话。实验的一个核心的前提(思想)是说,如果这个模型对认为造成的文本内容的改变(扰动)不敏感,那就是说它没有非常大程度的利用这段内容。作者发现:
- recurrent and transformer-based seq2seq models 对于实验中的大多数种类的扰动都不敏感
- 甚至在 randomly shuffling or reversing words within every utterance in the conversation history 这种极大的变化的情况下,二者都不是特别敏感
- recurrent model 对于对话历史中每个 utterance 的先后顺序很敏感,这意味着他可以比 transformer 更好的模拟对话动态。
experiment setup
作者将给定对话历史生成恰当回复的问题演变为一个 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}$ 的顺序对于模型不是很重要。所有的模型训练的时候都不加入扰动,敏感度只在测试的时候被测试。
1. datasets
四个多轮对话数据集
- bAbI dialog : 任务导向多轮数据集,五个预定饭店的任务,复杂度依次增加。实验使用任务5,因为这个是最难的,它包括 1000 个对话,每个对话平均有 13 个 user utterance。
- Persona Chat : 开放域对话数据集,两个人被随机安排两个角色进行对话产生。10.9$k$ 个对话,平均每个对话 14.8 轮。
- Dailydialog : 收集每天日常的对话,涉及多个主题。13$k$ dialogs / 7.9 turns
- MutualFriends : 多轮 goal-oriented,两个agents 必须去发现他们的朋友中谁是二者共有的。11$k$ / 11.41 utterances。
2. types of perturbations
每种扰动都独立的执行
- utterance-level perturbations : 1) $ \mathcal{Shuf}$ : 随机打乱对话历史中的 utterances。2) $\mathcal{Rev}$ : 每个 utterance 保持不变,但对话历史对话顺序颠倒。3) $\mathcal{Drop}$ : 完全丢掉某个 utterance。4) $\mathcal{Truncate}$ 缩减对话历史,只留下最近的 k 个utterances。
- word-level perturbations : 1) $\mathcal{word-shuffle}$ 2) $\mathcal{reverse}$ 3) $\mathcal{word-drop}$ : 丢掉 30% 的 words 4) $\mathcal{noun-drop}$ : 丢掉所有的名词。5) $\mathcal{verb-drop}$
3. models
所有的数据加载,模型实现,和评估的过程都在 ParlAI 架构实现的。模型的所有超参数也都是和那个平台一样。
- recurrent models : seq2seq_LSTM
- transformer : 300 维 embeddings and hidden states
实验中的模型可能不是试验中所用的数据集上表现最优的模型,作者仍然相信这些模型至少可以像一个baseline 一样具有普适性普遍的使用。在这篇文章中,作者训练10轮就停止为了去保存最好的模型(?)。
results & discussion
表 2 第二列展示了在测试集上不同模型的困惑度,后边几列是不同的扰动造成的困惑度的 increase;图一展示了仅仅摘取最近 k 句话作为对话历史时模型困惑度的改变。
作者有如下发现:
- 在大多数情况下模型在困惑度上只有很小的改变,甚至当改变非常明显时也变化不大,这意味着模型使用的信息只是提供给他们的信息中很少一部分。
- transformer 对词序的变化不敏感,这意味着他们能学习词袋表示
- 注意力机制的使用使得模型使用更多的来自于对话早期的信息(当只使用一句话时困惑度增加的非常剧烈)
- 尽管 transformer 模型收敛更快且有着更低的困惑度,但是他们似乎不能捕捉到对话历史中的动态变化且对扰动不是很敏感,相对于recurrent 模型来说。
conclusion
本文研究生成神经对话系统在其所依赖的对话历史中综合引入扰动时的行为。我们发现,即使对对话历史进行剧烈的、非自然的修改,recurrent and transformer-based seq2seq models 也没有显著的变化。我们还发现了 recurrent and transformer-based seq2seq models 在利用对话历史的方式上的细微区别。通过开源代码,我们相信这种通过引入扰动来研究模型行为的例子将成为一个有用的诊断工具。
《Do Neural Dialog Systems Use the Conversation History Effectively? An Empirical Study》的更多相关文章
- 《Mem2Seq: Effectively Incorporating Knowledge Bases into End-to-EndTask-Oriented Dialog Systems》
Multihop Attention Networks (MANs) https://zhuanlan.zhihu.com/p/52067672 https://blog.csdn.net/qq_38 ...
- 实现径向变换用于样本增强《Training Neural Networks with Very Little Data-A Draft》
背景: 做大规模机器学习算法,特别是神经网络最怕什么--没有数据!!没有数据意味着,机器学不会,人工不智能!通常使用样本增强来扩充数据一直都是解决这个问题的一个好方法. 最近的一篇论文<Trai ...
- 短文对话的神经反应机 -- Neural Responding Machine for Short-Text Conversation学习笔记
最近学习了一篇ACL会议上的文章,讲的是做一个短文对话的神经反映机, 原文: 会议:ACL(2015) 文章条目: Lifeng Shang, Zhengdong Lu, Hang Li: Ne ...
- 《Graph Neural Networks: A Review of Methods and Applications》阅读笔记
本文是对文献 <Graph Neural Networks: A Review of Methods and Applications> 的内容总结,详细内容请参照原文. 引言 大量的学习 ...
- pytorch -- CNN 文本分类 -- 《 Convolutional Neural Networks for Sentence Classification》
论文 < Convolutional Neural Networks for Sentence Classification>通过CNN实现了文本分类. 论文地址: 666666 模型图 ...
- 《C#微信开发系列(Top)-微信开发完整学习路线》
年前就答应要将微信开发的学习路线整理给到大家,但是因为年后回来这段时间学校还有公司那边有很多事情需要兼顾,所以没能及时更新文章.今天特地花时间整理了下,话不多说,上图,希望对大家的学习有所帮助哈. 如 ...
- Smart3D系列教程3之 《论照片三维重建中Smart3D几个工作模块的功能意义》
[摘要] 近年来,倾斜摄影测量技术是国际测绘遥感领域近年发展起来的一项高新技术,利用照片进行三维重建成为一项关键性的技术.Smart3D软件,是照片三维重建主流软件之一,本文将就Smart3D建模软件 ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》-1.通讯框架介绍
[连载]<C#通讯(串口和网络)框架的设计与实现>- 0.前言 目 录 第一章 通讯框架介绍... 2 1.1 通讯的本质... 2 1 ...
- C++ 11学习和掌握 ——《深入理解C++ 11:C++11新特性解析和应用》读书笔记(一)
因为偶然的机会,在图书馆看到<深入理解C++ 11:C++11新特性解析和应用>这本书,大致扫下,受益匪浅,就果断借出来,对于其中的部分内容进行详读并亲自编程测试相关代码,也就有了整理写出 ...
随机推荐
- Jquery的load加载本地文件出现跨域错误的解决方案"Access to XMLHttpRequest at 'file:///android_asset/web/graph.json' from(Day_46)
博主是通过JS调用本地的一个json文件赋值给变量出现的跨域错误, 网上有大量文章,五花八门的,但总归,一般性此问题基本可通过这三种方法解决: https://blog.csdn.net/qq_418 ...
- ThinkPHP 全局异常处理
wqy的笔记:http://www.upwqy.com/details/273.html 在thinkphp6 和 thinkphp5 全局异常处理 稍有不同 ThinkPHP6 在 tp6 中 框架 ...
- GO语言复合类型01---指针
package main /* %T 类型占位符 %v 值占位符 %p 地址(指针)占位符,只有地址才能替换%p &value 对值取地址 *addr 对地址取值 **int 指向int型指针 ...
- 一篇文章弄懂 Java 反射的使用
说到Java反射,必须先把 Java 的字节码搞明白了,也就是 Class , 大 Class 在之前的文章中,我们知道了Java的大Class就是类的字节码,就是一个普通的类,里面保存的是类的信息, ...
- cuSPARSELt开发NVIDIA Ampere结构化稀疏性
cuSPARSELt开发NVIDIA Ampere结构化稀疏性 深度神经网络在各种领域(例如计算机视觉,语音识别和自然语言处理)中均具有出色的性能.处理这些神经网络所需的计算能力正在迅速提高,因此有效 ...
- gpgpu-sim卡分配程序设计实例分析
gpgpu-sim卡分配程序设计实例分析 运行代码地址:https://github.com/gpgpu-sim/gpgpu-sim_distribution 一.概述 此文件包含有关安装.生成和运行 ...
- 激光雷达Lidar Architecture and Lidar Design(下)
Considerations on Lidar Design 双基地还是单基地? 双轴还是同轴? 几何重叠 向上还是向下看? 关心分散还是只关心时间? 发射器和接收器的波长 是否可调? 发射器和接收器 ...
- 77GHz 和24GHz Radar性能解析
77GHz 和24GHz Radar性能解析 一.77GHz MRR 77GHz MRR Automotive Collision Warning Radar Application MRR – Fo ...
- 小白自制Linux开发板 一. 瞎抄原理图与乱画PCB
因为墨云是基于高中物理水平的电路知识来学习.而且此前也就玩过树莓派.Esp8266之类的开发板,水平基础趋近于零,所以在写这个系列的时候抱着记录的心态.还望不足之处还望大佬们指正. <论语> ...
- Django(59)验证和授权
验证和授权概述 Django有一个内置的授权系统.他用来处理用户.分组.权限以及基于cookie的会话系统.Django的授权系统包括验证和授权两个部分.验证是验证这个用户是否是他声称的人(比如用 ...