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-LSTM(循环神经网络-长短期记忆网络)是一种在序列数据处理中表现出色的深度学习模型,特别擅长于处理和预测时间序列数据。卷积神经网络(CNN)则在图像识别和处理领域有着广泛的应用,以其局部感受野和权重共享...
深度学习RNN(循环神经网络)是人工智能领域中一种重要的序列模型,尤其在自然语言处理、语音识别和时间序列预测等任务中表现出色。RNNs以其独特的结构,能够处理变长输入序列,并且能够在处理过程中保留历史信息,...
在深度学习领域,循环神经网络(Recurrent Neural Networks,RNN)是一种强大的序列建模工具,尤其适合处理具有时间依赖性的数据,如自然语言、音频和时间序列数据。本项目聚焦于利用RNN来预测正弦函数的取值,这是...
1. 目标是通过使用深度学习架构tensorflow构建循环神经网络RNN模型生成唐诗 2. 其中要求生成诗歌开头词汇是“日、红、山、夜、湖、海、月”等词汇作为begin word 使用建议: 1. 环境搭建很重要 2. 要有自己的理解,...
深度学习入门课程--- RNN网络结构视频教程,希望能够学习者提供帮助,实现对RNN网络结构基础知识的掌握与理解,为后续学习做好铺垫,实现RNN网络结构的灵活运用
深度学习---RNN网络细节视频教程,希望能够学习者提供帮助,实现对RNN网络细节基础知识的掌握与理解,为后续学习做好铺垫,实现RNN网络细节知识的灵活运用
循环神经网络(Recurrent Neural Network, RNN)在处理序列数据时具有天然的优势,但它们在捕捉长期依赖关系方面...尽管LSTM在训练和计算上面临挑战,但其在处理序列数据方面的能力使其成为深度学习领域的重要工具。
《深度学习进阶-自然语言处理》是日本学者斋藤康毅所著的一本深入探讨自然语言处理(NLP)的书籍,对于那些希望通过深度学习技术理解和解决自然语言问题的人来说,是一本非常有价值的资源。自然语言处理是人工智能...
基于Pytorch深度学习实现CNN、RNN的文本分类项目源码+数据集运行训练:python torch_train.py测试:python torch_test.py数据集请使用readme文件中链接进行下载
基于TensorFlow的深度学习和深度强化学习代码:NN(传统神经网络)、CNN(卷积神经网络),RNN(递归神经网络);LSTM(长短期记忆网络);GAN(生成对抗网络);DRL(深度强化学习);DeepLearning;...
这个“Pytorch-pytorch深度学习教程之RNN语言模型.zip”压缩包文件显然包含了关于使用PyTorch实现循环神经网络(RNN)作为语言模型的教学材料。下面,我们将深入探讨RNN、PyTorch以及如何在PyTorch中构建和训练RNN...
《深度学习》是由Ian Goodfellow、Yoshua Bengio和Aaron Courville三位专家共同编著的一本深度学习领域的经典著作。这本书深入浅出地介绍了深度学习的基本概念、理论和应用,适合初学者和专业人士作为参考资料。以下...
卷积神经网络基于TensorFlow的深度学习、深度增强学习代码:NN(传统神经网络)、CNN(卷积神经网络)、RNN(递归神经网络)、LSTM(长短期记忆网络)、GAN(生成对抗网络)、DRL(深度增强学习)
本资源提供了一个基于深度学习的LSTM+RNN算法的双色球预测实战完整代码,适合计算机相关专业的在校学生、老师和企业员工下载学习。该项目利用Python编程语言,结合了深度学习中的循环神经网络(RNN)和长短时记忆...
深度学习是现代人工智能领域的重要分支,它通过模拟人脑神经网络的工作原理,让计算机能够从大量数据中自动学习特征并进行预测或决策。本资源集合包含了一本名为《深度学习基础——设计下一代机器智能算法》的书籍...
本项目"stock-rnn-master"专注于使用深度学习中的循环神经网络(RNN)来预测股票市场,旨在帮助投资者理解和应用这类技术。 循环神经网络(RNN)是一种特殊的神经网络架构,它特别适合处理序列数据,如时间序列的...
深度学习是当前人工智能研究的热点领域之一,它主要通过构建多层的神经网络来学习数据的表示和特征,以用于分类、识别、预测等任务。本学习总结将详细介绍卷积神经网络(CNN)、深度神经网络(DNN)和循环神经网络(RNN)...