成都网站建设公司排名,网站上的彩票走势图是怎么做的,网站链接分享做推广,此网页包含重定向循环 wordpress1️⃣ RNN介绍
前馈神经网络#xff08;CNN#xff0c;全连接网络#xff09;的流程是前向传播、反向传播和参数更新#xff0c;存在以下不足#xff1a;
无法处理时序数据#xff1a;时序数据长度一般不固定#xff0c;而前馈神经网络要求输入和输出的维度是固定的CNN全连接网络的流程是前向传播、反向传播和参数更新存在以下不足
无法处理时序数据时序数据长度一般不固定而前馈神经网络要求输入和输出的维度是固定的不能改变缺少记忆前馈神经网络没有机制去记忆和处理之前的输入数据因此无法处理像语言、股票走势或天气预报等 序列化、时间依赖性强的数据
针对前馈神经网络上述问题RNN引入以下机制
不同时间步的隐藏层之间是相连的在时刻t隐藏层的输入包括两部分当前时刻的输入 x t x_t xt和上一个时间步隐藏层的输出 s t − 1 s_{t-1} st−1
通过这两条机制模型能够记忆之前的输入数据捕捉序列的上下文信息
看完这几句话你一定在想这说的是个啥太晕了没关系慢慢往下看 多说一句RNN在很久之前就提出了Jordan RNN于1986被提出Elman RNN于1990年提出。 2️⃣ 原理介绍
接下来讲讲具体原理解决一下上面的迷惑。看下面这张图分析一下 o t o_t ot的表达式 x t x_t xt是t时刻的输入 s t s_t st是t时刻的记忆 s t f ( U ⋅ x t W ⋅ s t − 1 ) s_tf(U\cdot x_tW\cdot s_{t-1}) stf(U⋅xtW⋅st−1)f表示激活函数 o t o_t ot是t时刻的输出 o t s o f t m a x ( V ⋅ s t ) o_tsoftmax(V\cdot s_t) otsoftmax(V⋅st)
看完上面这张图对于W是什么疑惑很大我一开始学习的时候也是这样W到底是啥呢来看下面这张图
看完这张图对于W的描述一目了然。W是在不同的时间步 隐藏层之间递归的权重。在RNN中不同时间步使用相同的W为了保证信息能够传递下去。
其实这里还有一个疑惑按照我之前的认知神经网络可训练的参数w和b都是在神经元上的例如下面这张图。那么问题来了RNN隐藏层神经元上参数是啥样的呢 虽然下面的左图是这样画的搞得好像参数U,W,V“漂浮在空中一般”实际上它们都在神经元上。准确的来说应该是右图的形式U和W都在隐藏层神经元上V在输出层神经元上。所以之前理解的神经元是一个神经元上只有一种参数。对于RNN来说隐藏层神经元上有两种参数U和W。终于搞懂了爽 分析完RNN中参数的具体含义来看看参数的尺寸 U 隐藏层神经元个数 × 输入尺寸 W 隐藏层神经元个数 × 隐藏层神经元个数 V 输出尺寸 × 隐藏层神经元个数 U隐藏层神经元个数×输入尺寸\\ W隐藏层神经元个数×隐藏层神经元个数\\ V输出尺寸×隐藏层神经元个数 U隐藏层神经元个数×输入尺寸W隐藏层神经元个数×隐藏层神经元个数V输出尺寸×隐藏层神经元个数 这样最简单的RNN就分析完了。 3️⃣ 代码
接下来看一下最简单的代码
import torch
import torch.nn as nn# 参数设置
input_size 2 # 每个时间步的特征维度
hidden_size 5 # 隐层神经元数量
num_layers 1 # RNN层数
output_size 3 # 假设输出的维度# RNN对象实例化
rnn nn.RNN(input_size, hidden_size, num_layers, batch_firstTrue)# U输入到隐藏状态的权重矩阵
U rnn.weight_ih_l0 # 输入到隐藏状态的权重矩阵
print(矩阵 U 的大小 (输入到隐藏层):, U.shape) # 应为 (hidden_size, input_size)# W隐藏状态到隐藏状态的权重矩阵
W rnn.weight_hh_l0 # 隐藏状态之间的递归权重矩阵
print(矩阵 W 的大小 (隐藏层到隐藏层):, W.shape) # 应为 (hidden_size, hidden_size)# V输出层权重矩阵
# 在 PyTorch 中没有直接实现可以添加一个 Linear 层来模拟
V_layer nn.Linear(hidden_size, output_size) # 定义线性层
V V_layer.weight # V 就是隐藏状态到输出层的权重矩阵
print(矩阵 V 的大小 (隐藏层到输出层):, V.shape) # 应为 (output_size, hidden_size)输出
矩阵 U 的大小 (输入到隐藏层): torch.Size([5, 2])
矩阵 W 的大小 (隐藏层到隐藏层): torch.Size([5, 5])
矩阵 V 的大小 (隐藏层到输出层): torch.Size([3, 5])4️⃣ 总结
标准的RNN存在梯度消失问题无法捕捉长时间序列的关系。因此LSTM和GRU被提出 5️⃣ 参考
深度学习-神经网络-循环神经网络一RNNRecurrent Neural Network循环神经网络1990年理解循环神经网络RNN