【Pytorch神经网络理论篇】 18 循环神经网络结构:LSTM结构+双向RNN结构

简介: 双向RNN会比单向RNN多一个隐藏层,6个独特的权值在每一个时步被重复利用,6个权值分别对应:输入到向前和向后隐含层,隐含层到隐含层自身,向前和向后隐含层到输出层。

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


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


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


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

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

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


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

以下为2021版原文~~~~


a78d97493a1c44ea89a82e6ac3ca33ce.png



1 深层循环神经网络的构建


在深层网络结构中,会将简单的RNN模型从两个角度进行改造,具体如下。


1.使用更复杂的结构作为RNN模型的基本单元,使其在单层网络上提取更好的记忆特征。


2.将多个基本单元结合起来,组成不同的结构(多层RNN、双向RNN等)。有时还会配合全连接网络、卷积网络等多种模型结构,一起组成拟合能力更强的网络模型。其中,RNN模型的基本单元称为Cell,它是整个RNN的基础。


2 常见的cell结构:LSTM


长短记忆(Long Short Term Memory,LSTM)单元是一种使用了类似搭桥术结构的RNN单元。它可以学习长期序列信息,是RNN网络中最常使用的Cell之一。


2.1 了解LSTM结构


2.1.1 循环神经网络(RNNs)


通过不断将信息循环操作,保证信息持续存在,从而解决不能结合经验来理解当前问题的问题。


20200711143757938.png


从图中可看出A允许将信息不断的在内部循环,这可以使其保证每一步的计算都能保存以前的信息。


2.1.1 循环神经网络(RNNs)在长序列上的弊端


把RNNs自循环结构展开,可以看成是同一个网络复制多次并连成一条线,把自身信息传递给下一时刻的自己。


20200711144331907.png


这种链式的结构揭示了RNNs与序列和列表类型的数据密切相关。好像他们生来就是为了处理序列类型数据的。


但是在处理长依赖问题时,RNNs虽然在理论上可行,但实践发现RNNs无法实现。


2.1.3 循环神经网络中cell的LSTM结构


RNNs中有一个特殊的网络结构,叫LSTMs,全称为Long Short Term Memory networks,可翻译为长短时记忆神经网络,这个网络的设计初衷就是为了解决长依赖问题。


所有循环神经网络都具有神经网络的重复模块链的形式。


LSTMs的结构如下:


20200711145439953.png


它内部有四个网络层,这不同于标准RNN网络里只有一个网络层的单元。


20200711145829546.png


  • Neural Network Layer:激活函数操作


  • Pointwise Operation:点操作


  • Vector Transfer:数据流向


  • Concatenate:表示向量的合并(concat)操作


  • Copy:向量的拷贝


LSTMs核心是细胞状态,用贯穿细胞的水平线表示。细胞状态像传送带一样,它贯穿整个细胞却只有很少的分支,这样能保证信息不变的流过整个RNNs,细胞状态如下图所示:


20200711150606495.png


2.3 LSTM结构的门结构


LSTM网络能通过一种被称为门的结构对细胞状态进行删除或者添加信息。

门能够有选择性的决定让哪些信息通过。门的结构为一个sigmoid层和一个点乘操作的组合:


20200711150745759.png


2.3.1 忘记门


忘记门决定模型会从细胞状态中丢弃什么信息。忘记门会读取前一序列模型的输出,和当前模型的输入60bf15d1bcf54ffca71074985186bc52.png,来控制细胞状态e251761a54334e28a30ed593904b6779.png中的每个数字是否保留。


例如,在一个语言模型的例子中,假设细胞状态会包会当前主语的性别,于是根据这个状便可以选择正确的代词。当我们看到新的主语时,应该把新的主语在记忆中更新。忘记]的功能就是先去记忆中找到以前的那个旧的主语,并没有真正执行忘掉操作,只是找到而己。


20200711151353420.png


在图中,7220e2c169404d8ba770f7274293a490.png代表忘记门的输出结果,σ代表激活函数,334fcc5f4d7c4d7ea25dd8ab52542c53.png代表忘记门的权重,代表当前模型的输入,0f091da6dbfa4f1f98d6390e8313c0c8.png代表前一个序列模型的输出,74225439759b4e3ab1cf08c9c2163505.png代表忘记门的偏置。  


2.3.2 输入门


输入门其实可以分成两部分功能,一部分是找到那些需要更新的细胞状态,另一部分是把需要更新的信息更新到细胞状态里。


1、在下图1中,d7274f553eae4bacb309c073d5e55c38.png代表要更新的细胞状态,σ代表激活函数,b8f5c6e4d987424f916b7382cc9563c6.png代表当前模型的输入,82ff4f2b35034eb18b764c5b597660ad.png代表前一个序列模型的输出,9ddb63a518fb414f83d4ec9a5925e4a7.png所代表计算5ac312a0334d4594aa487cc72ec7ab5a.png的权重,671eaa7fa3984af79eafbf0426eca912.png代表计算it的偏置,1a50cf38a40146b2ac6baf91af1378a3.png代表使用tanh所创建的新细胞状态,6d78ec9563af432bb52ad55bb43e5f64.png代表计算834350719c0547808333a31dd6a9b145.png的权重,7bbcfc0a18e047f599994581d6475d16.png代表计算20dc571713e44c32885fdbf5d7fa6bb1.png的偏置。

   忘记门找到了需要忘掉的信息ft后,再将它与旧状态相乘,丢弃确定需要丢弃的信息。然后将结果加上098912b7cc0445fea29386ee7ac38014.png×392a6e45829d430a83ce707434cbf307.png使细胞状态获得新的信息。这样就完成了细胞状态的更新,如图所示。


2020071115172634.png


2、输入门更新在下图中,471c503aae504294aea2a93ffef4b5dd.png代表更新后的细胞状态,35640a86aeec418f843a619b20754b5a.png代表忘记门的输出结果,38d90b7b81484875858be014c6742025.png代表前一个序列模型的细胞状态,6b418989291e467694df4d4d3adaeea5.png代表要更新的细胞状态,0b66958db834475a8331496c51f988a2.png代表使用tanh所创建的新细胞状态。


20200711152125633.png


2.3.4 输出门


如图7-34所示,在输出中,通过一个激活函数层(实际使用的是Sigmoid激活函数)来确定哪个部分的信息将输出,接着把细胞状态通过tah进行处理(得到一个在-1~1的值),并将它和Sigmoid门的输出相乘,得出最终想要输出的那个部分,例如,在语言模型中,假设已经输入了一个代词,便会计算出需要输出一个与该代词相关的信息。


20200711152455667.png


如图上,输出门在图7-34中,ecfb829a03c74afc92cb573ad8cf4d95.png代表要输出的信息,σ代表激活函数,25ae1af96ab14228a90436f4b4bc3649.png代表计算fd99b26669f345a78c02c0887e4f6c95.png的权重,3fc4a14a2f184daa94d2adc6437f44f9.png代表计算fd99b26669f345a78c02c0887e4f6c95.png的偏置,8fd7091207c941f7a32953216f36d2c3.png代表更新后的细胞状态,04585a57d4f44a219656cab8e0783ec1.png代表当前序列模型的输出结果。


2.3 门控循环单元(GRU)


门控循环单元(Gated Recurrent Unit,GRU)是与LSTM功能几乎一样的另一个常用的网络结构,它将忘记门和输入门合成了一个单一的更新门,同时又将细胞状态和隐藏状态进行混合,以及一些其他的改动。最终的模型比标准的LSTM模型要简单。


aHR0cHM6Ly9naXRlZS5jb20va2t3ZWlzaGUvaW1hZ2VzL3Jhdy9tYXN0ZXIvTUwvMjAxOS04LTE2XzEzLTQ5LTUyLnBuZw.png


当然,基于LSTM的变体不止GRU一个,经过测试发现,这些搭桥术类的Cell在性能和准确度上几乎没有什么差别,只是在具体的某些业务上会有略微不同。


由于GRU比LSTM少一个状态输出,但效果几乎与LSTM一样,因此在编码时使用GRU可以让代码更为简单一些。


2.4 只有忘记门的LSTM(JANET)单元


   JANET(Just Another NETwork)单元也是LSTM单元的个变种,发布于2018年,实验表明,只有忘记门的网络的性能居然优于标准LSTM单元。同样,该优化方式他以被用在GRU中。


3 独立循环单元


独立循环单元是一种新的循环神经网络单元结构,其效果和速度均优于LSTM单元


IndRNN单元不但可以有效解决传统RNN模型存在的梯度消失和梯度“爆炸”问题,而且能够更好地学习样本中的长期依赖关系。


在搭建模型时:


  • 可以用堆叠、残差、全连接的方式使用IndRNN单元,搭建更深的网络结构:


  • 将IndRNN单元配合RLU等非饱和激活函数一起使用,会使模型表现出更好的鲁棒性。


3.1 原始的RNN模型结构


1afe70ddaf1142a4adc4b0a4d6c89631.png


3.2 indRNN单元的结构


d7baa6eafdde4cb0b969f14cf2bf0c84.png


4 双向RNN结构


   双向RNN又称Bi-RNN,是采用了两个方向的RNN模型。


   RNN模型擅长的是对连续数据的处理,既然是连续的数据,那么模型不但可以学习它的正向特征,而且可以学习它的反向特征。这种将正向和反向结合的结构,会比单向的循环网络更高的拟合度。例如,预测一个语句中缺失的词语,则需要根据上下文来进行预测。


92c1676c08cd43488c44e5a838603633.png


双向RNN的处理过程就是在正向传播的基础上再进行一次反向传播。正向传播和反向传播都连接着一个输出层。这个结构提供给输出层输入序列中每二个点的完整的过去和未来的上下文信息。图所示是一个沿着时间展开的双向循环神经网络。


   双向RNN会比单向RNN多一个隐藏层,6个独特的权值在每一个时步被重复利用,6个权值分别对应:输入到向前和向后隐含层,隐含层到隐含层自身,向前和向后隐含层到输出层。


   双向RNN在神经网络里的时序如图7-37所示。


   在按照时间序列正向运算之后,网络又从时间的最后一项反向地运算一遍,即把时刻的输入与默认值0一起生戒反向的0u3,把反向ou3当成2时刻的输入与原来的时刻输人一起生成反向Qu2,依此类推,直到第一个时序数据


383941151ae9423d9490f286658a58e4.png


双向循环神经网络有两个输出:一个是正向输出,另一个是反向输出。最终会把输出结果通过concat并联在一起,然后交给后面的层来处理。


假设单向的循环神经网络输出的形状为[seq,batch,nhidden],则双向循环神经网络输出的形状就会交成[seq,batch,nhidden×2]


在大多数应用中,基于时间序列与上下文有关的类似NLP中自动回答类的问题,一般使用双向LSTM配合LSTM或RNN横向扩展来实现,效果非常好。

目录
相关文章
|
3月前
|
机器学习/深度学习 算法 安全
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
194 0
|
5月前
|
机器学习/深度学习 算法 数据挖掘
基于WOA鲸鱼优化的BiLSTM双向长短期记忆网络序列预测算法matlab仿真,对比BiLSTM和LSTM
本项目基于MATLAB 2022a/2024b实现,采用WOA优化的BiLSTM算法进行序列预测。核心代码包含完整中文注释与操作视频,展示从参数优化到模型训练、预测的全流程。BiLSTM通过前向与后向LSTM结合,有效捕捉序列前后文信息,解决传统RNN梯度消失问题。WOA优化超参数(如学习率、隐藏层神经元数),提升模型性能,避免局部最优解。附有运行效果图预览,最终输出预测值与实际值对比,RMSE评估精度。适合研究时序数据分析与深度学习优化的开发者参考。
|
5月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA遗传优化的BiLSTM双向长短期记忆网络序列预测算法matlab仿真,对比BiLSTM和LSTM
本内容包含基于BiLSTM与遗传算法(GA)的算法介绍及实现。算法通过MATLAB2022a/2024b运行,核心为优化BiLSTM超参数(如学习率、神经元数量),提升预测性能。LSTM解决传统RNN梯度问题,捕捉长期依赖;BiLSTM双向处理序列,融合前文后文信息,适合全局信息任务。附完整代码(含注释)、操作视频及无水印运行效果预览,适用于股票预测等场景,精度优于单向LSTM。
|
2月前
|
机器学习/深度学习 数据采集 资源调度
基于长短期记忆网络定向改进预测的动态多目标进化算法(LSTM-DIP-DMOEA)求解CEC2018(DF1-DF14)研究(Matlab代码实现)
基于长短期记忆网络定向改进预测的动态多目标进化算法(LSTM-DIP-DMOEA)求解CEC2018(DF1-DF14)研究(Matlab代码实现)
|
5月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本内容展示了一种基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测方法。通过 MATLAB2022a 实现,完整程序运行无水印,核心代码附详细中文注释及操作视频。算法利用 PSO 优化 TCN 的超参数(如卷积核大小、层数等),提升非线性时间序列预测性能。TCN 结构包含因果卷积层与残差连接,结合 LSTM 构建混合模型,经多次迭代选择最优超参数,最终实现更准确可靠的预测效果,适用于金融、气象等领域。
|
5月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化的BiLSTM双向长短期记忆网络序列预测算法matlab仿真,对比BiLSTM和LSTM
本项目基于MATLAB2022a/2024b开发,结合粒子群优化(PSO)算法与双向长短期记忆网络(BiLSTM),用于优化序列预测任务中的模型参数。核心代码包含详细中文注释及操作视频,涵盖遗传算法优化过程、BiLSTM网络构建、训练及预测分析。通过PSO优化BiLSTM的超参数(如学习率、隐藏层神经元数等),显著提升模型捕捉长期依赖关系和上下文信息的能力,适用于气象、交通流量等场景。附有运行效果图预览,展示适应度值、RMSE变化及预测结果对比,验证方法有效性。
|
5月前
|
机器学习/深度学习 数据采集 算法
基于GWO灰狼优化的BiLSTM双向长短期记忆网络序列预测算法matlab仿真,对比BiLSTM和LSTM
本项目基于Matlab 2022a/2024b实现,结合灰狼优化(GWO)算法与双向长短期记忆网络(BiLSTM),用于序列预测任务。核心代码包含数据预处理、种群初始化、适应度计算及参数优化等步骤,完整版附带中文注释与操作视频。BiLSTM通过前向与后向处理捕捉序列上下文信息,GWO优化其参数以提升预测性能。效果图展示训练过程与预测结果,适用于气象、交通等领域。LSTM结构含输入门、遗忘门与输出门,解决传统RNN梯度问题,而BiLSTM进一步增强上下文理解能力。
|
8月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA遗传优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本项目基于MATLAB 2022a实现了一种结合遗传算法(GA)优化的时间卷积神经网络(TCN)时间序列预测算法。通过GA全局搜索能力优化TCN超参数(如卷积核大小、层数等),显著提升模型性能,优于传统GA遗传优化TCN方法。项目提供完整代码(含详细中文注释)及操作视频,运行后无水印效果预览。 核心内容包括:1) 时间序列预测理论概述;2) TCN结构(因果卷积层与残差连接);3) GA优化流程(染色体编码、适应度评估等)。最终模型在金融、气象等领域具备广泛应用价值,可实现更精准可靠的预测结果。
|
2月前
|
机器学习/深度学习 数据采集 人工智能
PyTorch学习实战:AI从数学基础到模型优化全流程精解
本文系统讲解人工智能、机器学习与深度学习的层级关系,涵盖PyTorch环境配置、张量操作、数据预处理、神经网络基础及模型训练全流程,结合数学原理与代码实践,深入浅出地介绍激活函数、反向传播等核心概念,助力快速入门深度学习。
179 1
|
6月前
|
机器学习/深度学习 PyTorch API
PyTorch量化感知训练技术:模型压缩与高精度边缘部署实践
本文深入探讨神经网络模型量化技术,重点讲解训练后量化(PTQ)与量化感知训练(QAT)两种主流方法。PTQ通过校准数据集确定量化参数,快速实现模型压缩,但精度损失较大;QAT在训练中引入伪量化操作,使模型适应低精度环境,显著提升量化后性能。文章结合PyTorch实现细节,介绍Eager模式、FX图模式及PyTorch 2导出量化等工具,并分享大语言模型Int4/Int8混合精度实践。最后总结量化最佳策略,包括逐通道量化、混合精度设置及目标硬件适配,助力高效部署深度学习模型。
942 21
PyTorch量化感知训练技术:模型压缩与高精度边缘部署实践

热门文章

最新文章