RNN
循环神经网络(Recurrent Neural Network,RNN)是一类具有短期记忆能力的神经网络。在循环神经网络中,神经元不但可以接受其它神经元的信息,也可以接受自身的信息,形成具有环路的网络结构。换句话说:神经元的输出可以在下一个时间步直接作用到自身(作为输入)。
RNN比传统的神经网络多了一个循环圈,这个循环表示的就是在下一个时间步(Time step)上会返回作为输入的一部分,我们把RNN在时间点上展开,得到的图形如下:
或者如下:
在不同的时间步,RNN的输入都将与之前的时间状态有关,t_n时刻网络的输出结果是该时刻的输入和所有历史共同作用的结果,这就达到了对时间序列建模的目的。
LSTM
LSTM(Long Short-Term Memory)是一种特殊的RNN,可以学习长期的依赖信息。一个LSTM单元就是下图中的一个绿色方块中的结构,主要是由三个门结构构成。
遗忘门
遗忘门作用是通过sigmoid函数来决定哪些信息被遗忘。
下图就是对于前一个信息h_t-1与当前输入信息x_t进行concat合并之后,乘上权重w并加上偏置b,再通过sigmoid函数得到一个0-1之间的值。这个值会和前一个细胞C进行点成,从而决定前一个信息遗忘还是保留。
输入门
输入门的主要作用是来决定哪些新的信息被保留。
新信息的输入这个过程主要是由2步构成:
- 通过一个被称为遗忘门的sigmoid层来决定多少比例的信息被更新。
- 通过一个tanh层创建一个新的候选向量C_t,用来决定输入什么信息,后续可能会添加到细胞状态中。
通过输入门和遗忘门,就可以将细胞状态(记忆)C进行更新了。
跟新的方法如下图所示:
- 旧细胞的状态与遗忘门相乘
- 然后加上输入门和tanh相乘的结果
输出门
输出门的作用是决定LSTM中最后一步哪些信息会被输出。
其也是通过一个sigmoid函数结果来决定哪些细胞状态会被输出,主要步骤如下:
- 前一次的输出h和当前的时间步的输入x通过sigmoid函数得到O_t
- 更新后的 细胞状态C_t会经过tanh处理得到一共-1到1的结果
- 将tanh处理后的结果和O_t进行相乘,得到的结果输出并同时传入下一个LSTM单元
总结一下LSTM的3个输入和输出:
- 输入:前一个节点隐的输出h_t-1,当前节点输入x_t,前一个节点细胞状态(记忆)C_t-1
- 输出:当前节点的输出h_t,传入下一个节点输出h_t,当前节点细胞状态(记忆)C
GRU
GRU(Gated Recurrent Unit),是一种LSTM的变形版本,它将遗忘和输入门组合成一个“更新门”。它还合并了单元状态和隐藏状态,并进行了一些其他更改,由于他的模型比标准LSTM模型简单,所以越来越受欢迎。
总体来说,GRU有两个特点:
- 两个门:更新门和输出门
- 两个输入和输出
双向LSTM
单向的RNN,是根据前面的信息推出后面的,但有时候只看前面的词是不够的,可能需要预测的词语和后面的内容也相关,那么此时需要一种机制,能够让模型不仅能够从前往后的具有记忆,还需要从后往前需要记忆。此时双向LSTM就可以帮助我们解决这个问题。如下图所示:
由于是双向LSTM,所以每个方向的LSTM都会有一个输出,最终的输出会有2部分,所以往往需要concat的操作。
双向GRU同理可得。
文章出处登录后可见!