干货 | 中科大夏应策:推敲网络——用于序列生成的网络结构

AI 科技评论按:基于编码器-解码器结构的序列生成模型被广泛应用文本任务,例如神经机器翻译,摘要生成,对话系统等等。然而,现有模型在生成序列的时候都是只生成一次,而没有反复「推敲」的过程。而推敲在我们进行翻译、写文章的时候是一个很普遍的做法。因此有研究者将「推敲」引入序列生成模型中,提出了推敲网络,来改进序列生成质量。

在近期 GAIR 大讲堂的线上公开课上,来自中国科大--微软博士联合培养班的夏应策同学分享了一篇收录在 NIPS 2017 上的论文:Deliberation Networks: Sequence Generation Beyond One-Pass Decoding。他也是这篇论文的一作。

论文地址: http://papers.nips.cc/paper/6775-deliberation-networks-sequence-generation-beyond-one-pass-decoding.pdf

夏应策,博士五年级,现就读于中国科大--微软博士联合培养班,研究方向为机器学习(包括对偶学习,神经机器翻译和多臂赌博机),是 2016 年微软学者奖得主之一。

分享提纲

  • 序列生成模型的基本结构以及应用(主要介绍神经机器翻译)
  • 推敲网络的结构和优化算法
  • 推敲网络的实验结果
  • 推敲网络和对偶学习的结合

序列生成模型的基本结构以及应用

推敲网络

基于编码器-解码器结构的序列生成模型被广泛应用文本任务,神经机器翻译,摘要生成,对话系统等等。比如下图中的看图说话——机器读取一张图,描述出图片的大概内容;文本摘要——给出一段长文字,机器给出整段文章的大概意思。

然而,现有模型在生成序列的时候都是只生成一次,而没有反复「推敲」的过程。而推敲在我们进行翻译、写文章的时候是一个很普遍的做法。因此我们将「推敲」引入序列生成模型中,提出了推敲网络,来改进序列生成质量。在该研究中,我们将推敲过程加入到了编码器-解码器框架中,并提出了用于序列生成的推敲网络(Deliberation networks)。推敲网络具有两阶段解码器,其中第一阶段解码器用于解码生成原始序列,第二阶段解码器通过推敲的过程打磨和润色原始语句。由于第二阶段推敲解码器具有应该生成什么样的语句这一全局信息,因此它能通过从第一阶段的原始语句中观察未来的单词而产生更好的序列。神经机器翻译和自动文本摘要的实验证明了我们所提出推敲网络的有效性。在 WMT 2014 英语到法语间的翻译任务中,我们的模型实现了 41.5 的 BLEU 分值。

下面以机器翻译为例,完成一个翻译任务需要一个编码器和解码器结构。

注意力机制

基本结构有了之后如何训练系统?现在一般序列生成或自然语言处理都是采用端到端的训练方式,分为三个过程:训练、推理、评价指标。

神经机器翻译中的定向搜索(beam search)过程

推敲网络的研究目的

现有模型在生成序列的时候都是只生成一次,而没有反复「推敲」的过程。而「推敲」在我们进行翻译、写文章的时候是一个很普遍的做法。比如在读文章的时候,遇到不认识的单词可能不是立刻去查字典,而是跳过这个单词读到文章的结尾,再反过来去猜测单词是什么意思。另一个例子是在写 paper 的时候,可能先写一个草稿,然后不断修改,先有一个整体框架,拿到全局信息,知道大概想表达什么,然后再不断推敲写出来的到底是什么意思。这两个例子说明了向前看和得到全局信息的重要性。

因此我们将「推敲」引入序列生成模型中,提出了推敲网络,来改进序列生成质量。现在的神经机器翻译和序列生成任务中,在解码端是没有「向前看」这个过程的。

下面是推敲网络的大概框架,左侧是编码器,右侧是解码器。蓝色、黄色和绿色部分分别表示编码器 E、第一阶段解码器 D1 和第二阶段解码器 D2。具体程序解读过程请观看视频回放。

以上是模型部分,接下来介绍应用及具体的实验效果。

两个任务分别是神经机器翻译和文本摘要。采用了两种模型,一种是浅模型,另外也验证了深度模型上的效果。

浅模型,基于名为 RNNSearch 的有广泛应用的单层 GRU 模型;深度模型,基于类似于 GNMT 的深度 LSTM 模型。这两类模型都是在 Theano 中实现的。

神经机器翻译在浅模型上的效果

神经机器翻译(NMT)用的数据集是英法和中英数据集。标准的 NMT 模型由一个编码器(用于编码源句子)和一个解码器(用于生成目标句子)组成,因为可以使用我们提出的推敲网络加以改善。在 WMT' 14 英语→法语数据集上基于广泛应用的单层 GRU 模型上实验结果表明:相比于没有使用推敲的模型,使用推敲可以将 BLEU 分值提升 1.7。

我们还在汉语→英语翻译上应用了我们的模型,并且在 4 种不同的测试集上平均实现了 1.26 的 BLEU 提升。此外,在 WMT' 14 英语→法语翻译任务上,通过将推敲应用于深度 LSTM 模型,我们实现了 41.50 的 BLEU 分值。

文本摘要,即将长文章归纳为短摘要的任务。这个任务可以使用编码器-解码器框架,因此也可以使用推敲网络来精细处理。在 Gigaword 数据集上的实验结果表明推敲网络可以将 ROUGE-1、ROUGE-2 和 ROUGE-L 分别提升 3.45、1.70 和 3.02。

对偶学习

为什么要研究对偶学习?因为自然界很多任务都是对偶的,比如英—法,法—英是一对儿对偶任务,语音转文字,文字转语音也是一对儿对偶任务;图像分类和图像生成也是一对儿对偶任务。它们之间都互为一个逆任务,它们之间肯定会有某种联系,我们希望利用它们之间的对偶性,提高任务的性能。最直接的表现就是能够非常高效地利用数据,包括无标数据和有标数据。对偶学习应该怎么用?请点击文末视频回放。

结论及未来工作

在这项研究中,我们提出了用于序列生成任务的推敲网络,实验表明我们的方法在机器翻译和文本摘要任务上可以实现比几种基准方法更优的结果。

未来还有多个可以探索,具有潜力的研究方向。首先,我们将研究如何将推敲的思想应用于序列生成之外的任务,比如改善 GAN 生成的图像质量;其次,我们将研究如何细化、润色不同层级的神经网络,比如 RNN 中的隐藏状态或 CNN 中特征图;第三,我们还很好奇如果解码器有更多阶段(即多次打磨润色生成的序列),生成的序列是否还会更好;第四,我们还将研究如何加速推敲网络的推理以及缩短它们的推理时间。

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2018-02-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开发与安全

算法:AOV网(Activity on Vextex Network)与拓扑排序

在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,我们称之为AOV网(Activity on Vextex ...

2537
来自专栏Java Edge

AbstractList源码解析1 实现的方法2 两种内部迭代器3 两种内部类3 SubList 源码分析4 RandomAccessSubList 源码:AbstractList 作为 Lis

它实现了 List 的一些位置相关操作(比如 get,set,add,remove),是第一个实现随机访问方法的集合类,但不支持添加和替换

462
来自专栏Hongten

ArrayList VS Vector(ArrayList和Vector的区别)_面试的时候经常出现

1732
来自专栏项勇

笔记68 | 切换fragmengt的replace和add方法笔记

1444
来自专栏学海无涯

Android开发之奇怪的Fragment

说起Android中的Fragment,在使用的时候稍加注意,就会发现存在以下两种: v4包中的兼容Fragment,android.support.v4.ap...

3165
来自专栏聊聊技术

原 数据结构-二叉搜索树(Binary S

2887
来自专栏MelonTeam专栏

ArrayList源码完全分析

导语: 这里分析的ArrayList是使用的JDK1.8里面的类,AndroidSDK里面的ArrayList基本和这个一样。 分析的方式是逐个API进行解析 ...

4519
来自专栏xingoo, 一个梦想做发明家的程序员

20120918-向量实现《数据结构与算法分析》

#include <iostream> #include <list> #include <string> #include <vector> #include...

1726
来自专栏java闲聊

JDK1.8 ArrayList 源码解析

当运行 ArrayList<Integer> list = new ArrayList<>() ; ,因为它没有指定初始容量,所以它调用的是它的无参构造

1192
来自专栏xingoo, 一个梦想做发明家的程序员

Spark踩坑——java.lang.AbstractMethodError

百度了一下说是版本不一致导致的。于是重新检查各个jar包,发现spark-sql-kafka的版本是2.2,而spark的版本是2.3,修改spark-sql-...

1200

扫码关注云+社区