昨天介绍了一篇工程性比较强的paper,关于对话生成(bot)任务的,今天继续分享一篇bot方面的paper,6月2日刚刚submit在arxiv上。昨天的文章用了一种最最简单的端到端模型来生成对话,取得了不错的结果,而本文用了一种更加复杂的模型来解决这个问题,取得了更好的结果。文章的题目是Multiresolution Recurrent Neural Networks: An Application to Dialogue Response Generation,作者是来自蒙特利尔大学的博士生Iulian Vlad Serban。

本文最大的贡献在于提出了一种多尺度循环神经网络(Multiresolution RNN,MrRNN),这里的多尺度是指描述文本序列的方式有多种尺度,不仅仅是传统的用一个又一个word来表示序列,这种表示称为自然语言表示,还包括了一种所谓的high-level信息来表示文本序列,这种表示称为粗糙序列表示。本文的模型受启发于分层循环端到端模型(Hierarchical Recurrent Encoder-Decoder,HERD),该模型应用于搜索领域,将用户的search session划分为两个层次的序列,一个是query的序列,一个是每个query中词的序列。

本文模型中一个非常重要的部分是数据的预处理,将训练数据中的所谓high-level信息提取出来构造第二种序列来表示整个文本,这里用了两种思路。

1、提取文本中的名词。用词性标注工具提取出文本中的名词,去掉停用词和重复的词,并且保持原始的词序,还添加了句子的时态。通过这个过程构造了一种表示原始文本的序列。

2、提取文本中的动词和命名实体。用词性标注工具提取文本中的动词,并标记为activity,然后通过一些其他工具从所有训练数据中构造了一个命名实体的词典,帮助提取原句中的命名实体。因为数据集是ubuntu对话数据集,会涉及到大量的linux命令,所以还构造了一个linux命令词典,以标记原句中的命令。同样地也添加了句子的时态。通过这个处理过程,构造了另外一种表示原始文本的序列。

两种处理方法将原句用一种关键词的形式表示出来,尤其是第二种方法针对Ubuntu数据集的特点,包含了非常多的特征进来。这样的表示本文称为coarse sequence representation,包含了high-level的信息,比起单纯的word by word sequence具有更加丰富的意义。

接下来,看一下本文模型的架构图:

模型中包括了两个层次,或者说是两种尺度,一种用了很多的词来表示一个句子,另外一种用了经过处理的包含了更加重要的信息的词来表示一个句子。下层生成的预测值将会作为上层docoder在做预测时的context的一部分,这部分context包含了重要的、high-level的信息,再加上上层自己encoder的输出也作为context,可以说这个模型的context包含了非常丰富的内容。理解上面的图,只要仔细看好箭头的指向,也就明白了各个部分的输入输出是哪些。每个time step的数据流过程如下:

下层:coarse encoder -> coarse context -> coarse decdoer -> coarse predciton encoder

上层:natural language encoder -> (natural language context + coarse prediction encoder) -> natural language decoder -> natural language prediction

不管是用自动评价指标还是人工评价,结果都表明了本文的模型效果比baseline要高出很多个百分点,远远好于其他模型。下面展示一个结果,是ubuntu数据集上的测试效果:

可以看的出本文模型生成的结果效果比其他模型好很多。

本文模型并不是一个纯粹的数据驱动的模型,在初始的阶段需要做一些非常重要的数据预处理,正是这个预处理得到的序列表示给本文的好结果带来了保证。我想,这种处理问题的思路可以推广到解决其他问题上,虽然本文模型很难直接应用到其他问题上,但我相信经过一些不大的变化之后,可以很好地解决其他问题,比如我一直关注的自动文摘问题,还有机器翻译、自动问答等等各种涉及到自然语言生成问题的任务上。这篇文章的结果也支持了我之前的一个观点,就是在解决问题上不可能存在银弹,不同的问题虽然可以经过一些假设变成相同的数学问题,但真正在应用中,不同的问题就是具有不同的特点,如果只是想用一种简单粗暴的data driven模型来解决问题的话,相信效果会不如结合着一些该问题feature的模型。

来源:paperweekly

原文链接

Multiresolution Recurrent Neural Networks: An Application to...相关推荐

  1. 【多标签文本分类】Ensemble Application of Convolutional and Recurrent Neural Networks for Multi-label Text

    ·阅读摘要:   本文提出基于Seq2Seq模型,提出CNN-RNN模型应用于多标签文本分类.论文表示CNN-RNN模型在大型数据集上表现的效果很好,在小数据集效果不好. ·参考文献:   [1] E ...

  2. 循环神经网络教程Recurrent Neural Networks Tutorial, Part 1 – Introduction to RNNs

    Recurrent Neural Networks (RNNs) are popular models that have shown great promise in many NLP tasks. ...

  3. Paper:《Generating Sequences With Recurrent Neural Networks》的翻译和解读

    Paper:<Generating Sequences With Recurrent Neural Networks>的翻译和解读 目录 Generating Sequences With ...

  4. All of Recurrent Neural Networks (RNN)

    - notes for the Deep Learning book, Chapter 10 Sequence Modeling: Recurrent and Recursive Nets. Meta ...

  5. Recurrent Neural Networks Tutorial, Part 1 – Introduction to RNNs

    Recurrent Neural Networks (RNNs) are popular models that have shown great promise in many NLP tasks. ...

  6. The Unreasonable Effectiveness of Recurrent Neural Networks

    Andrej Karpathy blog 转自:http://karpathy.github.io/2015/05/21/rnn-effectiveness/ Karpathy 关于RNN的博客 Th ...

  7. Paper:RNN之《Generating Sequences With Recurrent Neural Networks用循环神经网络生成序列》的翻译和解读

    Paper:<Generating Sequences With Recurrent Neural Networks>的翻译和解读 目录 Generating Sequences With ...

  8. A Critical Review of Recurrent Neural Networks for Sequence Learning-论文(综述)阅读笔记

    A Critical Review of Recurrent Neural Networks for Sequence Learning 阅读笔记 //2022.3.31 下午15:00开始 论文地址 ...

  9. 循环神经网络(RNN, Recurrent Neural Networks)介绍

    循环神经网络(RNN, Recurrent Neural Networks)介绍   循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural ...

最新文章

  1. MySQL中INSERT INTO SELECT的使用
  2. 用fpda 写一个risc-v
  3. Dubbo 3.0 前瞻之对接 Kubernetes 原生服务
  4. 5分钟教你写出一份完美的PRD文档(附案例)
  5. dede php标签 禁用,DedeCMS Error:Tag disabled:php的解决办法
  6. Redis快的原因:线程切换 IO 内存 数据结构 VM机制
  7. iOS - UIView属性hidden, opaque, alpha, opacity的区别
  8. 想多赚点钱,一个最简单的办法,找到适合自身的坑
  9. ssms 连接 ssis_在SSMS中手动设置SSIS包加密
  10. Python操作数据库遇到的问题
  11. mysql存储过程更新数据后返回一个字段_史上最全存储引擎、索引使用及SQL优化的实践...
  12. 当你写爬虫遇到APP的请求有加密参数时该怎么办?【初级篇-常规模式】
  13. Django 结构及处理流程分析
  14. Android音频的播放
  15. matlab中GUI界面的一些设计与操作
  16. linux下录制视频流,Ubuntu Linux 下的PSP视频输出以及录制
  17. 交换机的基本原理与配置
  18. 如何快速合并PDF文件?几个方法教你合并PDF
  19. 把信送给加西亚读后感
  20. 曾经的习武少年,如今的锦佰安CEO:他立志要开启身份认证的无密时代

热门文章

  1. mysql c 驱动dll_C#调用MySQL数据库(使用MySql.Data.dll连接)mysql-connector-net-6.10.4.msi
  2. python抽签代码_Python(抽签问题),python实例,
  3. 安全云盘项目(四)4.1: 云盘原型系统详细设计
  4. leetcode刷题:求旋转有序数组的最小值
  5. 中考可以使用计算机吗,中考报志愿必须用电脑吗
  6. SpringSecurityFilterChain
  7. Node.js webpack
  8. Flink 数据类型
  9. cuda stream
  10. 1.11 为什么使用卷积?