RNN
RNN:Recurrent Neural Networks,循环神经网络,能够应用于空间或时间先后相关的场景,比如文字解析、语音识别。
RNN模型结构简单描述,如下图:
其中X0、X1、……、Xt,可以理解成多个输入,或者对单个输入拆分成的多个输入,比如一张图片的多个字符拆分、语音的拆分等等;h0、h1、…、ht可以理解成多个输出,通常也可能最终被concat到一起,做为一个输入。
上图是单向的,也就是h1会受h0的影响,h2会受h1、h0的影响,…,但反过来不会。RNN网络也会有双向的情况,使前后互相影响。
LSTM
LSTM:Long Short Term Memory,长短期记忆神经网络,RNN中的一类,用来避免长期依赖问题,被Alex Graves
改良和推广。
LSTM模型结构简单描述,如下图:
每个LSTM单元有两个状态传递:Ct (细胞状态) 和ht (隐藏状态)。通常Ct的更新比较慢,ht更新比较快。
LSTM可以拆分成4个步骤fico: forget gate、input gate、cell、output gate。
遗忘门 (forget gate)
σ是sigmoid函数,产生0到1直接的数值,决定Ct-1更新多少,可以理解成丢弃多少,所以称作遗忘门。
实际应用中,C0和h0可以是全0向量(caffe),也可能是权重(onnx)。
输入门 (input gate)
it也是由sigmoid函数更新,决定对输入更新多少; \(\widetilde{C}_{t}\) 由tanh函数实现,决定有多少数据会添加到细胞状态中。
细胞状态更新 (cell)
通过前面的遗忘门和输入门,对细胞状态更新Ct-1到Ct,作为一个单元的细胞状态输入。
输出门 (output gate)
其中ht即是本层的输出,也是下一个单元的隐藏输入。
由于LSTM参数很多,训练难度大,通常会使用参数更少的GRU。