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》的更多相关文章

  1. 《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 ...

  2. 实现径向变换用于样本增强《Training Neural Networks with Very Little Data-A Draft》

    背景: 做大规模机器学习算法,特别是神经网络最怕什么--没有数据!!没有数据意味着,机器学不会,人工不智能!通常使用样本增强来扩充数据一直都是解决这个问题的一个好方法. 最近的一篇论文<Trai ...

  3. 短文对话的神经反应机 -- Neural Responding Machine for Short-Text Conversation学习笔记

    最近学习了一篇ACL会议上的文章,讲的是做一个短文对话的神经反映机, 原文: 会议:ACL(2015) 文章条目:    Lifeng Shang, Zhengdong Lu, Hang Li: Ne ...

  4. 《Graph Neural Networks: A Review of Methods and Applications》阅读笔记

    本文是对文献 <Graph Neural Networks: A Review of Methods and Applications> 的内容总结,详细内容请参照原文. 引言 大量的学习 ...

  5. pytorch -- CNN 文本分类 -- 《 Convolutional Neural Networks for Sentence Classification》

    论文  < Convolutional Neural Networks for Sentence Classification>通过CNN实现了文本分类. 论文地址: 666666 模型图 ...

  6. 《C#微信开发系列(Top)-微信开发完整学习路线》

    年前就答应要将微信开发的学习路线整理给到大家,但是因为年后回来这段时间学校还有公司那边有很多事情需要兼顾,所以没能及时更新文章.今天特地花时间整理了下,话不多说,上图,希望对大家的学习有所帮助哈. 如 ...

  7. Smart3D系列教程3之 《论照片三维重建中Smart3D几个工作模块的功能意义》

    [摘要] 近年来,倾斜摄影测量技术是国际测绘遥感领域近年发展起来的一项高新技术,利用照片进行三维重建成为一项关键性的技术.Smart3D软件,是照片三维重建主流软件之一,本文将就Smart3D建模软件 ...

  8. [连载]《C#通讯(串口和网络)框架的设计与实现》-1.通讯框架介绍

    [连载]<C#通讯(串口和网络)框架的设计与实现>- 0.前言 目       录 第一章           通讯框架介绍... 2 1.1           通讯的本质... 2 1 ...

  9. C++ 11学习和掌握 ——《深入理解C++ 11:C++11新特性解析和应用》读书笔记(一)

    因为偶然的机会,在图书馆看到<深入理解C++ 11:C++11新特性解析和应用>这本书,大致扫下,受益匪浅,就果断借出来,对于其中的部分内容进行详读并亲自编程测试相关代码,也就有了整理写出 ...

随机推荐

  1. 重新整理 .net core 实践篇————配置系统——军令(命令行)[六]

    前言 前文已经基本写了一下配置文件系统的一些基本原理.本文介绍一下命令行导入配置系统. 正文 要使用的话,引入Microsoft.extensions.Configuration.commandLin ...

  2. Proteus仿真MSP430单片机的若干问题记录

    1.支持的具体型号: P7.8: Proteus8.9: Proteus8.9能够支持的类型明显要多于Proteus7.8.但是对于仿真而言,目前个人还是觉得Proteus7.8更稳定.这也是目前能用 ...

  3. Proteus中包含的传感器类型(Transducers)

    1. 传感器列表 2. 部分传感器的测量电路 (1)光照传感器,搭采样电阻,测电压输出. (2)距离传感器,带采样电阻,测电压输出. (3)粉尘传感器,测PWM脉宽 其余传感器多为总线类型的传感器,各 ...

  4. CVPR2020论文解读:手绘草图卷积网络语义分割

    CVPR2020论文解读:手绘草图卷积网络语义分割 Sketch GCN: Semantic Sketch Segmentation with Graph Convolutional Networks ...

  5. 自监督学习(Self-Supervised Learning)多篇论文解读(上)

    自监督学习(Self-Supervised Learning)多篇论文解读(上) 前言 Supervised deep learning由于需要大量标注信息,同时之前大量的研究已经解决了许多问题.所以 ...

  6. 在NVIDIA(CUDA,CUBLAS)和Intel MKL上快速实现BERT推理

    在NVIDIA(CUDA,CUBLAS)和Intel MKL上快速实现BERT推理 直接在NVIDIA(CUDA,CUBLAS)或Intel MKL上进行高度定制和优化的BERT推理,而无需tenso ...

  7. TensorRT 3:更快的TensorFlow推理和Volta支持

    TensorRT 3:更快的TensorFlow推理和Volta支持 TensorRT 3: Faster TensorFlow Inference and Volta Support 英伟达Tens ...

  8. 使用firefox打开网页报错——Error: no display specified

    想在linux环境下打开一个网页,环境描述:在窗口模式下,打Terminal,然后从本地服务器ssh到了另一个服务器,想执行firefox命令打开一个网页,如下 [root@pc207 ~]# fir ...

  9. 连接过的WiFi改了密码之后再次连接不让输入新密码还是用旧密码一直显示连接失败

    设置---网络和Internet---WLAN----管理已知网络----忘记    根据这个步骤就能忘记密码,重新输入新密码了.

  10. 撸了几天的sofa-tracer之后,我悟了!

    什么是分布式链路跟踪 简而言之,在分布式系统下,用于跟踪链路而衍生出的一项技术. 应用场景如下: 应用A,B,C,D,E 以一个层级关系依赖, 当用户向 应用A 发起请求,但是返回了个异常,为了排查这 ...