循环神经网络RNN入门介绍

循环神经网络RNN是专门用于处理序列数据而生,其在处理序列数据方面存在天然优势。

目录

    • 一、RNN基本结构及数学推导
    • 二、RNN的缺陷及改进方法
    • 三、长短期记忆网络(LSTM)
    • 四、门控循环单元(GRU)
      • 4.1 GRU的前向传播
      • 4.2 GRU的训练过程
      • 4.3 GRU的优势

一、RNN基本结构及数学推导

RNN基本结构如下:
循环神经网络RNN入门介绍_第1张图片
其中各参数含义如下:

U——输入层到隐藏层的权重矩阵;
V——隐藏层到输出层的权重矩阵;

x是一个向量,它表示输入层的值;
s是一个向量,它表示隐藏层的值;
o也是一个向量,它表示输出层的值;

循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵W就是隐藏层上一次的值作为这一次的输入的权重。
循环神经网络RNN入门介绍_第2张图片
那么我们将第二个公式一直代入到第一个公式后,就会有下面推导:
循环神经网络RNN入门介绍_第3张图片
从上图可以看出,当前时刻确实包含了历史信息,这也就说明了循环神经网络(RNN)为什么能够记忆历史信息,在很多任务上也确实需要用到这样的特性。

注意:

  1. 这里的W,U,V在每个时刻都是相等的**(权重共享)**
  2. 隐藏状态可以理解为: S=f(现有的输入+过去记忆总结)
优势 劣势
1.能处理任意长度的输入;
2.模型大小不随输入长度影响;
3.计算过往的历史数据;
4.权值共享;
1.计算速度慢
2.对短期信息敏感,缺乏长期依赖

二、RNN的缺陷及改进方法

前面我们介绍了RNN的算法, 它处理时间序列的问题的效果很好, 但是仍然存在着一些问题, 其中较为严重的是容易出现梯度消失或者梯度爆炸的问题(BP算法和长时间依赖造成的). 注意: 这里的梯度消失和BP的不一样,这里主要指由于时间过长而造成记忆值较小的现象。

因此, 就出现了一系列的改进的算法, 其中最重要的两种算法分别是LSTMGRU

LSTM 和 GRU对于梯度消失或者梯度爆炸的问题处理方法主要是:

  • 对于梯度消失:由于它们都有特殊的方式存储”记忆”,那么以前梯度比较大的”记忆”不会像简单的RNN一样马上被抹除,因此可以一定程度上克服梯度消失问题。
  • 对于梯度爆炸:用来克服梯度爆炸的问题就是gradient clipping,也就是当你计算的梯度超过阈值c或者小于阈值-c的时候,便把此时的梯度设置成c或-c。

三、长短期记忆网络(LSTM)

长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。

公式及理论推导略。有需要详细了解的可以参考其他LSTM文章。

四、门控循环单元(GRU)

GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。GRU于2014年提出。
GRU和LSTM在很多情况下实际表现上相差无几,那么为什么我们要使用新人GRU(2014年提出)而不是相对经受了更多考验的LSTM(1997提出)呢?
选择GRU是因为它的实验效果与LSTM相似,但是更易于计算。

与普通RNN相比,GRU增加了两个结构:

  • 重置门:用于控制哪些信息需要遗忘;
  • 更新门:用于控制哪些信息需要注意;
    激活函数为sigmoid,值域为(0,1),0表示遗忘,1表示保留。

GRU基本结构如下图所示:
循环神经网络RNN入门介绍_第4张图片
图中的 Z t Z_t Zt R t R_t Rt分别表示更新门和重置门。
更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多;
重置门用于控制前一状态有多少信息被写入到当前的候选集上,重置门越小,前一状态的信息被写入的越少;

4.1 GRU的前向传播

根据上面的GRU的模型图,我们来看看网络的前向传播公式:
循环神经网络RNN入门介绍_第5张图片
其中[]表示两个向量相连。

从上述公式可以看出,Zt越大,Ht中 H ~ t \tilde{H}_t H~t的比例就越大。
这也意味着更新门决定了隐藏状态信息对于最终输出的重要性。这也符合了生物记忆机制,即过去发生的一切都无需全部记住。需要记住一些更为“重要”的信息,而其他信息将在一定程度上被遗忘。

4.2 GRU的训练过程

从前向传播过程中的公式可以看出要学习的参数有Wr、Wz、Wh、Wo。其中前三个参数都是拼接的(因为后先的向量也是拼接的),所以在训练的过程中需要将他们分割出来:
循环神经网络RNN入门介绍_第6张图片
即重置门和更新门也可以写成:
在这里插入图片描述
其中, x t x_t xt表示当前时刻的输入向量, H t − 1 H_{t-1} Ht1表示前一时刻模型的输出向量, W r h W_{rh} Wrh W r x , W_{rx}, WrxW_{zx}, W z h W_{zh} Wzh表示权值矩阵, R t R_t Rt表示重置门的输出, Z t Z_t Zt表示更新门的输出,σ作为控制门,表示标准的sigmoid函数。

4.3 GRU的优势

作为 RNN 的一种变体,GRU 不仅能够有效解决 RNN 时间序列预测中的梯度消失和梯度爆炸问题,而且比 LSTM 训练花费的时间更少。因此建议所有循环神经网络 均使用GRU或LSTM代替RNN构建。

参考:
【1】一文搞懂RNN(循环神经网络)基础篇
【2】深度学习之GRU网络

你可能感兴趣的:(RNN循环神经网络,神经网络,rnn,算法,循环神经网络,lstm)