RNN_递归神经网络

1 篇文章 1 订阅

递归神经网络

目录

1 理解递归神经网络

1.1 什么是递归神经网络

1.2 关于前馈神经网络

1.2.1 结构模型

1.2.2 与RNN区别

1.3 RNN模型

2 基于时间的反向传播

2.1 为什么RNN不能直接使用反向传播

2.2 基于时间的反向传播:训练RNN

2.3 梯度消失和梯度爆炸

3 RNN的应用及RNN-CF

3.1 RNN的应用

3.2 RNN-CF


1 理解递归神经网络

1.1 什么是递归神经网络

递归神经网络(RNN)是一个特殊的神经网络系列,旨在处理序列数据,例如一系列的文本或者股票市场的波动。现实问题中存在着很多序列型的数据,例如文本、语音以及视频等。这些序列型的数据往往都是具有时序上的关联性的,既某一时刻网络的输出除了与当前时刻的输入相关之外,还与之前某一时刻或某几个时刻的输出相关。递归神经网络具有一定的记忆功能,这种网络与序列和列表密切相关,可以被用来解决很多问题,例如:语音识别、语言模型、机器翻译等。递归神经网络与前馈神经网络比较,后者并不能处理好这种关联性,因为它没有记忆能力,所以前面时刻的输出不能传递到后面的时刻。

综述,递归神经网络的本质是一个用于处理和预测序列数据的神经网络模型,神经元在前面某一时刻的输出可以作为输入来帮助获得当前时刻的输出,这一点与传统的前馈神经网络不同。

1.2 关于前馈神经网络

1.2.1 结构模型

前馈神经网络:每层神经元与下层神经元相互连接,神经元之间不存在同层连接,也不存在跨层连接。

                   图1.1 前馈神经网络结构示意图

1.2.2 与RNN区别

前馈神经网络在时间t上的预测输出仅取决于当前的输入。也就是说,当前预测输出的结果与时间t之前的任何输入都无关系。可以举一个例子:

Yang is learning how to ___.

如果使用前馈神经网络,并且一次处理一个单词,则只会输入to,不足以理解这个短句。

此外,RNN在解决时间任务方面更强大。此外,RNN可以表现出许多不同的形式:一对一(文本生成)、多对一(顺序图像分类)、一对多(图像描述)和多对多(机器翻译)。

1.3 RNN模型

递归神经网络,带有一个指向自身的环,用来表示它可以传递当前时刻处理的信息给下一时刻使用,如下图所示,一条链状神经网络代表了一个递归神经网络,可以认为它是对相同神经网络的多重复制,每一时刻的神经网络会传递信息给下一时刻。

                   图1.2 RNN结构示意图

其中Xt为网络层的输入,A表示模型处理部分,ht为输出,A的细节实现如下图所示:

                   图1.3 模型处理示意图

假设输入和输出是序列数据,设计了一个可以表示输入和输出序列的计算图。该计算图形产生了一系列函数副本,我们将其应用于序列中的每个个体输入输出元组。然后,通过将该模型应用到序列中的任何给定的单个时间步长t,我们能够得到RNN的基本计算图。我们讨论了计算隐藏状态和输出的准确数学方程和更新规则。

2 基于时间的反向传播

2.1 为什么RNN不能直接使用反向传播

                   图 2.1 RNN的计算

由图2.1,我们可以发现RNN的计算过程中有一个额外的循环权重w3,当我们应用链式法则时:

其中h是递归的,最终会得到无穷多的导数项。若要解决这一问题,可以将输入序列随时间展开,为每个输入Xt创建RNN副本,并分别计算每个副本的导数,并通过计算梯度的总和将他们回滚,以计算需要更新的权重大小。

2.2 基于时间的反向传播:训练RNN

根据损失函数利用SGD来求解最优参数,在CNN中使用反向传播BP算法来求解最优参数,但在RNN就要用到BPTT,它和BP算法的本质区别,也是CNN和RNN的本质区别:CNN没有记忆功能,它的输出仅依赖与输入,但RNN有记忆功能,它的输出不仅依赖与当前输入,还依赖与当前的记忆。这个记忆是序列到序列的,也就是当前时刻收到上一时刻的影响,例如开头提到的股市变化。

2.3 梯度消失和梯度爆炸

我们看到,当只有4个时间步时,我们有一项w3。因此,在第n个时间步,它将变w3的n-1次方。如果我们初始化w3为非常小的值(比如0.00001),那么在n=100时间步长,梯度将是无穷小,这被称为梯度消失。

另一方面,假设我们将w3初始化为非常大的值(比如说1000.00),那么,在n=100时间步长,梯度将是巨大的,这称为梯度爆炸。

问题的损失面的复杂性也可能导致发生梯度爆炸。由于输人的维数以及模型中存在的大量参数(权重),复杂的非凸损失面在深度神经网络中非常常见。图2.5显示了RNN的损失面,突出显示了非常高的曲率形成了墙。如图中的实线所示,如果优化方法碰到这样的墙,那么梯度将爆炸或过冲。这可能导致损失最小化很差或数值不稳定性,或两者兼而有之。在这种情况下,避免梯度爆炸的简单解决方案是在梯度大于某个阈值时,将梯度剪裁为合理小的值。

                   图2.2 梯度爆炸现象

3 RNN的应用及RNN-CF

3.1 RNN的应用

介绍四种主要类型的RNN:

  1. 一对一架构用于诸如文本生成、场景分类和视频帧标记之类的任务。

  2. 多对一体系架构用于情感分析,它可以逐单词处理句子/短语。

  3. 一对多架构在生成图像标题任务中很常见,其中,我们将单个图像映射到描述图像的任意长句子的短句。

  4. 利用多对多体系架构可以执行机器翻译任务。

                   图3.1 主要类型描述

 

3.2 RNN-CF

对于梯度爆炸而言,我们可以通过梯度剪裁的技巧来防止梯度爆炸,从而使训练更稳定。但对于解决梯度消失的问题,我们需要改变RNN本身的结构,让它能帮助递归神经网络更长时间地记忆序列数据中的模式。这样一个能获取更长期记忆的RNN变体,称为RNN-CF。

RNN-CF具有两个不同的层:隐藏层(即简单RNN中的传统隐藏层)和上下文层(用于保持长期记忆)。

                   图3.2 比较RNN和RNN-CF

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
求线性规划问题的递归神经网络模型可以采用递归神经网络(Recursive Neural Network, RNN)来建模。以下是一种基本的方法: 1. 定义问题:首先,需要明确线性规划问题的目标函数和约束条件。确保问题的可行性和合理性。 2. 数据准备:准备用于训练神经网络的数据。这些数据应该包含输入变量和对应的目标值(或者是线性规划问题的解)。 3. 构建递归神经网络模型:递归神经网络是一种能够处理树形结构数据的神经网络。可以通过定义合适的递归神经网络结构和参数设置来建模线性规划问题。 4. 定义递归神经网络递归操作:在线性规划问题中,常常需要对变量进行递归操作,例如对变量进行累加、累乘等操作。递归神经网络可以通过定义适当的递归操作来处理这些变量。 5. 神经网络训练:使用准备好的数据对递归神经网络进行训练。通过迭代算法(如梯度下降法)调整神经网络的权重和偏置,使得神经网络能够逼近目标函数和约束条件。 6. 求解线性规划问题:将训练好的递归神经网络用于求解线性规划问题。通过输入问题的特定数据,通过递归神经网络模型获取线性规划问题的解。 需要注意的是,递归神经网络模型求解线性规划问题的有效性和可行性取决于问题的特性和数据的准备。在实际应用中,可能需要进行多次实验和调整,以得到满意的结果。同时,选择合适的递归神经网络结构和训练参数也是至关重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值