最后更新时间:
递归神经网络或RNN是一种人工神经网络,它为网络增加了其他权重,以在网络图中创建循环,以维护内部状态。
向神经网络添加状态的承诺是,它们将能够在序列预测问题(例如具有顺序或时间分量的问题)中显式学习和利用上下文。
在本文中,您将浏览用于深度学习的递归神经网络。
阅读这篇文章后,您将知道:
- 顶级递归神经网络如何用于深度学习,例如LSTM,GRU和NTM。
- 顶级RNN如何与人工神经网络中更广泛的递归研究相关联。
- RNN的研究如何在一系列挑战性问题上带来了最先进的表现。
在我的新书中找到了如何开发LSTM(例如堆叠式,双向,CNN-LSTM,Encoder-Decoder seq2seq等)以及更多内容,其中包括14个分步教程和完整代码。
注意,我们不会覆盖所有可能的递归神经网络。相反,我们将专注于用于深度学习的递归神经网络(LSTM,GRU和NTM)以及理解它们所需的上下文。
让我们开始吧。
Santiago Medem的深度学习
照片循环神经网络算法之旅,保留部分权利。
总览
我们将从为循环神经网络领域设置场景开始。
接下来,我们将仔细研究用于深度学习的LSTM,GRU和NTM。
然后,我们将花一些时间在与使用RNN进行深度学习有关的高级主题上。
- 递归神经网络
- 完全循环网络
- 递归神经网络
- 神经历史压缩器
- 长短期记忆网络
- 门控递归单元神经网络
- 神经图灵机
递归神经网络
让我们设置场景。
普遍认为,递归会给网络拓扑带来记忆。
考虑这一点的更好方法是,训练集包含带有当前训练示例的一组输入的示例。这是“常规的,例如传统的多层感知器。
但是,该训练示例由之前示例的一组输入补充。这是“非常规的”,例如递归神经网络。
与所有前馈网络范例一样,问题在于如何将输入层连接到输出层,包括反馈激活,然后训练构造以收敛。
现在,从非常简单的概念开始,浏览不同类型的递归神经网络。
完全循环网络
多层感知器的分层拓扑得以保留,但是每个元素与体系结构中的每个其他元素具有加权连接,并且与自身之间具有单个反馈连接。
并非所有连接都经过训练,并且误差导数的极端非线性意味着常规的反向传播将不起作用,因此采用了“ 随时间反向传播”方法或“随机梯度下降”方法。
另请参见Bill Wilson的Tensor产品网络(1991)。
递归神经网络
递归神经网络是递归网络的线性体系结构变体。
递归促进了分层特征空间中的分支,并且随着训练的进行,最终的网络体系结构对此进行了模仿。
通过次梯度方法使用梯度下降来实现训练。
这在R.Socher等人的《使用递归神经网络解析自然场景和自然语言》(2011年)中有详细描述。
神经历史压缩器
Schmidhuber于1991年首次报告了一个非常深入的学习者,他能够通过对RNN的层次结构进行无监督的预训练来对数百个神经层执行学分分配。
每个RNN都经过无监督训练,以预测下一个输入。然后,仅将产生错误的输入前馈,将新信息传递到层次结构中的下一个RNN,然后在较慢的自组织时间范围内进行处理。
结果表明,没有信息丢失,只是被压缩。RNN堆栈是数据的“深度生成模型”。可以从压缩形式重建数据。
参见J.Schmidhuber等人,《神经网络中的深度学习:概述》,2014年。
反向传播失败,因为非线性导数的极值计算随着误差通过大型拓扑向后传播而增加,这使信用分配变得困难,即使不是不可能。
需要有关LSTM的序列预测帮助吗?
参加我的7天免费电子邮件课程,并发现6种不同的LSTM架构(带有代码)。
单击以注册,并获得该课程的免费PDF电子书版本。
长短期记忆网络
使用常规的反向时间传播(BPTT)或实时循环学习(RTTL),在时间上向后流动的错误信号往往会爆炸或消失。
反向传播误差的时间演变与权重的大小成指数关系。重量爆炸可能会导致重量摆动,而重量消失会导致学习弥合长时间的滞后并花费大量的时间,或者根本不起作用。
- LSTM是一种新颖的递归网络体系结构训练,带有适当的基于梯度的学习算法。
- LSTM旨在克服错误回流问题。它可以学习桥接超过1000个步骤的时间间隔。
- 在存在嘈杂,不可压缩的输入序列的情况下,这是正确的,而不会损失短时滞功能。
错误回流问题可以通过一种有效的,基于梯度的算法来克服,该算法对通过特殊单元内部状态进行恒定(因此既不爆炸也不消失)的错误流进行强制架构。这些单位减少了“输入权重冲突”和“输出权重冲突”的影响。
输入权重冲突:如果输入非零,则必须使用相同的输入权重来存储某些输入和忽略其他输入,然后通常会收到冲突的权重更新信号。
这些信号将试图使砝码参与存储输入和保护输入。这种冲突使学习变得困难,并需要通过输入权重来控制“写操作”的上下文相关机制。
输出权重冲突:只要单元的输出不为零,该单元的输出连接上的权重将吸引在序列处理过程中产生的相互冲突的权重更新信号。
这些信号将试图使输出的权重参与访问存储在处理单元中的信息,并在不同的时间保护后续的单元不受前馈单元的输出干扰。
这些冲突不是长期滞后所特有的,并且同样会影响短期滞后。但是值得注意的是,随着时滞的增加,必须保护存储的信息不受干扰,尤其是在学习的高级阶段。
网络体系结构:不同类型的单元可能传达有关网络当前状态的有用信息。例如,输入门(输出门)可以使用来自其他存储单元的输入来决定是否在其存储单元中存储(访问)某些信息。
存储单元包含门。门特定于它们所中介的连接。输入门可消除输入重量冲突,而输出门可消除输出重量冲突。
门:专门为减轻输入和输出重量的冲突和干扰,引入了乘法输入门单元以保护存储的内容不受无关输入的干扰,乘法输出门单元通过当前不相关的存储器内容保护其他单元免受干扰。
一个LSTM网具有8个输入单元,4个输出单元,以及大小的2个存储单元块的实施例2 IN1马克输入门,OUT1马克输出门,和小区1 = BLOCK1标记块1的第一存储单元
来自长短期记忆,1997年。
与多层Perceptron相比,LSTM中的连接复杂,这是因为处理元件的多样性以及包含反馈连接的原因。
存储器单元块:共享相同输入门和相同输出门的存储器单元形成称为“存储器单元块”的结构。
存储单元块有助于信息存储;与传统的神经网络一样,在单个单元格内对分布式输入进行编码并不是那么容易。大小为1的存储单元块只是一个简单的存储单元。
学习:实时递归学习(RTRL)的一种变体,它考虑到输入和输出门所引起的变化的,乘性的动力学,用于确保通过存储单元内部状态传播的非衰减错误返回到“存储单元网络”的错误。输入”不会及时传播回来。
猜测:这种随机方法的性能优于许多术语滞后算法。已经确定,通过简单的随机权重猜测比通过提出的算法可以更快地解决以前工作中使用的许多长时间滞后任务。
参见S.Hochreiter和J.Schmidhuber,《长期记忆》,1997年。
LSTM递归神经网络最有趣的应用是语言处理方面的工作。有关详细说明,请参见Gers的工作。
- F. Gers和J. Schmidhuber,LSTM递归网络学习简单上下文无关和上下文敏感语言,2001年。
- F. Gers,循环神经网络中的长短期记忆,博士。论文,2001年。
LSTM局限性
高效,截短的LSTM版本无法轻松解决类似于“严重延迟的XOR”的问题。
每个存储单元块都需要一个输入门和一个输出门。在其他重复性方法中没有必要。
流经存储单元内部“恒定错误轮播”的恒定错误流产生的效果与一次对整个输入字符串同时显示的常规前馈体系结构具有相同的效果。
LSTM与其他前馈方法一样,在“摄政”概念方面也存在缺陷。如果需要精确的计数时间步长,则可能需要其他计数机制。
LSTM的优势
该算法能够弥合长时间滞后的能力是架构内存单元中恒定错误反向传播的结果。
LSTM可以近似嘈杂的问题域,分布式表示形式和连续值。
LSTM对所考虑的问题领域进行了很好的概括。鉴于某些任务对于已经建立的循环网络来说是棘手的,因此这一点很重要。
在问题域上微调网络参数似乎是不必要的。
就每权重和时间步长的更新复杂性而言,LSTM本质上等效于BPTT。
LSTM显示出强大的功能,可以在机器翻译等领域获得最新的结果。
门控递归单元神经网络
门控递归神经网络已成功应用于顺序或时间数据。
最适合语音识别,自然语言处理和机器翻译,以及LSTM,它们在长序列问题域中表现良好。
在LSTM主题中考虑了门控,该门控涉及一个门控网络,该网络生成信号来控制当前输入和先前的存储器如何工作以更新当前激活,从而更新当前网络状态。
在整个学习阶段,门本身都经过加权,并根据算法有选择地进行更新。
门网络以增加的复杂性的形式增加了计算量,因此增加了参数化。
LSTM RNN体系结构使用简单RNN的计算作为内部存储单元(状态)的中间候选对象。门控循环单元(GRU)RNN将门控信号从LSTM RNN模型减少到两个。这两个门称为更新门和复位门。
就参数化而言,GRU(和LSTM)RNN中的门控机制是简单RNN的复制品。还使用BPTT随机梯度下降法更新与这些门对应的权重,因为它试图使成本函数最小化。
每个参数更新将涉及与整个网络状态有关的信息。这可能会有不利影响。
门的概念将进一步探讨,并通过三种新的变型门机制进行扩展。
已考虑的三个门控变量是:GRU1,其中仅使用先前的隐藏状态和偏置来计算每个门;GRU2,其中每个门仅使用先前的隐藏状态进行计算;和GRU3,其中每个门仅使用偏置来计算。观察到参数显着降低,其中GRU3产生的参数最少。
使用来自MNIST手写数字数据库和IMDB电影评论数据集的数据对这三个变体和GRU RNN进行了基准测试。
从MNIST数据集生成了两个序列长度,从IMDB数据集生成了一个序列长度。
门的主要驱动信号似乎是(循环)状态,因为它包含有关其他信号的基本信息。
随机梯度下降的使用隐式地携带有关网络状态的信息。这可以解释在栅极信号中单独使用偏置的相对成功,因为其自适应更新会携带有关网络状态的信息。
门控变体探索对拓扑进行有限评估的门控机制。
有关更多信息,请参见:
- R.Dey和FM Salem,门控循环单元(GRU)神经网络的门变量,2017年。
- J.Chung等人,《基于序列建模的门控递归神经网络的经验评估》,2014年。
神经图灵机
神经图灵机通过将神经网络耦合到外部存储资源来扩展神经网络的功能,它们可以通过注意力过程进行交互。
组合系统类似于图灵机或冯·诺依曼体系结构,但是端到端是可区分的,因此可以通过梯度下降有效地进行训练。
初步结果表明,神经图灵机可以从输入和输出示例中推断出简单的算法,例如复制,排序和关联召回。
RNN在长时间内学习和执行复杂的数据转换的能力使其从其他机器学习方法中脱颖而出。此外,众所周知,RNN具有图灵完备性,因此,如果接线正确,它们具有模拟任意过程的能力。
扩展了标准RNN的功能,以简化算法任务的解决方案。这种扩充主要是通过一个大的,可寻址的存储器完成的,因此类似于图灵通过无限的存储磁带对有限状态机的扩充,因此被称为“神经图灵机”(NTM)。
与图灵机不同,NTM是可微分的计算机,可以通过梯度下降进行训练,从而为学习程序提供了一种实用的机制。
NTM体系结构如上所示。在每个更新周期中,控制器网络从外部环境接收输入,并作为响应发出输出。它还通过一组并行的读写头从存储矩阵读取和写入。虚线表示NTM电路与外界之间的划分。
取自神经图灵机,2014年。
至关重要的是,架构的每个组件都是不同的,因此可以轻松进行梯度下降训练。这是通过定义“模糊”读写操作来实现的,该读写操作或多或少地与内存中的所有元素进行交互(而不是像普通的图灵机或数字计算机那样对单个元素进行寻址)。
有关更多信息,请参见:
- A.Graves等人,《神经图灵机》,2014年。
- R.Greve等人,《基于奖励的学习的进化神经图灵机》,2016年。
NTM实验
复制任务测试NTM是否可以存储和调用很长的任意信息序列。为网络提供了随机二进制矢量的输入序列,后跟定界符标志。
网络经过训练可以复制八位随机向量的序列,其中序列长度在1到20之间随机化。目标序列只是输入序列的一个副本(没有定界符)。
重复复制任务通过要求网络将复制的序列输出指定的次数然后发出序列结束标记来扩展复制。主要动机是看NTM是否可以学习简单的嵌套函数。
网络接收随机二进制矢量的随机长度序列,后跟一个标量值,该值指示所需的副本数,该标量值出现在单独的输入通道上。
关联的召回任务涉及组织由“间接”产生的数据,即当一个数据项指向另一个数据项时。构造项目列表,以便对其中一个项目进行查询要求网络返回后续项目。
定义了由分隔符号在左右两侧界定的二进制向量序列。在将几个项目传播到网络后,通过显示随机项目并查看网络是否可以产生下一个项目来查询网络。
动态N-Grams任务测试NTM是否可以通过使用内存作为可重写表来快速适应新的预测分布,该表可用于保留过渡统计信息的数量,从而模拟传统的N-Gram模型。
考虑二进制序列上所有可能的6-Gram分布的集合。每个6-Gram分布都可以表示为32个数字的表,指定给定所有可能的长度为5个二进制历史记录的情况下下一位为1的概率。通过使用当前查找表绘制200个连续的位,可以生成特定的训练序列。网络一次只观察一位,然后要求预测下一位。
优先排序任务测试NTM的排序能力。一系列随机二进制向量与每个向量的标量优先级一起输入网络。优先级从[-1,1]范围中均匀分配。目标序列包含根据其优先级排序的二进制向量。
NTM具有对LSTM的前馈体系结构作为其组件之一。
摘要
在本文中,您发现了用于深度学习的递归神经网络。
具体来说,您了解到:
- 顶级递归神经网络如何用于深度学习,例如LSTM,GRU和NTM。
- 顶级RNN如何与人工神经网络中更广泛的递归研究相关联。
- RNN的研究如何在一系列挑战性问题上带来最先进的表现。
这是一个重要的职位。
您对用于深度学习的RNN有任何疑问吗?
在下面的评论中提出您的问题,我会尽力回答。
杰森(Jason),
您能推荐循环网络和lstm网络的硬件要求吗?
您认为lstm在约3000个数据点的时间序列上可以令人满意地执行吗?
最后但并非最不重要的一点,请写一篇博客文章,给出阅读lstm博客的顺序。有很多,很难决定从哪里开始。
适度的现代硬件。除非您拥有非常大的数据,否则GPU不会有太大帮助。在那种情况下,我建议在AWS上租用。
您是否考虑使用LSTM创建聊天机器人?
人有,我没有。
LSTM模型可以预测遵循泊松分布的随机序列吗?
通常,神经网络无法预测伪随机序列。
LSTM和RNN可以为伪造新闻检测提供一个简单的算法有多远?
没有什么是万无一失的。
我认为,有了足够的数据,就可以开发出一个好的模型。
嗨杰森,
我想知道您是否有实施LSTM来对大型机(IBM z / OS)数据集记录中的字节序列进行分类而在记录中没有定界符(类似于数据表中的行)的经验(或知道完成的任何工作)您不知道列的起点和终点,但是您知道行的起点和终点。如果没有,那么任何快速的想法/建议也将不胜感激!
感谢您的光临!
查尔斯
这是一个非常具体的案例,我还没有看到。
虽然听起来很简单。您必须将输入转换为整数序列,LSTM才能了解该问题。
就像我们在NLP问题中所做的那样,它类似于将单词映射为整数。
有帮助吗?
嗨杰森,
在这里我的问题是,如果可以的话,我们可以说LSTM和RNN是深度学习架构的类型吗?为什么在某些博客和论文中我读到了深度RNN有什么区别?很困惑
LSTM是RNN的一种。
如果LSTM或RNN具有许多层,则它很深。
嗨,Jason,
在基于nlp的应用程序中,以下哪个是首选网络?
CNN
LSTM
格吕
CNN LSTM
这实际上取决于特定的NLP任务。
我是一名博士生。我的同事和医生指出:“在使用nlp的情况下,尤其是在文本相似性方面,lstm的性能要优于Gru。”
你能告诉我你对这种说法的看法吗?
我会说这取决于特定的数据集。
您能告诉我何时可以使用lstm和何时可以使用gru吗?
lstm和gru有什么好处?
我认为,gru的唯一优势是它比lstm更快?
您可以使用LSTM或GRU,通常不能在同一模型中同时使用它们。
GRU更简单,更快。
Gru是否可以提供比lstm更高的性能和准确性?
取决于模型和特定的数据集。
如何更改keras中的超参数lstm存储单元?
您只能更改LSTM层中的单元或节点数。