【Pytorch神经网络理论篇】 17 循环神经网络结构:概述+BP算法+BPTT算法

简介: 链式地、有顺序地存储信息”很节省空间,对于中间状态的序列,大脑没有选择直接记住,而是存储计算方达。当我们需要取值时,直接将具体的数据输入,通过计算得出相应的给果。

同学你好!本文章于2021年末编写,获得广泛的好评!


故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现


Pytorch深度学习·理论篇(2023版)目录地址为:


CSDN独家 | 全网首发 | Pytorch深度学习·理论篇(2023版)目录


本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理进行讲解与分析,通过将深度学习知识与Pytorch的高效结合,帮助各位新入门的读者理解深度学习各个模板之间的关系,这些均是在Pytorch上实现的,可以有效的结合当前各位研究生的研究方向,设计人工智能的各个领域,是经过一年时间打磨的精品专栏!

https://v9999.blog.csdn.net/article/details/127587345


欢迎大家订阅(2023版)理论篇

以下为2021版原文~~~~

e2d24c163bcb439297a40f7dfa612d7f.png


1 循环神经网络结构概述


循环神经网络(Recurrent Neural Network,RNN)是一个具有记忆功能的网络模型。它可以发现样本彼此之间的相互关系。它多用于处理带有序列特征的样本数据。


91341a76c625bd7aff0b5a9300c7b920.png


1.1 生物大脑中的循环神经网络


当获得“我找你来玩游”信息后,大脑的语言模型会自动预测后一个字为“戏”,而不是“乐”“泳”等其他字。


1a9184e946e2473c8a17a7fdd4fc5fe4.png


每个预测的结果都会放到下个输入里面进行运算,与下一次的食人鱼一起来生成下一次的结果。


cf0179f7827e4826937660c8ae5daf03.png


链式地、有顺序地存储信息”很节省空间,对于中间状态的序列,大脑没有选择直接记住,而是存储计算方达。当我们需要取值时,直接将具体的数据输入,通过计算得出相应的给果。


1.2 循环神经网络的应用领域


对于序列化的特征任务,适合用循环神经网路来解决。这类任务包括情感分析、关键字提取、语音识别、机器翻译和股票分析等。


1.3 循环神经网络的正向传播过程


ec0a1e4f639c401d98b5e8c813a82dbc.png

dbfa74f73ab44c42984c1d6448e9ad6e.png


假设有3个时序t1,t2,t3,如图7-26所示,循环神经网络的处理过程可以分解成以下3个步骤:


(1)开始时t1通过自己的输入权重和0作为输入,生成了out1;


(2)out1通过自己的权重生成了h1,然后和t2与经过输入权重转化后一起作为输入,生成了out2;


(3)out2通过同样的隐藏层权重生成了h2,然后和t3经过输入权重转化后一起作为输入,生成了out3。


使得模型的结果既有该样本之前序列的信息,又含有该样本身的数据信息,从而使网络具有记忆功能。


2 BP算法与BPTT算法的原理剖析


2.1 BP算法==》卷积神经网络


51a404fd40c34a22a25d293b0095cbc4.png


假设有一个包含一个隐藏层的神经网络,隐藏层只有一个节点。该神经网络在BP算法中具体的实现过程如下。


(1)有一个批次的数据,含有3个数据A、B、C,批次中每个样本有两个数(x1、x2)通过权重(w1、w2)来到隐藏层H并生成批次h,如图7-27中w1和w2所在的两条直线方向。


(2)该批次的h通过隐藏层权重p1生成最终的输出结果y。


(3)y与最终的标签p比较,生成输出层误差loss(y,p)。


(4)loss(y,p)与生成y的导数相乘,得到DeL_y。DeL_y为输出层所需要的修改值。


(5)将h的转置与DeL_y相乘得到DeL_p1,这是源于h与p1相乘得到的y(见第2步.


(6)最终将该批次的DeL_p1,求和并更新到p1。


(7)同理,再将误差反向传递到上一层:计算Del_h。得到Del_h后再计算权重(w1,w2)的Del值并更新。


2.2 BPTT算法(BP算法+序列序列)==》循环神经网络


80aa3016e0da43bf98e804e74a1b5012.png


在图7-28中,同样是一个批次的数据ABC,按顺序进入循环神经网络。正向传播的实例是,B正在进入神经网络的过程,可以看到A的h参与了进来,一起经过p1生成了B的y。因为C还没有进入,为了清晰,所以这里用灰色(虚线方框)来表示。


当所有块都进入之后,会将p标签与输出进行Del_y的运算。由于C块中的y值是最后生成的,因此我们先从C块开始对h的输出传递误差Del_h。


图7-28中的反向传播是表示C块已经反向传播完成,开始B块反向传播的状态,可以看到B块Del_h是由B块的Del_y和C块的Del_h(图7-28中的fur _Del_h)通过计算得来的。


2.3 对比


这就是与BP算法不同的地方(在BP算法中Del_h直接与自己的Del_y相关,不会与其他的值有联系)。作为一个批次的数据,正向传播时是沿着4BC的顺序升当反向传播时,就按照正向传播的相反顺序接照每个节点的CBA顺序,挨个计算并传递梯度。


2.4 代码代补充  P149

目录
相关文章
|
2月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
303 0
|
1月前
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
241 5
|
2月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
179 2
|
2月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
|
2月前
|
机器学习/深度学习 传感器 算法
【表面粗糙度】基于粒子群PSO算法优化-BP神经网络的表面粗糙度研究(Matlab代码实现)
【表面粗糙度】基于粒子群PSO算法优化-BP神经网络的表面粗糙度研究(Matlab代码实现)
206 7
|
2月前
|
机器学习/深度学习 编解码 并行计算
【创新未发表!】基于BKA算法优化-BP、HO算法优化-BP、CP算法优化-BP、GOOSE算法优化-BP、NRBO算法优化-BP神经网络回归预测比较研究(Matlab代码)
【创新未发表!】基于BKA算法优化-BP、HO算法优化-BP、CP算法优化-BP、GOOSE算法优化-BP、NRBO算法优化-BP神经网络回归预测比较研究(Matlab代码)
161 0
|
2月前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
129 0
|
27天前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
162 0
|
1月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
130 2
|
2月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
185 3

热门文章

最新文章

推荐镜像

更多