本文是机器学习大牛Jason Brownlee系统介绍RNN的文章,他在文中详细对比了LSTM、GRU与NTM三大主流架构在深度学习上的工做原理及各自特性。读过本文,你就能轻松GET循环神经网络在语音识别、天然语言处理与机器翻译等当前技术挑战上脱颖而出的种种缘由。html
循环神经网络(RNN)是一种人造神经网络,它经过赋予网络图附加权重来建立循环机制,以维持内部的状态。算法
神经网络拥有“状态”之后,便能在序列预测中明确地学习并利用上下文信息,如顺序或时间成分。数据库
本文将一次性带你了解RNN在深度学习中的各类应用。网络
读完以后,你应该能弄懂:架构
最早进的RNN是如何进行深度学习任务的,如LSTM(长短时记忆网络)、GRU(门控循环单元)与NTM(神经图灵机)?机器学习
最早进的RNN同人工神经网络中更普遍的递归研究间的具体关系如何?分布式
为何RNN能在一系列有挑战的问题上表现如此出色?函数
咱们不可能面面俱到,把全部的循环神经网络细节都讲一遍。于是,咱们要把重点放在用于深度学习的循环神经网络上(LSTM,GRU和NTM),以及理解它们相关的必要背景知识。学习
让咱们进入正题。测试
循环神经网络算法深度学习之旅 Photo by Santiago Medem,权利保留。
接下来,咱们会仔细研究LSTM,GRU和NTM在深度学习中的应用。
最后,咱们还要了解一些同RNN用于深度学习相关的高级话题。
循环神经网络
彻底递归网络
结构递归神经网络
神经历史压缩机
长短时间记忆网络(LSTM)
门控循环单元神经网络
神经图灵机
首先来了解一下RNN的研究背景。
广泛的见解是,循环在拓扑上赋予网络以记忆的特性。
但还有一种理解RNN的更好角度:将其看做训练集包含了当前训练样本的一组输入样本。这就比较合乎“常规”了,好比一个传统的多层感知机。
X(i)->y(i)
但将上一组样本中的一组补充到训练样本中,则是“很是规”的。好比循环神经网络。
[X(i-1),X(i)]->y(i)
这个网络保留了多层感知器的层状拓扑结构,可是网络中的每一个神经元与其余神经元进行加权链接,而且有一个与其自身的反馈链接。
更多信息请参考:Bill Wilson的Tensor Product Networks(1991)http://www.cse.unsw.edu.au/~billw/cs9444/tensor-stuff/tensor-intro-04.html
结构递归神经网络是递归网络的线性架构变体。结构递归能够促进分级特征空间中的分枝,而且使得网络架构能够模仿这个进行训练。
这在R. Socher等人,Paralsing Natural Scenes and Natural Language with Recursive Neural Networks,2011中有详细描述。
http://machinelearning.wustl.edu/mlpapers/paper_files/ICML2011Socher_125.pdf
1991年,Schmidhuber首次发表了这个很是深度的学习机,经过无监督RNNs层次结构的预训练,可以实现数百个神经层的信用分配(即表现好的组件分配权重就大一些,有利于实现目标)。
参见J.Schmidhuber等人,Deep Learning in Neural Networks:An Overview,2014。http://www2.econ.iastate.edu/tesfatsi/DeepLearningInNeuralNetworksOverview.JSchmidhuber2015.pdf
尽管听起来不太可能,但由于偏差会经过较大拓扑向后传播,增长非线性导数极值的计算量,使信用分配困难,因此反向传播仍可能失败。
在传统的时间反向传播(BPTT)或实时循环学习(RTTL)算法中,偏差信号随着时间流逝每每会爆炸或消失。
LSTM是一种基于梯度学习算法训练而来的新型循环网络架构。
LSTM旨在克服偏差回流问题。它能够学习跨越超过1000步的时间间隔。
在有噪声、不可压缩的输入序列状况下,该网络确实不会损失短程(lag)能力。
偏差的回流问题是经过一种高效的、基于梯度的算法来克服的,这种算法网络结构经过特殊神经元的内部状态让偏差流变为常数(从而不会爆炸或消失)。
这些神经元会减小“输入权重冲突”和“输出权重冲突”的影响。
这些信号会尝试让权重参与存储输入并保护输入。 这种冲突使得学习难度加大,而且须要一个对上下文更加敏感的机制来经过输入权重来控制“写入操做”。
这些信号将尝试使输出权重参与访问存储在处理单元中的信息,而且在不一样时间保护随后的神经元免受前馈神经元的输出的干扰。
具备8个输入单元,4个输出单元和2个大小为2的存储单元块的LSTM网络示例.in1标记输入门,out1标记输出门,cell1 = block1标记块1的第一个存储单元。(摘自Long Short-Term Memory,1997年)
见S.Hochreiter和J.Schmidhuber,Long-Short Term Memory,1997。
http://dl.acm.org/citation.cfm?id=1246450
LSTM循环神经网络最有趣的应用是语言处理工做。更全面的描述请参阅Gers的论文:
F. Gers and J. Schmidhuber, LSTM Recurrent Networks Learn Simple Context Free and Context Sensitive Languages, 2001.
ftp://ftp.idsia.ch/pub/juergen/L-IEEE.pdf
F. Gers, Long Short-Term Memory in Recurrent Neural Networks, Ph.D. Thesis, 2001. http://www.felixgers.de/papers/phd.pdf
LSTM的高效截断版本并不能很轻松的解决“强延迟异或”类的问题。
LSTM的每一个存储单元块须要一个输入门和一个输出门,而这在其余的循环方法中并非必需的。
常数偏差流经过存储单元内部的“Constant Error Carrousels”,可以跟传统的前馈架构同样,产生与整个输入串相同的效果。
LSTM与其余前馈方法同样,在“regency”的概念上有缺陷。 若是须要精密时间步长计数,可能还须要额外的计数机制。
内存单元中反向传播的常数偏差,赋予该架构桥接长时滞的算法的能力。
LSTM可近似于噪声问题域、分布式表示和连续值。
LSTM概述了要考虑的问题域。这一点很重要,由于一些任务对于已经创建的循环网络来讲很棘手。
在问题域上不须要微调网络参数。
在每一个权重和时间步长更新的复杂性方面,LSTM基本上等同于BPTT。
LSTM在机器翻译等领域取得了当前最早进的结果,显示出强大的能力。
与LSTM同样,门控循环神经网络已成功应用在了顺序和时间数据的处理上,尤为是在语音识别、天然语言处理和机器翻译等长序列问题领域,它都表现得十分良好。
门自身被赋予了权重,而且在整个学习阶段根据算法选择性地更新。
门网络以增长的复杂性的形式引入增长的计算花销,所以须要进行参数化。
LSTM RNN架构使用简单RNN的计算做为内部存储器单元(状态)的中间候选。 门控循环单元(GRU)RNN将LSTM RNN模型中的门控信号减小到两个。这两个门分别称为更新门和复位门。
GRU(和LSTM)RNN中的选通机制与RNN的参数化类似。 使用BPTT随机梯度降低来最小化损失函数,以更新对应于这些门的权重。
每一个参数更新都将涉及与整个网络的状态有关的信息。 这可能会产生不利影响。
该网络在门控的概念上进行了进一步的探索,并扩展了三种新的变量门控机制。
已经考虑的三个门控变量分别是:
GRU1,其中每一个门仅使用先前的隐藏状态和误差来计算;
GRU2,其中每一个门仅使用先前的隐藏状态计算;
GRU3,其中每一个门仅使用偏置来计算。
结果从MNIST数据集生成了两个序列长度,从IMDB数据集生成了一个。
门的主要驱动信号彷佛是(循环)”状态”,由于”状态”包含了和其余信号有关的基本信息。
更多相关信息,请参阅:
R. Dey and F. M. Salem, Gate-Variants of Gated Recurrent Unit (GRU) Neural Networks, 2017. https://arxiv.org/ftp/arxiv/papers/1701/1701.05923.pdf
J. Chung, et al., Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling, 2014.
https://pdfs.semanticscholar.org/2d9e/3f53fcdb548b0b3c4d4efb197f164fe0c381.pdf
神经图灵机经过将神经网络耦合到外部存储器资源来扩展神经网络的能力,它们能够经过attention 的过程进行交互。所谓的NTM,其实就是使用NN来实现图灵机计算模型中的读写操做。其模型中的组件与图灵机相同。
初步结果代表,神经图灵机能够从输入和输出示例中推导出简单的算法,如复制、排序和联想性回忆。
RNN对长时间数据学习和进行数据转换的能力让他们从其余机器学习方法中脱颖而出。此外,由于RNN已经被证实是图灵完备的,所以只需适当地布线就能模拟任意程序。
扩展标准RNN的能力能够简化算法任务的解决方案。 所以,这种扩展主要是经过一个庞大的可寻址记忆,经过类比图灵经过无限的存储磁带来扩展有限状态机,并被称为“神经图灵机”(NTM)。
A. Graves, et al., Neural Turing Machines, 2014. - https://arxiv.org/pdf/1410.5401.pdf
R. Greve, et al., Evolving Neural Turing Machines for Reward-based Learning, 2016. - http://sebastianrisi.com/wp-content/uploads/greve_gecco16.pdf
读完本文,你应该已经理解了循环神经网络在深度学习上的用法,具体来讲有如下几点:
LSTM、GRU与NTM这些最早进的循环神经网络,是如何进行深度学习任务的
这些循环神经网络同人工神经网络中更普遍的递归研究间的具体关系是怎样的
RNN能在一系列有挑战的问题上表现如此出色的缘由在哪里
原文连接
http://machinelearningmastery.com/recurrent-neural-network-algorithms-for-deep-learning/