循环神经网络

循环神经网络(RNN)利用循环核实现对时间序列数据的记忆和预测。本文介绍了循环核的工作原理,展示了如何展开循环核以处理不同时间步的数据,并探讨了Embedding作为高效编码方法的应用。接着,文章通过股票预测的例子,阐述了LSTM为解决梯度消失问题引入的门控机制,最后提到了GRU作为LSTM的简化版本。

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

循环核

我们可以利用卷积神经网络实现离散数据的分类,然而有些数据是与时间序列相关的,是可以根据上文预测出下文的。比如我们的大脑就可以利用脑记忆体提取出历史数据进行分析来预测接下来有可能出现的数据,比如“鱼离不开___”,我们下意识地会预测出接下来出现的可能是“水”。
那么在神经网络中也有这样一个记忆体,叫做“循环核”。循环核具有记忆力,通过不同时刻的参数共享,实现了对时间序列的信息提取。
在这里插入图片描述
循环核中记忆体的个数可以被设定,改变记忆容量。当记忆体个数、输入x以及输出y维度被指定,循环核周围这些带训练参数的维度也就被限定了。循环核内存储着每个时刻的状态信息ht,当前时刻存储的状态信息ht为:
在这里插入图片描述
当前时刻的输出为:
在这里插入图片描述
其实,这就是一层全连接,前向传播时,循环核内存储的状态信息ht,在每个时刻都被刷新,三个参数矩阵wxh、whh、why自始至终都是固定不变的;反向传播时,三个参数矩阵被梯度下降法更新

循环核按时间步展开

即按时间轴方向展开
在这里插入图片描述
我们训练优化的就是这些参数矩阵,训练完成后使用效果最好的参数矩阵执行前向传播预测结果。
循环神经网络,就是借助循环核提取时间特征后,送入全连接网络,实现连续数据的预测

循环计算层

每个循环核构成一个循环计算层
在这里插入图片描述
每个循环核中记忆体的个数可以自定义
tensorflow描述循环计算层:

tf.keras.layers.SimpleRNN(记忆体个数, activation='激活函数', return_sequences=是否每个时刻输出ht到下一层)
## activation默认是tanh
## return_sequences=True表示各时间步输出ht
## return_sequences=False表示仅最后时间步输出ht(默认)
## 一般来说,最后一层的循环核用False,中间层用True

在这里插入图片描述
在这里插入图片描述
注意,送入RNN的训练数据是有要求的,要求是三维数据:
在这里插入图片描述

循环计算层计算过程

输入一个字母预测下一个字母(时间步为1):
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果是连续输入四个字母预测下一个字母(时间步为4):
在这里插入图片描述
可以看出,这次前向传播分为四个时间步,ht每个时刻都在更新,其余参数已经被训练好,固定不变,最后时刻的ht输出,进行预测,结果为a
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Embedding——一种编码方法

在刚刚的例子中,使用了独热码对字母进行编码,独热码的位宽要与词汇量一致,词汇量增大时非常浪费资源,因此自然语言处理中有一个专门的方向在研究单词的编码。
Embedding是一种单词编码方式,用低维的向量实现了单词的编码
在这里插入图片描述
来看一下代码实现:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

股票预测

这里先用tushare模块下载贵州茅台的日k线数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

用LSTM实现股票预测

传统的RNN可以通过记忆体实现短期的记忆来进行连续数据的预测,但是当连续数据的序列变长时,会使展开时间步过长。在反向传播更新参数时,梯度要按照时间步连续相乘,会导致梯度消失。所以在1997年Horchreiter等人提出了长短记忆网络LSTM
在这里插入图片描述
引入了三个门限,都使用sigmoid激活函数使得门限的范围在[0, 1]之间。
细胞态等于上个时刻的长期记忆乘以遗忘门加上当前时刻归纳出的新知识乘以输入门。
当有多层循环网络的时候,下一层的输入xt,就是上一层的输出ht。
Tensorflow描述LSTM:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

GRU实现股票预测

2014年,Chou等人优化了LSTM结构,实现了GRU网络。
在这里插入图片描述
Tensorflow描述GRU:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值