浅析循环神经网络

浅析循环神经网络

  • RNN
  • LSTM
    • 遗忘门
    • 输入门
    • 输出门
  • GRU
  • 双向LSTM

RNN

循环神经网络(Recurrent Neural Network,RNN)是一类具有短期记忆能力的神经网络。在循环神经网络中,神经元不但可以接受其它神经元的信息,也可以接受自身的信息,形成具有环路的网络结构。换句话说:神经元的输出可以在下一个时间步直接作用到自身(作为输入)。
RNN比传统的神经网络多了一个循环圈,这个循环表示的就是在下一个时间步(Time step)上会返回作为输入的一部分,我们把RNN在时间点上展开,得到的图形如下:
浅析循环神经网络_第1张图片
或者如下:
浅析循环神经网络_第2张图片

在不同的时间步,RNN的输入都将与之前的时间状态有关,t_n时刻网络的输出结果是该时刻的输入和所有历史共同作用的结果,这就达到了对时间序列建模的目的。

LSTM

LSTM(Long Short-Term Memory)是一种特殊的RNN,可以学习长期的依赖信息。一个LSTM单元就是下图中的一个绿色方块中的结构,主要是由三个门结构构成。
浅析循环神经网络_第3张图片

遗忘门

遗忘门作用是通过sigmoid函数来决定哪些信息被遗忘。
下图就是对于前一个信息h_t-1与当前输入信息x_t进行concat合并之后,乘上权重w并加上偏置b,再通过sigmoid函数得到一个0-1之间的值。这个值会和前一个细胞C进行点成,从而决定前一个信息遗忘还是保留。
浅析循环神经网络_第4张图片

输入门

输入门的主要作用是来决定哪些新的信息被保留。
新信息的输入这个过程主要是由2步构成:

  1. 通过一个被称为遗忘门的sigmoid层来决定多少比例的信息被更新。
  2. 通过一个tanh层创建一个新的候选向量C_t,用来决定输入什么信息,后续可能会添加到细胞状态中。

浅析循环神经网络_第5张图片
通过输入门和遗忘门,就可以将细胞状态(记忆)C进行更新了。
跟新的方法如下图所示:

  1. 旧细胞的状态与遗忘门相乘
  2. 然后加上输入门和tanh相乘的结果

浅析循环神经网络_第6张图片

输出门

输出门的作用是决定LSTM中最后一步哪些信息会被输出。
其也是通过一个sigmoid函数结果来决定哪些细胞状态会被输出,主要步骤如下:

  1. 前一次的输出h和当前的时间步的输入x通过sigmoid函数得到O_t
  2. 更新后的 细胞状态C_t会经过tanh处理得到一共-1到1的结果
  3. 将tanh处理后的结果和O_t进行相乘,得到的结果输出并同时传入下一个LSTM单元

浅析循环神经网络_第7张图片
总结一下LSTM的3个输入和输出:

  1. 输入:前一个节点隐的输出h_t-1,当前节点输入x_t,前一个节点细胞状态(记忆)C_t-1
  2. 输出:当前节点的输出h_t,传入下一个节点输出h_t,当前节点细胞状态(记忆)C

GRU

GRU(Gated Recurrent Unit),是一种LSTM的变形版本,它将遗忘和输入门组合成一个“更新门”。它还合并了单元状态和隐藏状态,并进行了一些其他更改,由于他的模型比标准LSTM模型简单,所以越来越受欢迎。
浅析循环神经网络_第8张图片
总体来说,GRU有两个特点:

  1. 两个门:更新门和输出门
  2. 两个输入和输出

双向LSTM

单向的RNN,是根据前面的信息推出后面的,但有时候只看前面的词是不够的,可能需要预测的词语和后面的内容也相关,那么此时需要一种机制,能够让模型不仅能够从前往后的具有记忆,还需要从后往前需要记忆。此时双向LSTM就可以帮助我们解决这个问题。如下图所示:
浅析循环神经网络_第9张图片
由于是双向LSTM,所以每个方向的LSTM都会有一个输出,最终的输出会有2部分,所以往往需要concat的操作。
双向GRU同理可得。

你可能感兴趣的:(lstm,rnn,深度学习)