前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Sequence to Sequence Learning with Neural Networks论文阅读

Sequence to Sequence Learning with Neural Networks论文阅读

作者头像
mathor
发布于 2020-03-17 02:19:29
发布于 2020-03-17 02:19:29
1.5K0
举报
文章被收录于专栏:mathormathor

论文下载

作者(三位Google大佬)一开始提出DNN的缺点,DNN不能用于将序列映射到序列。此论文以机器翻译为例,核心模型是长短期记忆神经网络(LSTM),首先通过一个多层的LSTM将输入的语言序列(下文简称源序列)转化为特定维度的向量,然后另一个深层LSTM将此向量解码成相应的另一语言序列(下文简称目标序列)。我个人理解是,假设要将中文翻译成法语,那么首先将中文作为输入,编码成英语,然后再将英语解码成法语。这种模型与基于短语的统计机器翻译(Static Machine Translation, SMT)相比,在BLUE(Bilingual Evaluation Understudy)算法的评估下有着更好的性能表现。同时,作者发现,逆转输入序列能显著提升LSTM的性能表现,因为这样做能在源序列和目标序列之间引入许多短期依赖,使得优化更加容易

1 Introduction

深度神经网络(Deep Nerual Networks)是一种性能强大的模型,在处理各种难题,如语音识别图像识别上有着近乎完美的表现。这种模型之所以这么强大,是因为它能在有限的步骤内实现任意并行计算。只要有足够的训练数据集,它就能训练出神经网络的参数,从而DNN能产生很好的效果

虽然DNN有着很强的能力,但只能将源序列和目标序列都编译为固定维度的向量。这是一个致命的问题,因为很多问题都无法提前预知被表示序列的长度,例如语音识别与机器翻译

解决问题的思路就是先用一层LSTM读入源序列,逐步获得大量维度固定的表示向量,然后用另一层LSTM从向量中提取出目标序列。第二层LSTM本质上是一个语言模型。由于输入和输出之间存在相当大的时间延迟,所以使用LSTM对具有长期时间依赖性的数据进行训练是相当好的选择

第二段作者介绍了其他人的一些工作,这里就不多叙述了

从图中我们可以简要了解LSTM模型的解决思路,先读入源序列"ABC",遇到结束符"<EOS>"停止,然后输出目标序列"WXYZ"。其中有一个小策略,LSTM是反过来读取输入语句的,因为这样做可以引入更多的短期依赖,从而使优化更容易

上面的内容主要意思就是作者和其它各种模型进行了比较,比别人的效果都要好,有一些效果很接近

令人惊讶的是,LSTM训练很长的句子也没什么问题,因为作者颠倒了训练集和测试集中源序列的单词顺序

LSTM另一个重要特质是它能够学会将不同长度的句子映射在一个维度固定的向量。常规的翻译倾向于逐字逐句翻译,但LSTM倾向于理解句子的含义,因为同样的句子在不同的语境中的含义有所不同。一项定性评估支持了作者的理论,表明其模型知道单词顺序,并且相对于主动和被动语态均保持不变

2 The model

循环神经网络是一前馈神经网络对于序列的一种自然泛化。即给定一个输入序列$x_1,...,x_T$,RNN可以用通过以下公式迭代得到输出序列$y_1,...,y_T$

$$ \begin{align*} h_t&=\sigma(W^{hx}x_t+W^{hh}h_{t-1})\\ y_t&=W^{yh}h_t \end{align*} $$

只要提前知道输入和输出序列长度相同,RNN就可以轻松地将序列映射到序列。但是,还不清楚如何应用到输入和输出序列长度不同且具有复杂和非单调关系的问题

通用的序列学习方法最简单的策略是使用一个RNN将源序列映射到固定大小的向量,然后是用另一个RNN将该向量映射为目标序列。虽然它原则上是可行的,但由于向RNN提供了所有相关信息,产生了长期依赖性,因此RNN变得很难训练。不过,总所周知,LSTM可以学习具有长期时间依赖性的问题,因此LSTM在这种情况下可能会成功

LSTM的目标是估计出条件概率$P(y_1,...,y_{T'}|x_1,...,x_T)$,其中$(x_1,...,x_T)$是输入序列,$(y_1,...,y_T)$是相应的输出序列,并且长度$T$和$T'$允许不相同。LSTM首先获得最后一个隐藏状态给出的固定维度向量$v$。然v用一个标准的LSTM-LM公式计算$y_1,...,y_T$的概率。此方程的最终隐藏状态是$(x_1,...,x_T)$表示的$v$

$$ P(y_1,...,y_T|x_1,...,x_T)=\prod_{t=1}^{T'}P(y_t|v,y_1,...,y_{t-1}) $$

在这个等式中,每个$P(y_t|v,y_1,...,y_{t-1})$分布用词汇表中所有单词的softmax表示。同时需要在每个句子的结尾用"<EOS>"来标识,这使得模型能够定义所有可能长度序列的分布

但作者的实际模型与以上描述有三个方面不同

  1. 使用了两个不同的LSTM,一个用于输入序列,一个用于输出序列。因为这样能在小刀几乎可以忽略的计算消耗下增加更多的模型参数
  2. 作者发现深层LSTM的表现显著优于浅层LSTM,所以最终选用四层LSTM
  3. 颠倒输入句子的单词顺序非常有用。举例来说,不是把句子a,b,c映射为句子$\alpha,\beta,\gamma$,而是把c,b,a映射为$\alpha,\beta,\gamma$。这样做使得a非常靠近$\alpha$,b非常靠近$\beta$,以此SGD就很容易在输入和输出之间"建立通信",这种简单的数据转换大大提高了LSTM的性能

3 Experiments

作者使用两种方式将它们的方法应用于WMT'14英语→法语的机器翻译任务中,我们使用它来直接翻译句子,而不是使用SMT(SMT, Statistical Machine Translation)

3.1 Dataset details

我们将模型训练在一个由3.48亿个法语单词和3.04亿个英语单词组成的1200万个句子的子集上,这是一个干净的精心挑选的子集。之所以选择此次翻译的任务和训练集,是因为它们作为标记化训练的广范实用性,并且这些数据都是来自STM baseline中的1000个最佳列表

由于典型的神经网络模型需要将每个单词转换为向量表示,所以我们对两种语言都使用了固定的词汇。我们对源语言使用了160000个最频繁出现的单词,对目标语言使用了80000个最频繁出现的单词。每个不在这个词汇表中的单词都被特殊标记为"UNK"

3.2 Decoding and Rescoring

我们实验的核心是在许多句子对上训练一个大而深的LSTM。通过最大化一个对数概率来训练这个网络,其中的概率是在给定源句子S上的正确翻译T

$$ \frac{1}{|S|}\sum_{(T,S)\in S}log\ p(T|S) $$

此处S是训练集,训练完成后,根据LSTM找出最可能的翻译作为结果

$$ \hat{T}=\mathop{argmax}\limits_{T}\ p(T|S) $$

3.3 Reversing the Source Sentences

虽然LSTM能够解决具有长期依赖关系的问题,但是我们发现,当源语句被反转(目标语句没有反转)时,LSTM的表现更好

虽然我们对这一现象没有一个完整的解释,但我们认为这是由于对数据集引入了许多短期依赖关系造成的。通常,当我们把源序列与目标序列链接时,原序列中的每个词语在目标序列中的对应单词相差很远。因此,该问题具有"最小时间延迟"的问题。通过颠倒源序列中的单词,源序列中对应单词与目标序列中词语的平均距离不变,但源序列中的最初几个词已经非常接近目标序列中的词了,所以"最小时间延迟"问题就能减小许多。因此,反向传播能够更轻松地在源序列和目标序列中建立联系,并且改善整体的性能表现

这里的"最小时间延迟",我个人深有体会,不是在NLP领域,而是我自己用LSTM做时间序列预测的时候发现的一个问题,预测值总是比真实值看上去要延迟1到3个单位,整体轮廓是如此的相似,可惜就是横坐标对不上

作者起初认为逆转源序列只会对句子的前半部分取得良好的表现,对后半部分的优化会较差。然而实际表现都很好。为什么有这样的奇效呢?其实可以这么理解,当我们将输入句子倒序后,输入句子与输出句子之间的平均距离其实并没有改变,而在倒序前,输入与输出之间的最小距离是很大的,并且每个词与其对应的翻译词的间隔是相同的,而倒序后,前面的词(与其翻译词)之间的间隔变小,后面的词(与其翻译词)间隔变大,但前面间隔小的词所带来的性能提升非常大,以至于能够使得后面的翻译效果不降反增

3.4 Training details

作者使用了4层的深度LSTMs,每层有1000个单元,1000维的单词嵌入,输入词汇为160000,输出词汇为80000。我们发现深层LSTMs明显优于浅层LSTMs,浅层LSTMs每增加一层,perplexity就减少10%,这可能是因为它们的隐藏状态更大。完整的训练详情如下:

  • 使用(-0.08,0.08)之间的均匀分布初始化所有的LSTM参数
  • 使用无动量的SGD optimization,初始lr=0.7,五个epoch后,每半个epoch将学习率减半。总共使用7.5个epoch训练模型
  • batchsize=128
  • 虽然LSTM没有梯度消失的问题,但是可能会发生梯度爆炸,所以使用范数进行约束,对于每个batch,计算$s=|g|_2$,其中$g$是梯度除以128,如果$s>5$,则设置$g=\frac{5g}{s}$
  • 不同的句子有不同的长度,大多数句子很短(长度为20-30),但是有一些句子长度又很长(长度大于100),因此由128个随机选择的训练句子组成的minibatch将具有许多短句和很少长句,结果就是minibatch中大部分计算都是白费的。为了解决这个问题,确保在一个minibatch中的所有句子长度大致相同,最终速度提高了2倍
3.5 Parallelization
3.6 Experimental Results

下表是与其他模型在机器翻译上的效果对比,上面两行是其他模型的效果,下面六行是作者模型在不同参数设置时的效果

此外,作者还尝试将自己的模型与传统的STM系统进行结合,效果显著,BLEU最好的达到了37.0,超过Baseline System将近4个点

3.7 Performance on long sentences

在长句子上的表现也很好

3.8 Model Analysis

我们模型其中一个吸引力十足的特点就是有能力将一个序列映射为固定维度的向量,上图就是学习过程的可视化表示。每个短语根据其含义而聚类分布,从中我们可以看出其对单词的顺序非常敏感,而对被动语态替换主动语态则相当不敏感

左图展示了LSTM的表现与句子长度的函数关系,其中x轴代表相应句子整理后的长度(Test Sentences Sorted By their Length)。对于少数35字的句子,效果没有下降,只有在最长的句子中有略微的缩减。右图展示了LSTM的表现与句子中词语的稀有度之间的关系,其中x轴代表整理后句子的平均词语频率(Test Sentences Sorted By Average word Frequency Rank)

4 Related work

这一部分主要是作者讲述了目前其他人的一些工作以及成果,有兴趣自己阅读即可

5 Conclusion

在本论文中,我们发现一个基于有限词汇,具有深层结构的LSTM的性能表现能够胜过一个基于统计机器翻译的系统,基于LSTM的机器翻译的成功说明了它只要在拥有足够的训练数据的前提下,同样能在解决其他问题上发挥出色

我们对逆转源序列后的性能提升程度感到惊讶。同时我们也推断出,找到一个问题具有最大数量的短期相关性是非常重要的,因这样可以简化问题的解决。我们相信一个标准的RNN在逆转源序列后能够更加容易被训练

个人总结

这篇文章在当年看来可能非常惊艳,但是我读完这盘文章之后很无感,"不就是两个LSTM拼接吗?"。甚至我觉得作者这篇文章的重点在于逆转源序列进行训练,因为作者在许多地方都提到了,实在是让人印象深刻

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
这7种NLP黑科技让你更好交流!来看一看是什么(Part1)
【导读】本文用简洁易懂的语言,讲述了自然语言处理(NLP)的前世今生。从什么是NLP到为什么要学习NLP,再到如何利用机器学习进行NLP,值得一读。这是该系列的第一部分,介绍了三种NLP技术:文本嵌入
用户1737318
2018/07/20
3320
论文阅读:《Neural Machine Translation by Jointly Learning to Align and Translate》
https://blog.csdn.net/u011239443/article/details/80521026 论文地址:http://pdfs.semanticscholar.org/071b/16f25117fb6133480c6259227d54fc2a5ea0.pdf
小爷毛毛_卓寿杰
2019/02/13
1.1K0
论文阅读:《Neural Machine Translation by Jointly Learning to Align and Translate》
Sequence to Sequence Learning with Neural Networks
参考译文:https://blog.csdn.net/qq_28385535/article/details/86421359
种花家的奋斗兔
2020/11/13
9040
Sequence to Sequence Learning with Neural Networks
Neural Machine Translation 论文阅读
这是2015年发表在ICLR上的论文,也是NLP中Attention机制的开山之作,Attention机制是为了解决一般的RNN Encoder-Decoder对长句子表现不佳的问题而设计的。从论文题目中我们可以看到,作者希望通过Attention机制将输入句子input和输出句子output进行"对齐"(SMT中也有所谓的词对齐模型)。但是,由于不同语言的句法语法结构千差万别,想将源句子与翻译句子严格的对齐是很困难的,所以这里的对齐实际上是软对齐(soft-alignment),也就是不必将源句子显式分割,因而又被形象地称为注意力机制(Attention Mechanism)
mathor
2020/03/17
7810
利用神经网络进行序列到序列转换的学习
深度神经网络是在困难的学习任务中取得卓越性能的强大模型。尽管拥有大量的标记训练集,DNN就能很好地工作,但是它们并不能用于将序列映射到序列。在本文中,我们提出了一种通用的端到端序列学习方法,它对序列结构作出最小的假设。我们的方法使用多层长短期记忆网络(LSTM)将输入序列映射到一个固定维度的向量,然后使用另一个深层LSTM从向量中解码目标序列。我们的主要结果是,在WMT 14数据集的英法翻译任务中,LSTM的翻译在整个测试集中获得了34.8分的BLEU分数,而LSTM的BLEU分数在词汇外的单词上被扣分。此外,LSTM人在长句上没有困难。相比之下,基于短语的SMT在同一数据集上的BLEU得分为33.3。当我们使用LSTM对上述系统产生的1000个假设进行重新排序时,它的BLEU分数增加到36.5,这接近于之前在这项任务中的最佳结果。LSTM还学会了对词序敏感、并且对主动语态和被动语态相对不变的有意义的短语和句子表达。最后,我们发现颠倒所有源句(而不是目标句)中单词的顺序显著提高了LSTM的表现,因为这样做在源句和目标句之间引入了许多短期依赖性,使得优化问题变得更容易。
AI研习社
2019/05/13
1.6K0
利用神经网络进行序列到序列转换的学习
多图带你读懂 Transformers 的工作原理
Transformer是一类神经网络架构,现在越来越受欢迎了。Transformer最近被OpenAI用于训练他们的语言模型,同时也被DeepMind的AlphaStar 采用,用于他们的程序击败那些顶级星际玩家。
AI研习社
2019/05/08
1.1K0
多图带你读懂 Transformers 的工作原理
斯坦福NLP课程 | 第8讲 - 机器翻译、seq2seq与注意力机制
教程地址:http://www.showmeai.tech/tutorials/36
ShowMeAI
2022/05/10
7630
斯坦福NLP课程 | 第8讲 - 机器翻译、seq2seq与注意力机制
文本生成seq2seq框架
Seq2Seq是Sequence to Sequence的缩写,作用是将一个序列(sequence)映射成另一个序列(sequence)。文献[1]和文献[2]分别提出利用深度神经网络DNN实现端到端的Seq2Seq学习,将Seq2Seq应用于神经机器翻译(Neural Machine Translation,NMT),唯一不同的是在[1]中使用LSTM作为基础网络,而在[2]中则是使用的是RNN。在Seq2Seq框架中包含了两个模块,一个是encoder模块,另一个是decoder模块。这种同时包含encoder和decoder的结构与AutoEncoder网络相似,不同的是AutoEncoder模型是将输入通过encoder的网络生成中间的结果,并通过decoder对中间的结果还原,AutoEncoder的模型结构如下图所示:
felixzhao
2022/05/12
6800
文本生成seq2seq框架
扔掉代码表!用RNN“破解”摩斯电码
作者:Sandeep Bhupatiraju 剧透警告:摩斯电码并不需要破解。它很有用,因为消息可以使用这些代码以最少的设备发送,并且我说它不需要破解,因为代码是众所周知的,点和破折号的组合并不是什么秘密。但是,从理论上讲,它是一种替代密码(substitution cipher), ‍每个字母(和每个数字)的每个字母都有一些使用点和破折号的表示形式,如下所示。 ‍ 让我们暂停我们的怀疑,并假设我们收到摩尔斯电码的消息,但我们不知道如何阅读它们。假设我们还有一些代码的例子及其相应的单词列表。现在,
刀刀老高
2018/04/10
1.8K0
扔掉代码表!用RNN“破解”摩斯电码
前沿 | CNN取代RNN?当序列建模不再需要循环网络
在这篇博文中,我们来探讨循环网络模型和前馈模型之间的取舍。前馈模型可以提高训练稳定性和速度,而循环模型表达能力更胜一筹。有趣的是,额外的表现力似乎并没有提高循环模型的性能。
机器之心
2018/08/07
9430
前沿 | CNN取代RNN?当序列建模不再需要循环网络
吴恩达course5-序列模型学习笔记
「日常感谢 Andrew Ng 的视频 ! 部分截图来自 udacity 深度学习课程」
caoqi95
2019/03/27
8150
吴恩达course5-序列模型学习笔记
干货 | 元旦,一起NLP!(下)
0.Roadmap 1. 模型 | 语言模型与词嵌入 2. 模型 | LSTM 3. 盘点 | 那些顶级会议 4. 模型 | Seq2Seq 和 Attention机制 看上去和CV存在不小的差别。以我粗浅地理解,主要原因有以下两点: 1)对输入的处理不同。 我们知道,计算机不认识一个单词,不懂得它的意思,也不知道它和哪些词意思相关联,和另外哪些词经常一起出现。 所以,对于自然语言的处理需要首先将词语表示为向量的形式(Word2Vec, GloVe等),再把一个个词向量拼接为句子(Recursive & R
AI科技评论
2018/03/14
7490
干货 | 元旦,一起NLP!(下)
深度 | 从各种注意力机制窥探深度学习在NLP中的神威
作者 Antoine Tixier 表示整篇综述笔记也是他学习过程的一部分,所以这一文章还会在 arXiv 上继续更新。为了完成整篇文章,作者主要借鉴了各种卷积神经网络的原论文、斯坦福 CS231n 课程笔记、 Zhang 和 Wallace 关于在 NLP 中运用 CNN 的实战指南、基于 CNN 的文本分类论文等,这些构建了该综述文章卷积神经网络部分的主体内容。
机器之心
2018/10/22
4170
深度 | 从各种注意力机制窥探深度学习在NLP中的神威
NLP教程(6) - 神经机器翻译、seq2seq与注意力机制
教程地址:http://www.showmeai.tech/tutorials/36
ShowMeAI
2022/05/10
5800
NLP教程(6) - 神经机器翻译、seq2seq与注意力机制
【深度学习系列】漫谈RNN之序列建模(机器翻译篇)
推送第四日,量化投资与机器学习公众号将为大家带来一个系列的 Deep Learning 原创研究。本次深度学习系列的撰稿人为 张泽旺 ,DM-Master,目前在研究自动语音识别系统。希望大家有所收获,共同进步! 漫谈RNN之序列建模(机器翻译篇) 1.原理概述 序列学习其实是深度学习中的一个应用非常广泛的概念,例如语音识别、语言建模、机器翻译、机器作曲、机器写稿、自动对话、QA系统等都属于序列学习的领域,今天讲讲解如何运用序列建模的思想来构建一个端对端的机器翻译系统。 序列建模,顾名思义,处理的
量化投资与机器学习微信公众号
2018/01/29
1.3K0
【深度学习系列】漫谈RNN之序列建模(机器翻译篇)
Seq2Seq、SeqGAN、Transformer…你都掌握了吗?一文总结文本生成必备经典模型(一)
 机器之心专栏 本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。 本文将分 2 期进行连载,共介绍 10 个在文本生成任务上曾取得 SOTA 的经典模型。 第 1 期:Seq2Seq(RNN)、Seq2Seq(LSTM)、Seq2Seq+
机器之心
2023/03/29
1.1K0
Seq2Seq、SeqGAN、Transformer…你都掌握了吗?一文总结文本生成必备经典模型(一)
seq2seq与Attention机制
seq2seq模型是在2014年,是由Google Brain团队和Yoshua Bengio 两个团队各自独立的提出来。
Lansonli
2021/10/09
9770
NNLM、RNNLM、LSTM-RNNLM、Bi-lstm、GPT-1…你都掌握了吗?一文总结语音识别必备经典模型(一)
 机器之心专栏 本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。 本文将分 3 期进行连载,共介绍 17 个在语音识别任务上曾取得 SOTA 的经典模型。 第 1 期:NNLM、RNNLM、LSTM-RNNLM、Bi-lstm、Bi-RN
机器之心
2023/03/29
7040
NNLM、RNNLM、LSTM-RNNLM、Bi-lstm、GPT-1…你都掌握了吗?一文总结语音识别必备经典模型(一)
WAVENET论文阅读
谷歌DeepMind2016年的深度生成模型 WaveNet 将机器语音合成的表现与人类之间水平的差距至少缩减了 50%
mathor
2020/08/10
1.2K0
谷歌开放GNMT教程:如何使用TensorFlow构建自己的神经机器翻译系统
选自谷歌 机器之心编译 参与:机器之心编辑部 近日,谷歌官方在 Github 开放了一份神经机器翻译教程,该教程从基本概念实现开始,首先搭建了一个简单的NMT模型,随后更进一步引进注意力机制和多层 LSTM 加强系统的性能,最后谷歌根据 GNMT 提供了更进一步改进的技巧和细节,这些技巧能令该NMT系统达到极其高的精度。机器之心对该教程进行简要的描述,跟详细和精确的内容请查看项目原网站。 GitHub 链接:https://github.com/tensorflow/nmt 机器翻译,即跨语言间的自动翻译,
机器之心
2018/05/09
1.8K0
谷歌开放GNMT教程:如何使用TensorFlow构建自己的神经机器翻译系统
推荐阅读
相关推荐
这7种NLP黑科技让你更好交流!来看一看是什么(Part1)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档