RNN的原理与TensorFlow代码实现

本文介绍了循环神经网络(RNN)相对于前馈神经网络在处理时间序列预测问题上的优势,包括时序长短可变和顾及时间依赖的特点。通过数学公式阐述了RNN的工作原理,并探讨了梯度消失和梯度爆炸问题。此外,提到了RNN在TensorFlow中的实现和数据处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:Jason
时间:2017.10.22
RNN的引出
  在没有RNN(循环神经网络)的时候,我们通常使用前馈神经网络来处理时序预测问题。
一、用前馈神经网络处理时间序列预测有什么问题?
  依赖受限,网络规格固定:前馈网络是利用窗处理将不同时刻的向量并接成一个更大的向量。以此利用前后发生的事情预测当前所发生的情况。如下图所示:

这里写图片描述

  但其所能考虑到的前后依赖受限于将多少个向量(window size)并接在一起。所能考虑的依赖始终是固定长度的。想要更好的预测,需要让网络考虑更多的前后依赖。
例子
  比如在“我()”的后面预测一个字,可能出现很多种类似于“我们”、“我的”等等大概率下的可能性。进一步考虑“我想()”,则可选的范围会缩小,更进一步例如“我想骑自行()”则很有把握的给出预测为“车”。
  所以要想预测更为准确的话,我们能首先想到的办法就是扩大拼接的向量长度,但是考虑这样一种情况:假如每个向量的维度是30,经过长度为3移动窗口处理之后,输入input的维度变为30*3=90,输入层与隐藏层(n的神经元)的连接权重矩阵就会变成90*n,其中很多权重是冗余的,但却不得不一直存在每一次预测中。
神经网络的学习黑洞
  几乎所有的神经网络都可以看作为一种特殊制定的前馈神经网络,这里“特殊制定”的作用在于缩减寻找映射函数的搜索空间,也可以理解为减少VC维(目前神经网络没有明确界定VC维大小的方法,暂且把它等于可训练参数量),也正是因为搜索空间的缩小,才使得网络可以用相对较少的数据量学习到更好的规律。
例子
  解一元二次方程y=ax+b。我们需要两组配对的(x,y)关系式来解该方程。但是如果我们知道y=ax+b实际上是y=ax,则只要搜索a的大小,这时就只需要一对(x,y)就可以确定x与y的关系。循环神经网络和卷积神经网络等神经网络的变体就具有类似的功效。
二、相比前馈神经网络,循环神经网络究竟有何不同之处?
  需要注意的是循环网络并非只有一种结构(LSTM、GRU),这里介绍一种最为常用和有效的循环网络结构。
数学视角

  首先让我们用从输入层到隐藏层的空间变换视角来观察,不同的地方在于,这次将时间维度一起考虑在内。
:这里的圆圈不再代表节点,而是状态,是输入向量和输入经过隐藏层后的向量。
例子:用目前已说的所有字预测下一个字。
前馈网络:window size为3帧的窗处理后的前馈网络

  数学公式: 这里写图片描述,concat表示将向量并接成一个更大维度的向量。
  学习参数: 需要从大量的数据中学习

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值