RNN,也就是Recurrent Neural Network,循环神经网络,是非线性动态系统,将序列映射到序列,主要参数有五个:[Whv, Whh, Woh, bh, bo, h0] ,典型的结构图如下:
解释一下上图:
- 和普通神经网络一样,RNN有输入层输出层和隐含层,不一样的是RNN在不同的时间t会有不同的状态,其中t-1时刻隐含层的输出会作用到t时刻的隐含层
- [Whv, Whh, Woh, bh, bo, h0]的参数意义是: Whv:输入层到隐含层的权重参数,Whh:隐含层到隐含层的权重参数,Woh:隐含层到输出层的权重参数,bh:隐含层的偏移量,bo输出层的偏移量,h0:起始状态的隐含层的输出,一般初始为0
- 不同时间的状态共享相同的权重w和偏移量b
RNN的计算方式:
之前看过了一般神经网络和CNN,再看RNN其实觉得结构并不复杂, 计算过程看起来的话,RNN的计算方式和普通的前馈算法也没有什么大的区别,不过是上一时刻的隐含层的输出结果又在现在时刻的计算过程里面用到了,也就是不断传递的过程,这也就是为什么RNN是从序列到序列,一个状态的出入和前面几个状态的输出都有关系。
给定一个损失函数L:
当然不同的神经网络对应的训练方法也不一样, RNN因为加入了时间序列,因此训练过程也是和之前的网络不一样,RNN的训练使用的是BPTT(Back Prropagation Through TIme),该方法是由Werbo等人在1990年弄出来的
具体的训练过程如下:
上面的算法也就是求解梯度的过程,使用的也是经典的BP算法,并没有什么新鲜的,但是值得一提的是,在 t-1 时刻对 ht−1的求导值,也需加上 t 时刻的求导中对 ht−1 的求导值,因此BPTT也是一个链式的求导过程。
但是因为上面算法中的第10行,在训练t时刻的时候,出现了t-1的参数,因此对单个的求导就变成了对整个之前状态的求导之和,比如说我们在T时刻对Whh求导,计算公式如下:
也正是因为存在长依赖关系,BPTT无法解决长时依赖问题(即当前的输出与前面很长的一段序列有关,一般超过十步就无能为力了),因为BPTT会带来所谓的梯度消失或梯度爆炸问题(the vanishing/exploding gradient problem)。这篇文章很好的解释了为什么会产生梯度消失和为什么会梯度爆炸的问题,其实主要问题就是因为在BPTT算法中,以w为例,其求导过程的链太长,而太长的求导链在以tanh为激活函数(其求导值在0~1之间的BPTT中,连乘就会使得最终的求导为0,这就是梯度消失问题,也就是t时刻已经学习不到t-N时刻的参数了。当然,有很多方法去解决这个问题,如LSTMs便是专门应对这种问题的,还有一些方法,比如设计一个更好的初始参数以及更换激活函数(如换成ReLU激活函数)。
以上就是经典的RNN模型以及推导过程,最近几年依赖RNN有了很多的变体和拓展,详见:RNNs扩展和改进模型
参考文献:
【1】SutskEver,Training Recurrent Neural Networks.PhD thesis,Univ.Toronto(2012)
【2】循环神经网络(RNN, Recurrent Neural Networks)介绍
相关推荐
1.领域:matlab,RNN深度学习网络算法 2.内容:RNN深度学习网络的训练matlab仿真+操作视频 3.用处:用于RNN深度学习网络算法编程学习 4.指向人群:本硕博等教研学习使用 5.运行注意事项: 使用matlab2021a或者...
基于智能电网电力负荷预测的深度学习时间序列模型研究:RNN、Seq2Seq与TCN的实践与评估,时间序列预测的深度学习:电力负荷案例 DTS -深度时间序列预测 源代码,代码按照高水平文章复现,保证正确 深度学习模型于电力...
深度学习神经网络RNN、LSTM与GRU在锂离子电池SOH预测中的应用——基于NASA数据集的Python代码实现策略,深度学习在锂离子电池SOH预测中的应用:基于RNN、LSTM和GRU神经网络的NASA数据集Python代码实现研究,基于深度...
RNN-LSTM(循环神经网络-长短期记忆网络)是一种在序列数据处理中表现出色的深度学习模型,特别擅长于处理和预测时间序列数据。卷积神经网络(CNN)则在图像识别和处理领域有着广泛的应用,以其局部感受野和权重共享...
它包括卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GAN)、自然语言处理等领域内的具体应用案例,旨在帮助读者理解和掌握深度学习的各种核心技术。文中涉及的目标识别案例,如MNIST手写数字识别、彩色...
深度学习RNN(循环神经网络)是人工智能领域中一种重要的序列模型,尤其在自然语言处理、语音识别和时间序列预测等任务中表现出色。RNNs以其独特的结构,能够处理变长输入序列,并且能够在处理过程中保留历史信息,...
基于深度学习CNN,RNN,LSTM的油井生产动态预测Python源码(高分项目),内容:分别采用CNN,RNN,LSTM,Self-Attention,Seq2Seq对油井生产数据进行了时间序列建模,对比了建模效果。,采用框架:pytorch。 基于...
在深度学习领域,循环神经网络(Recurrent Neural Networks,RNN)是一种强大的序列建模工具,尤其适合处理具有时间依赖性的数据,如自然语言、音频和时间序列数据。本项目聚焦于利用RNN来预测正弦函数的取值,这是...
1. 目标是通过使用深度学习架构tensorflow构建循环神经网络RNN模型生成唐诗 2. 其中要求生成诗歌开头词汇是“日、红、山、夜、湖、海、月”等词汇作为begin word 使用建议: 1. 环境搭建很重要 2. 要有自己的理解,...
深度学习在自然语言处理领域的应用是当前最受欢迎的技术之一。自然语言处理是一种人机交互的关键技术,使得机器能够理解人类的语言,从而为人类提供更好的服务和支持。本文将探讨深度学习在自然语言处理领域的应用,...
《深度学习进阶-自然语言处理》是日本学者斋藤康毅所著的一本深入探讨自然语言处理(NLP)的书籍,对于那些希望通过深度学习技术理解和解决自然语言问题的人来说,是一本非常有价值的资源。自然语言处理是人工智能...
深度学习入门课程--- RNN网络结构视频教程,希望能够学习者提供帮助,实现对RNN网络结构基础知识的掌握与理解,为后续学习做好铺垫,实现RNN网络结构的灵活运用
深度学习---RNN网络细节视频教程,希望能够学习者提供帮助,实现对RNN网络细节基础知识的掌握与理解,为后续学习做好铺垫,实现RNN网络细节知识的灵活运用
循环神经网络(Recurrent Neural Network, RNN)在处理序列数据时具有天然的优势,但它们在捕捉长期依赖关系方面...尽管LSTM在训练和计算上面临挑战,但其在处理序列数据方面的能力使其成为深度学习领域的重要工具。
与传统的深度学习模型相比,RNN具有内部状态,能够将之前的信息映射到当前的任务中,非常适合处理文本、语音等序列信息。在古诗句生成任务中,RNN能够记忆上文的语义信息,结合当前的任务目标,生成符合语境和语法...
基于TensorFlow的深度学习模型涵盖了从传统神经网络(NN)到更高级的卷积神经网络(CNN)、递归神经网络(RNN)、长短期记忆网络(LSTM)、生成对抗网络(GAN)以及深度强化学习(DRL)等多种类型。这些模型在处理和...
基于Pytorch深度学习实现CNN、RNN的文本分类项目源码+数据集运行训练:python torch_train.py测试:python torch_test.py数据集请使用readme文件中链接进行下载
该书分为三个主要部分:应用数学与机器学习基础、现代实践中的深度网络和深度学习的研究前沿。 第一部分:应用数学与机器学习基础 概述深度学习及其重要性和发展历程。 介绍线性代数的基本概念和工具,如向量、...