RNN
递归神经网络是一种神经网络,用于处理本质上是序列的数据。序列数据是一种数据类型,其中时间步长T的数据值取决于时间步长小于T的数据值,例如声波,文本语句,股市价格等。在股市价格预测问题中,给定数据下的股票开盘价价值取决于前几天的股票开盘价。
在递归神经网络中,在每个时间步长,神经元的先前输出也将通过权重向量乘以当前输入。从上图可以看到,神经元的输出被循环回下一个时间步长。下图使这个概念更进一步清楚
LSTM
递归神经网络的一个问题是,尽管它可以捕获较短的序列,但往往会忘记较长的序列。
原因:递归神经网络由多个递归层组成,这导致了梯度消失问题。梯度消失问题是,在递归层的反向传播期间,较早层的梯度变得无限小,这实际上使神经网络的初始层停止学习任何东西。
LSTM是RNN的一种,它能够记住更长的序列,因此是序列任务中最常用的RNN之一。
在LSTM中,有四个交互的单元,而不是循环单元中的单个单元,即,遗忘门,输入门,更新门和输出门。
细胞状态
LSTM中的细胞单元状态负责记住一个长序列。下图描述了细胞单元状态:
细胞单元状态包含序列中所有先前单元的数据。LSTM可以往细胞单元里面加入或者移除信息。换句话说,LSTM告诉单元状态要记住的先前信息的哪一部分以及要忘记的信息。
遗忘门
遗忘门基本上告诉了细胞状态,从上一步中哪些信息被保留,哪些信息要遗忘。遗忘门的工作和计算公式如下:
输入门
遗忘门用于确定要记住或忘记的信息。输入门负责在细胞状态里更新或添加任何新的信息。输入门有两个部分:一个输入层,决定要更新单元状态的哪一部分;一个tanh层,它实际上创建一个包含在细胞状态中新添加的或者被代替的数值的向量。下图说明了输入门的工作:
更新门
遗忘门告诉我们要忘记什么,输入门告诉我们要添加到单元状态的内容。下一步是实际执行这两个操作。更新门基本上用于执行这两个操作。更新门的功能和方程式如下:
输出门
最后,你有一个输出门,它可以输出隐藏状态,而输出就像普通的递归神经网络一样。LSTM节点的附加输出是单元状态,它按顺序在所有节点之间运行。下图描述了输出门的方程式和功能: