Recurrent Neural Networks (RNNs)

许多应用涉及时间依赖,或基于时间依赖。这表示我们当前输出不仅仅取决于当前输入,还依赖于过去的输入。
RNN存在一个关键缺陷,因为几乎不可能捕获超过8或10步的关系。这个缺陷源于“ 消失梯度 ”问题,其中信息的贡献随时间在几何上衰减。
长短期存储单元(LSTM)和门控循环单元(GRU)通过帮助我们应用具有时间依赖性的网络,为消失的梯度问题提供了解决方案。
LSTM
GRU
在我们探寻循环神经网络之前,先回忆一下前馈神经网络的使用过程。

Recurrent Neural Networks (RNNs)_第1张图片

Recurrent Neural Networks (RNNs)_第2张图片

Recurrent Neural Networks (RNNs)_第3张图片

Recurrent Neural Networks (RNNs)_第4张图片

Feedforward
Recurrent Neural Networks (RNNs)_第5张图片

Recurrent Neural Networks (RNNs)_第6张图片

Recurrent Neural Networks (RNNs)_第7张图片
Recurrent Neural Networks (RNNs)_第8张图片

Recurrent Neural Networks (RNNs)_第9张图片

Recurrent Neural Networks (RNNs)_第10张图片
反向传播

偏导数是反向传播中使用的关键数学概念
偏导数
在反向传播过程中,我们通过调整权重,在每次迭代时略微降低网络错误。




为什么要叫做循环神经网络
Recurrent Neural Networks (RNNs)_第11张图片

那是因为利用循环神经网络在输入序列为每个元素执行相同任务。
RNN还试图通过维持内部存储器元件(也称为状态)来满足捕获信息和先前输入的需要。


Recurrent Neural Networks (RNNs)_第12张图片

许多应用程序具有时间依赖性,这表示当前输入不仅取决于当前输入,还取决于过去输入的记忆单元


Recurrent Neural Networks (RNNs)_第13张图片

循环神经网络的原则和前馈神经网络相同。
在循环神经网络中,输入和输出可以是多对多,多对一和一对多。不过,循环神经神经网络和前馈神经网络存在两个根本区别:
  1. 定义输入和输出的方式不同:
    除了每个时间步长中使用单一输入、单一输出训练网络,还可以使用序列进行训练,因为之前的输入也会产生影响。
  2. 第二个区别来自循环神经网络的存储单元:
    当前输入和神经元的激活作为下一个时间步长的输入。

在前馈神经网络中,信息从输入流向输出,没有任何反馈,现前馈框架发生变化:包括反馈或存储单元。
考虑定义的存储作为隐藏层的输出,也可以作为接下来训练步骤中向网络的其他输入。


Recurrent Neural Networks (RNNs)_第14张图片

在FFNN中,任何时间t的输出都是当前输入和权重的函数。可以使用下式表示:


在RNN中,在时间t的输出不仅取决于当前输入和重量,还取决于先前的输入。在这种情况下,时间t的输出将定义为:

Recurrent Neural Networks (RNNs)_第15张图片

x -代表输入向量,y -代表输出向量,s -代表状态向量。
Wx 是输入链接到状态层的权重矩阵,Wy是将状态层连接到输出层的权重矩阵。Ws表示将前一时间状态连接到当前时间状态的权重矩阵
Recurrent Neural Networks (RNNs)_第16张图片
RNN展开模型

在FFNN中,隐藏层近取决于当前输入和权重:



在RNNs状态层依赖于当前输出层,相应的权重:



输出向量的计算与FFNN中完全相同,它可以是每个输出节点的输入与相应权重矩阵线性组合或者相同线性组合的softmax函数。
从RNN到LSTM
Recurrent Neural Networks (RNNs)_第17张图片

放大某个隐藏单元:


Recurrent Neural Networks (RNNs)_第18张图片
RNN单元

隐藏状态的神经元替代为长短期记忆单元:

Recurrent Neural Networks (RNNs)_第19张图片

Recurrent Neural Networks (RNNs)_第20张图片

你可能感兴趣的:(Recurrent Neural Networks (RNNs))