当前位置:主页 > 开发 > 人工智能 >

带你深入剖析递归神经网络
栏目分类:人工智能   发布日期:2017-12-04   浏览次数:

递归神经网络(RNN)是一类神经网络,包括一层内的加权连接。因为 RNN 包含循环,所以它们可以在处理新输入的同时存储信息。这种记忆使它们非常适合处理必须考虑

带你深入剖析递归神经网络

递归神经网络(RNN)是一类神经网络,包括一层内的加权连接(与传统前馈网络相比,连接仅馈送到后续层)。因为 RNN 包含循环,所以它们可以在处理新输入的同时存储信息。这种记忆使它们非常适合处理必须考虑事先输入的任务(比如时序数据)。由于这个原因,目前的深度学习网络均以 RNN 为基础。本教程将探索 RNN 背后的思想,并从头实现一个 RNN 来执行序列数据预测。

神经网络是基于高度连接的处理元件(神经元)的网络将输入映射到输出的计算结构。要快速了解神经网络,请阅读我的另一篇教程“神经网络深入剖析”,其中分析了感知器(神经网络的构建块)以及具有反向传播学习能力的多层感知器。

在前面的教程中,我探讨了前馈网络拓扑结构。在此拓扑结构中(如下图所示),可以通过隐藏层将输入矢量馈送到网络中,并最终获得一个输出。在这个网络中,输入以确定性的方式映射到输出(每次输入被应用)

带你深入剖析递归神经网络

但是,我们假设您在处理时序数据。孤立的单一数据点并不是完全有用的,因为它缺乏重要的属性(例如,数据序列是否在发生变化?是增大?还是缩小?)。考虑一个自然语言处理应用程序,其中的字母或单词表示网络输入。当您考虑理解单词时,字母在上下文中很重要。孤立状态下的这些输入没有什么用,只有将它们放入之前发生的事件的上下文中才有用。

时间序列数据的应用需要一种可以考虑输入历史的新型拓扑结构。这时就可以应用 RNN。RNN 能够通过反馈来维护内部记忆,所以它支持时间行为。在下面的示例中,会将隐藏层输出应用回隐藏层。网络保持前馈方式(先将输入应用于隐藏层,然后再应用于输出层),但 RNN 通过上下文节点保持内部状态(这会影响后续输入上的隐藏层)。

带你深入剖析递归神经网络

RNN 不是一类网络,而是一个包含解决不同问题的拓扑结构的集合。递归网络的一个重要方面在于,借助足够的层和节点,它们是图灵完备的,这意味着它们可以实现任何可计算函数。

RNN 的架构

RNN 是在 20 世纪 80 年代引入的,它们保持对过去输入记忆的能力为神经网络开启了新的问题领域。让我们看看您可以使用的一些架构。

Hopfield

Hopfield 网络是一种联想记忆。给定一种输入模式,它将获取与该输入最相似的模式。这种联想(输入与输出之间的联系)类似于人脑的工作方式。给定一段记忆的一部分,人类能完全回想起该记忆,Hopfield 网络的工作原理与此类似。

Hopfield 网络实质上是二进制的,各个神经元要么打开(激活),要么关闭(未激活)。每个神经元都通过一个加权连接与其他每个神经元相连(参见下图)。每个神经元同时用作输入和输出。在初始化时,会在网络中载入一个部分模式,然后更新每个神经元,直到该网络收敛(它一定会收敛)。输出是在收敛(神经元的状态)时提供的。

带你深入剖析递归神经网络

Hopfield网络能够学习(通过Hebbian学习)多种模式,并且在输入中存在噪声的情况下收敛以回忆最接近的模式。Hopfield 网络不适合用来解决时域问题,而是经常性的。

简单递归网络

简单递归网络是一类流行的递归网络,其中包括将状态引入网络的状态层。。状态层影响下一阶段的输入,所以可应用于随时间变化的数据模式。

你可以用不同的方式应用状态,其中两种流行方法是 Elman 和 Jordan 网络(参见下图)。在 Elman 网络中,隐藏层对保留了过去输入记忆的上下文节点状态层进行馈送。如下图所示,存在一组上下文节点来保持之前的隐藏层结果的记忆。另一种流行的拓扑结构是 Jordan 网络。Jordan 网络有所不同,因为它们将输出层存储到状态层中,而不是保留隐藏层的历史记录。

带你深入剖析递归神经网络

Elman 和 Jordan 网络可通过标准的反向传播来训练,每种网络都已应用到序列识别和自然语言处理中。请注意,这里仅引入了一个状态层,但很容易看出,您可以添加更多状态层,在这些状态层中,状态层输出可充当后续状态层的输入。本教程将在 Elman 网络部分中探讨此概念。

其他网络

递归式网络的研究并没有停止,如今,递归架构正在设立处理时序数据的标准。深度学习中的长短期记忆 (LSTM) 方法已经在卷积网络中得到应用,以便通过生成的语言来描述图像和视频的内容。LSTM 包含一个遗忘门,让您能对各个神经元进行“训练”,使其了解哪些信息是重要的,以及这保持重要性信息的时间。LSTM 可以处理重要事件间隔时间较长的数据。

另一种最新的架构称为门控递归单元 (GRU)。GRU 是对 LSTM 的一种优化,需要的参数和资源更少。

RNN 训练算法

由于 RNN 具有将历史信息按时序或序列进行合并的性质,所以它们拥有独特的训练算法。梯度下降算法已成功应用到 RNN 权重优化上(通过与权重的误差导数呈一定比例地调节权重来最小化误差)。一种流行的技术是时间反向传播 (BPTT),它应用了权重更新,它通过累加序列中每个元素的累积误差的权重更新来应用权重更新,,最后更新权重。对于大型的输入序列,此行为可能导致权重消失或爆炸(称为消失或爆炸梯度问题)。要解决此问题,通常会使用混合方法,并结合使用 BPTT 与实时递归学习等其他算法。

其他训练方法也能成功应用于不断进化的 RNN。可应用进化算法(比如遗传算法或模拟退火法)来进化候选 RNN 群体,然后将它们重新组合为它们的适合度(即它们解决给定问题的能力)的函数。尽管不保证能收敛于一个解决方案,但可以成功地将收敛应用于一系列问题,包括 RNN 进化。

RNN 的一个有用的应用是预测序列。在下一个示例中,我将构建一个 RNN,用它根据一个小词汇表来预测某个单词的最后一个字母。我将单词馈送入 RNN 中,一次加载一个字母,网络的输出将表示预测的下一个字母。

遗传算法流

相关热词: 神经网络,递归神经网络,RNN

Copyright © 2002-2017 95cms.CN. 时代科技      
教程 资源 特效 模板 开发 数据库 网络 在线PS