循环神经网络(RNN, Recurrent Neural Networks)介绍
深度学习中的卷积神经网络与循环神经网络

深度学习中的卷积神经网络与循环神经网络深度学习是目前人工智能领域最为炙手可热的技术之一,它在图像识别、语音识别、自然语言处理等领域都取得了显著的成就。
而在深度学习领域中,卷积神经网络和循环神经网络是两个重要的模型,它们在不同的任务中展现出了卓越的性能。
本文将重点介绍卷积神经网络和循环神经网络的原理、结构和应用,旨在帮助读者更好地理解这两种神经网络模型。
一、卷积神经网络(Convolutional Neural Network,CNN)1.1原理卷积神经网络是受到生物视觉系统的启发而提出的一种深度学习模型,它模拟了人类视觉皮层的工作原理。
在卷积神经网络中,包含了卷积层、池化层和全连接层等组件。
卷积层是卷积神经网络的核心组件,它通过卷积操作从输入数据中提取特征。
卷积操作可以有效地减少参数数量,并且能够捕捉数据中的局部特征。
此外,卷积操作还具有平移不变性,能够识别特征在不同位置的模式。
池化层通常紧跟在卷积层后面,它的作用是降低特征图的尺寸,并减少模型对位置的敏感度。
常见的池化操作有最大池化和平均池化,它们分别选择特征图中的最大值和平均值作为输出。
全连接层是卷积神经网络中的最后一层,它将特征图展平成一维向量,并通过全连接操作将提取的特征进行分类或回归。
1.2结构卷积神经网络通常由多个卷积层、池化层和全连接层构成,其中卷积层和池化层交替出现,而全连接层通常出现在网络的最后一部分。
卷积神经网络的结构可以根据具体的任务进行调整,以达到更好的性能。
1.3应用卷积神经网络在图像识别、物体检测、人脸识别等领域取得了巨大的成功。
以ImageNet图像识别比赛为例,卷积神经网络模型始终是各种比赛的最佳选择,它在复杂的图像数据上展现了出色的识别性能。
此外,卷积神经网络还被广泛应用于医学影像识别、自动驾驶、智能安防等领域。
二、循环神经网络(Recurrent Neural Network,RNN)2.1原理循环神经网络是一种能够处理时序数据的神经网络模型,它具有记忆能力,能够对序列数据进行建模。
rnn通俗理解

rnn通俗理解
摘要:
1.RNN 的通俗理解
2.RNN 的基本结构
3.RNN 的优势与应用
4.RNN 的局限性
正文:
RNN 的通俗理解
循环神经网络(Recurrent Neural Network,简称RNN)是一种能够处理序列数据的神经网络。
与传统的前向神经网络不同,RNN 具有“记忆”功能,可以捕捉序列数据中的时序信息。
通过这种特性,RNN 在处理诸如自然语言处理、语音识别和时间序列预测等任务中具有很强的优势。
RNN 的基本结构
RNN 的基本结构包括输入层、隐藏层和输出层。
其中,隐藏层包含一个或多个循环单元(Cell),这些循环单元负责存储和更新网络的状态。
在每个时间步,RNN 接收输入信号,更新隐藏状态,并输出相应的结果。
RNN 的优势与应用
RNN 的优势在于能够捕捉序列数据中的时序信息。
在自然语言处理领域,RNN 成功地应用于机器翻译、文本摘要、情感分析等任务。
此外,RNN 在语音识别、时间序列预测等领域也取得了显著的成果。
RNN 的局限性
尽管RNN 在处理序列数据方面具有优势,但它仍然存在一些局限性。
例
如,在处理长序列时,RNN 可能会遇到梯度消失或梯度爆炸的问题,导致模型难以学习长距离的依赖关系。
了解循环神经网络(RNN)中的LSTM和GRU

了解循环神经网络(RNN)中的LSTM和GRU循环神经网络(Recurrent Neural Network,简称RNN)是一种常用的神经网络模型,用于处理序列数据,在自然语言处理、语音识别、机器翻译等领域取得了很好的效果。
LSTM(Long Short-Term Memory)和GRU(Gated Recurrent Unit)是RNN中常用的两种变体,它们通过引入门控机制解决了传统RNN面临的“梯度消失”和“梯度爆炸”问题,提高了模型的性能和效果。
一、LSTM(Long Short-Term Memory)LSTM是由Hochreiter和Schmidhuber于1997年提出的一种循环神经网络结构,可以用于处理长期依赖关系。
它通过三个门控单元(输入门、遗忘门、输出门)来控制信息的流动,有效地避免了梯度消失和梯度爆炸问题。
1. 输入门(Input Gate):控制输入记忆细胞的更新程度。
2. 遗忘门(Forget Gate):控制记忆细胞中的信息保留和遗忘。
3. 输出门(Output Gate):控制输出的计算和激活。
LSTM网络中,记忆细胞(Cell State)起到了承载和传递信息的作用,通过门控机制可以有效地决定信息的流动,使得网络可以灵活地记住和遗忘信息,具备更强的长依赖关系建模能力。
LSTM的模型参数较多,计算复杂度较高,但在处理长序列数据和需要长期记忆的场景下表现出色。
二、GRU(Gated Recurrent Unit)GRU是由Cho等人于2014年提出的一种变种循环神经网络结构,相比LSTM简化了门控单元的结构,并取得了近似的性能。
GRU中只有两个门(重置门、更新门),分别用于控制更新和重置操作。
重置门决定了当前时刻是否可以忽略过去的信息,而更新门则控制了新信息的加入程度。
GRU在参数数量上较LSTM更少,计算效率更高。
三、LSTM与GRU的对比LSTM和GRU在很多应用场景中都表现出良好的性能,但二者在某些方面有所不同。
卷积神经网络与循环神经网络

卷积神经网络与循环神经网络卷积神经网络(Convolutional Neural Network,CNN)和循环神经网络(Recurrent Neural Network,RNN)是目前深度学习领域最为流行的两种神经网络架构。
它们分别适用于不同的数据类型和任务,能够有效地处理图像、语音、文本等各种形式的数据。
一、卷积神经网络卷积神经网络是一种专门用于处理格状数据(如图像)的神经网络模型。
它的核心思想是利用卷积操作对输入数据进行特征提取,然后通过池化操作减小特征图的尺寸,最后将提取到的特征输入全连接层进行分类或回归。
卷积神经网络的结构主要包括卷积层、池化层和全连接层。
1.1卷积层卷积层是卷积神经网络的核心组件,它通过卷积操作对输入数据进行特征提取。
卷积操作是指使用一个滤波器(也称为卷积核)在输入数据上进行滑动计算,得到对应位置的输出。
滤波器的参数是在训练过程中通过反向传播算法学习得到的。
在图像处理中,卷积操作可以帮助提取图像中的边缘、纹理、角点等特征。
卷积层一般会使用多个不同的滤波器,从而提取多个不同的特征。
1.2池化层池化层是利用池化操作对卷积层的输出进行降采样,从而减小特征图的尺寸。
常见的池化操作有最大池化和平均池化。
最大池化是保留每个区域内的最大值作为输出,平均池化是计算每个区域内的平均值作为输出。
池化操作的目的是减少计算复杂度和减小过拟合。
1.3全连接层全连接层是卷积神经网络的最后一层,它将池化层的输出作为输入进行分类或回归。
全连接层的每个神经元都与上一层的所有神经元相连,输出一个标量值。
全连接层通常使用一种称为softmax的函数将输出转化为概率分布,再根据不同任务进行相应的损失函数计算和优化。
卷积神经网络通过共享权重和局部感知野的设计,大大减少了模型参数的数量,同时也能够保留输入数据的局部结构特征。
这使得卷积神经网络在图像识别、目标检测、语义分割等计算机视觉任务中取得了很大的成功。
二、循环神经网络循环神经网络是一种专门用于处理序列数据(如语音、文本)的神经网络模型。
时空序列预测的深度学习模型

时空序列预测的深度学习模型深度学习模型在时空序列预测中的应用时空序列预测是许多领域中的关键问题,如气象预测、交通流量预测和股票价格预测等。
随着深度学习的兴起,越来越多的研究者和工程师开始运用深度学习模型来解决时空序列预测问题。
本文将介绍几种常用的深度学习模型,并探讨它们在时空序列预测中的应用。
一、循环神经网络(Recurrent Neural Network,RNN)循环神经网络是一种经典的深度学习模型,主要用于处理具有时间依赖关系的序列数据。
RNN通过引入循环单元,可以有效地捕捉序列之间的时序信息。
在时空序列预测中,RNN可以通过学习过去一段时间的数据来预测未来的时空序列。
例如,在交通流量预测中,可以利用过去几天的交通数据来预测未来几天的交通情况。
二、长短期记忆网络(Long Short-Term Memory,LSTM)长短期记忆网络是一种改进的循环神经网络模型,专门用于解决传统RNN面临的长时依赖问题。
LSTM通过引入输入门、遗忘门和输出门等机制,能够更好地控制过去信息的记忆和遗忘,从而提高模型的长期记忆能力。
在时空序列预测中,LSTM可以更好地捕捉序列中的长期依赖关系,例如在气象预测中,可以利用过去几个月的气象数据来预测未来几个月的天气情况。
三、卷积神经网络(Convolutional Neural Network,CNN)卷积神经网络主要用于处理图像数据,但在时空序列预测中也有一定的应用价值。
通过使用一维卷积核,CNN可以有效地提取序列数据中的空间特征。
在交通流量预测中,可以将不同位置的交通流量数据看作一幅"图像",然后利用CNN提取空间特征,从而实现对未来交通流量的预测。
四、时空注意力网络(Spatio-Temporal Attention Network)时空注意力网络是一种新兴的深度学习模型,专门用于时空序列预测问题。
该模型通过引入注意力机制,能够自动学习序列中不同时间和空间位置的重要性。
神经网络长短期记忆(LSTM)简介

0. 从RNN说起循环神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的神经网络。
相比一般的神经网络来说,他能够处理序列变化的数据。
比如某个单词的意思会因为上文提到的内容不同而有不同的含义,RNN就能够很好地解决这类问题。
1. 普通RNN先简单介绍一下一般的RNN。
其主要形式如下图所示:这里:x为当前状态下数据的输入,h表示接收到的上一个节点的输入。
y为当前节点状态下的输出,而h/为传递到下一个节点的输出。
通过上图的公式可以看到,输出h'与x和h的值都相关。
而y则常常使用h'投入到一个线性层(主要是进行维度映射)然后使用softmax进行分类得到需要的数据。
对这里的y如何通过h'计算得到往往看具体模型的使用方式。
通过序列形式的输入,我们能够得到如下形式的RNN。
2. LSTM2.1 什么是LSTM长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。
简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。
LSTM结构(图右)和普通RNN的主要输入输出区别如下所示。
相比RNN只有一个传递状态h t,LSTM有两个传输状态,一个c t(cell state),和一个h t(hidden state)。
(Tips:RNN中的h t对于LSTM中的c t)其中对于传递下去的c t改变得很慢,通常输出的c t是上一个状态传过来的c t-1加上一些数值。
而h t则在不同节点下往往会有很大的区别。
2.2 深入LSTM结构下面具体对LSTM的内部结构来进行剖析。
首先使用LSTM的当前输入x t和上一个状态传递下来的h t-1拼接训练得到四个状态。
其中,z f,z i,z o是由拼接向量乘以权重矩阵之后,再通过一个sigmoid激活函数转换成0到1之间的数值,来作为一种门控状态。
rnn模型的基本原理

rnn模型的基本原理简介循环神经网络(Recurrent Neural Network,RNN)是一种在序列数据建模中非常常用的神经网络模型。
相比于传统的前馈神经网络(Feedforward Neural Network),RNN能够更好地处理时间维度上的数据,因此被广泛应用于语音识别、自然语言处理、机器翻译等领域。
在本文中,我们将深入探讨RNN模型的基本原理。
首先,我们将介绍RNN的结构和基本组成部分,然后详细讨论RNN的前向传播和反向传播算法。
1. RNN结构RNN是一种具有记忆能力的神经网络模型,通过使用循环连接来处理序列数据。
与前馈神经网络不同,RNN在处理序列数据时会保留之前的信息,并将其传递给下一个时间步。
RNN的结构主要由以下三个部分组成: 1. 输入层(Input Layer):接收输入序列数据。
2. 隐藏层(Hidden Layer):用于保存和传递之前的状态信息。
3. 输出层(Output Layer):预测下一个时间步的输出。
2. RNN的前向传播算法RNN的前向传播算法可以分为以下几个步骤:步骤1:初始化隐藏状态首先,需要对隐藏状态进行初始化。
隐藏状态是一个向量,用于保存之前的状态信息。
通常情况下,将隐藏状态初始化为全零向量。
步骤2:计算隐藏状态接下来,根据当前时间步的输入和上一个时间步的隐藏状态,计算当前时间步的隐藏状态。
具体计算方式可以使用如下公式表示:ℎt=f(Wℎx x t+Wℎℎℎt−1+bℎ)其中,x t是当前时间步的输入,ℎt−1是上一个时间步的隐藏状态,Wℎx和Wℎℎ是权重矩阵,bℎ是偏置向量,f表示激活函数。
步骤3:计算输出值根据当前时间步的隐藏状态,计算当前时间步的输出值。
具体计算方式可以使用如下公式表示:y t=f(W yℎℎt+b y)其中,W yℎ和b y是输出层的权重矩阵和偏置向量。
步骤4:重复执行步骤2和步骤3重复执行步骤2和步骤3,直到处理完所有的时间步。
神经网络中的卷积神经网络和循环神经网络

神经网络中的卷积神经网络和循环神经网络神经网络从诞生起就备受关注,因为它可以模仿人类大脑的工作方式,通过学习逐渐提高自己的表现。
而其中卷积神经网络(Convolutional Neural Network,CNN)和循环神经网络(Recurrent Neural Network,RNN)两种结构更是成为了当前最为热门的研究方向。
卷积神经网络是一种能够识别图像、视频、文本等大型数据的深度学习算法。
该算法通过多层卷积、池化等操作对输入的特征进行抽取,最终提取出数据的关键特征,从而实现分类、检测等任务。
卷积神经网络以其高效、精度高等特点,被广泛应用于计算机视觉领域。
卷积神经网络的核心是卷积层。
卷积层通过滑动一个指定大小的卷积核(Convolution Kernel)在输入特征图(Input Feature Map)上进行卷积操作,从而得到输出特征图(Output Feature Map)。
这样的操作能够提取输入特征图的局部特征,大大减少了参数数量,同时保留了图像的空间结构信息。
此外,卷积层还可以通过添加池化层(Pooling Layer)进一步减少参数数量,并使模型具有平移不变性(Translation Invariance)。
循环神经网络是另一种被广泛应用的神经网络结构。
与卷积神经网络不同,循环神经网络的输入数据不是单独的数据点,而是有序序列,比如一句话或者一段音频。
循环神经网络通过在序列中引入记忆单元(Memory Cell)和状态向量(State Vector),学习序列之间的依赖关系。
这种结构可用于诸如语言建模、自然语言处理、图片标注、语音识别等任务。
循环神经网络的核心是循环层(Recurrent Layer)。
循环层可以看做是多个神经元之间的连接形成的环,其中每个神经元接收来自上一个时间步的输入和当前时间步的输入,同时根据它的内部状态计算输出和新的状态。
基于循环层的结构,循环神经网络可以有效地处理不定长的序列数据,并具有记忆能力,适用于处理自然语言文本、时间序列数据等任务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
循环神经网络(RNN, Recurrent Neural Networks)介绍标签:递归神经网络RNN神经网络LSTMCW-RNN2015-09-23 13:24 25873人阅读评论(13) 收藏举报分类:数据挖掘与机器学习(23)版权声明:未经许可, 不能转载目录(?)[+]循环神经网络(RNN, Recurrent Neural Networks)介绍这篇文章很多内容是参考:/2015/09/recurrent-neural-networks-tutorial-part-1-introd uction-to-rnns/,在这篇文章中,加入了一些新的内容与一些自己的理解。
循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural Language Processing, NLP)中取得了巨大成功以及广泛应用。
但是,目前网上与RNNs有关的学习资料很少,因此该系列便是介绍RNNs的原理以及如何实现。
主要分成以下几个部分对RNNs进行介绍:1. RNNs的基本介绍以及一些常见的RNNs(本文内容);2. 详细介绍RNNs中一些经常使用的训练算法,如Back Propagation ThroughTime(BPTT)、Real-time Recurrent Learning(RTRL)、Extended Kalman Filter(EKF)等学习算法,以及梯度消失问题(vanishing gradient problem)3. 详细介绍Long Short-Term Memory(LSTM,长短时记忆网络);4. 详细介绍Clockwork RNNs(CW-RNNs,时钟频率驱动循环神经网络);5. 基于Python和Theano对RNNs进行实现,包括一些常见的RNNs模型。
不同于传统的FNNs(Feed-forward Neural Networks,前向反馈神经网络),RNNs 引入了定向循环,能够处理那些输入之间前后关联的问题。
定向循环结构如下图所示:该tutorial默认读者已经熟悉了基本的神经网络模型。
如果不熟悉,可以点击:Implementing A Neural Network From Scratch进行学习。
什么是RNNsRNNs的目的使用来处理序列数据。
在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。
但是这种普通的神经网络对于很多问题却无能无力。
例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。
RNNs之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。
具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。
理论上,RNNs能够对任何长度的序列数据进行处理。
但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态相关,下图便是一个典型的RNNs:From NatureRNNs包含输入单元(Input units),输入集标记为{x0,x1,...,x t,x t+1,...},而输出单元(Output units)的输出集则被标记为{y0,y1,...,y t,y t+1.,..}。
RNNs还包含隐藏单元(Hidden units),我们将其输出集标记为{s0,s1,...,s t,s t+1,...},这些隐藏单元完成了最为主要的工作。
你会发现,在图中:有一条单向流动的信息流是从输入单元到达隐藏单元的,与此同时另一条单向流动的信息流从隐藏单元到达输出单元。
在某些情况下,RNNs会打破后者的限制,引导信息从输出单元返回隐藏单元,这些被称为“Back Projections”,并且隐藏层的输入还包括上一隐藏层的状态,即隐藏层内的节点可以自连也可以互连。
上图将循环神经网络进行展开成一个全神经网络。
例如,对一个包含5个单词的语句,那么展开的网络便是一个五层的神经网络,每一层代表一个单词。
对于该网络的计算过程如下:x t表示第t,t=1,2,3...步(step)的输入。
比如,x1为第二个词的one-hot向量(根据上图,x0为第一个词);PS:使用计算机对自然语言进行处理,便需要将自然语言处理成为机器能够识别的符号,加上在机器学习过程中,需要将其进行数值化。
而词是自然语言理解与处理的基础,因此需要对词进行数值化,词向量(Word Representation,Wordembeding)[1]便是一种可行又有效的方法。
何为词向量,即使用一个指定长度的实数向量v来表示一个词。
有一种种最简单的表示方法,就是使用One-hot vector 表示单词,即根据单词的数量|V|生成一个|V| * 1的向量,当某一位为一的时候其他位都为零,然后这个向量就代表一个单词。
缺点也很明显:1.由于向量长度是根据单词个数来的,如果有新词出现,这个向量还得增加,麻烦!(Impossible to keep up to date);2.主观性太强(subjective)3.这么多单词,还得人工打labor并且adapt,想想就恐4.最不能忍受的一点便是很难计算单词之间的相似性。
现在有一种更加有效的词向量模式,该模式是通过神经网或者深度学习对词进行训练,输出一个指定维度的向量,该向量便是输入词的表达。
如word2vec。
∙s t为隐藏层的第t步的状态,它是网络的记忆单元。
s t根据当前输入层的输出与上一步隐藏层的状态进行计算。
s t=f(Ux t+Ws t−1),其中f一般是非线性的激活函数,如tanh或ReLU,在计算s0时,即第一个单词的隐藏层状态,需要用到s−1,但是其并不存在,在实现中一般置为0向量;∙o t是第t步的输出,如下个单词的向量表示,o t=softmax(Vs t).需要注意的是:∙你可以认为隐藏层状态s t是网络的记忆单元. s t包含了前面所有步的隐藏层状态。
而输出层的输出o t只与当前步的s t有关,在实践中,为了降低网络的复杂度,往往s t只包含前面若干步而不是所有步的隐藏层状态;∙在传统神经网络中,每一个网络层的参数是不共享的。
而在RNNs中,每输入一步,每一层各自都共享参数U,V,W。
其反应者RNNs中的每一步都在做相同的事,只是输入不同,因此大大地降低了网络中需要学习的参数;这里并没有说清楚,解释一下,传统神经网络的参数是不共享的,并不是表示对于每个输入有不同的参数,而是将RNN是进行展开,这样变成了多层的网络,如果这是一个多层的传统神经网络,那么x t到s t之间的U矩阵与x t+1到s t+1之间的U是不同的,而RNNs中的却是一样的,同理对于s与s层之间的W、s层与o层之间的V也是一样的。
∙上图中每一步都会有输出,但是每一步都要有输出并不是必须的。
比如,我们需要预测一条语句所表达的情绪,我们仅仅需要关系最后一个单词输入后的输出,而不需要知道每个单词输入后的输出。
同理,每步都需要输入也不是必须的。
RNNs的关键之处在于隐藏层,隐藏层能够捕捉序列的信息。
RNNs能干什么?RNNs已经被在实践中证明对NLP是非常成功的。
如词向量表达、语句合法性检查、词性标注等。
在RNNs中,目前使用最广泛最成功的模型便是LSTMs(Long Short-Term Memory,长短时记忆模型)模型,该模型通常比vanilla RNNs能够更好地对长短时依赖进行表达,该模型相对于一般的RNNs,只是在隐藏层做了手脚。
对于LSTMs,后面会进行详细地介绍。
下面对RNNs在NLP中的应用进行简单的介绍。
语言模型与文本生成(Language Modeling and Generating Text)给你一个单词序列,我们需要根据前面的单词预测每一个单词的可能性。
语言模型能够一个语句正确的可能性,这是机器翻译的一部分,往往可能性越大,语句越正确。
另一种应用便是使用生成模型预测下一个单词的概率,从而生成新的文本根据输出概率的采样。
语言模型中,典型的输入是单词序列中每个单词的词向量(如One-hot vector),输出时预测的单词序列。
当在对网络进行训练时,如果o t=x t+1,那么第t步的输出便是下一步的输入。
下面是RNNs中的语言模型和文本生成研究的三篇文章:机器翻译(Machine Translation)机器翻译是将一种源语言语句变成意思相同的另一种源语言语句,如将英语语句变成同样意思的中文语句。
与语言模型关键的区别在于,需要将源语言语句序列输入后,才进行输出,即输出第一个单词时,便需要从完整的输入序列中进行获取。
机器翻译如下图所示:RNN for Machine Translation. Image Source 下面是关于RNNs中机器翻译研究的三篇文章:语音识别(Speech Recognition)语音识别是指给一段声波的声音信号,预测该声波对应的某种指定源语言的语句以及该语句的概率值。
RNNs中的语音识别研究论文:图像描述生成(Generating Image Descriptions)和卷积神经网络(convolutional Neural Networks, CNNs)一样,RNNs已经在对无标图像描述自动生成中得到应用。
将CNNs与RNNs结合进行图像描述自动生成。
这是一个非常神奇的研究与应用。
该组合模型能够根据图像的特征生成描述。
如下图所示:图像描述生成中的深度视觉语义对比. Image Source如何训练RNNs对于RNN是的训练和对传统的ANN训练一样。
同样使用BP误差反向传播算法,不过有一点区别。
如果将RNNs进行网络展开,那么参数W,U,V是共享的,而传统神经网络却不是的。
并且在使用梯度下降算法中,每一步的输出不仅依赖当前步的网络,并且还以来前面若干步网络的状态。
比如,在t=4时,我们还需要向后传递三步,已经后面的三步都需要加上各种的梯度。
该学习算法称为Backpropagation Through Time (BPTT)。
后面会对BPTT进行详细的介绍。
需要意识到的是,在vanilla RNNs训练中,BPTT无法解决长时依赖问题(即当前的输出与前面很长的一段序列有关,一般超过十步就无能为力了),因为BPTT会带来所谓的梯度消失或梯度爆炸问题(the vanishing/exploding gradient problem)。
当然,有很多方法去解决这个问题,如LSTMs便是专门应对这种问题的。
RNNs扩展和改进模型这些年,研究者们已经提出了多钟复杂的RNNs去改进vanilla RNN模型的缺点。