
LSTM详解,你学会了吗?
LSTM即long short term memory,是RNN神经网络的改进版本。它与RNN的不同之处就在于,它引入了细胞状态这样一种概念,不同于RNN只考虑最近的状态,LSTM的细胞状态会决定哪些状态留下来,哪些状态被遗忘。这样即使很久以前的状态也会对下一步的预测作出影响,很大程度上的弥补了RNN的缺陷。
不同于RNN单一神经网络层,LSTM有四个神经网络层,如下图所示:
首先先熟悉一下上图中图标的含义
在上面的图例中,每一条黑线传输着一整个向量,从一个节点的输出到其他节点的输入。粉色的圈代表 pointwise 的操作,诸如向量的和,而黄色的矩阵就是学习到的神经网络层。合在一起的线表示向量的连接,分开的线表示内容被复制,然后分发到不同的位置。
LSTM的细胞状态指的就是运行在链上的状态C
但细胞状态C只能记录信息的状态,并不能对信息进行筛选或更新,此功能是通过一种叫门的结构来实现的,而门主要是通过一个 sigmoid 的神经层 和一个逐点相乘的操作来实现的。
sigmoid层输出一个0-1之间的实数,此实数表示让信息通过的权重。比如0是完全不通过,1是全部通过。
而LSTM正是通过三个这样的门结构来实现信息的传递和筛检。这三个门分别是输入门、遗忘门和输出门。
LSTM---遗忘门
在LSTM中,第一步是决定从细胞状态中丢弃什么信息,这一步我们通过一个叫做遗忘门的层来完成。该层读取ht-1和xt,输出0-1之间的权重给细胞状态Ct-1。其中ht-1是上一个细胞的输出,xt是当前细胞的输入。该遗忘门结构如下图所示:
LSTM---输入门
输入门主要是对信息进行更新,该门包括两个步骤:首先input gate layer的sigmoid层决定哪些内容需要进行更新,然后tanh层生成用来更新的内容。最后把这两个状态结合起来对细胞状态进行更新。
接下来我们对细胞状态进行更新,用旧的细胞状态与ft相乘,确定哪些信息需要丢弃。然后加上it*Ct,对细胞状态进行更新。
LSTM---输出门
最终,我们需要确定输出什么值。这个输出将会基于我们的细胞状态,但是也是一个过滤后的版本。首先,我们运行一个 sigmoid 层来确定细胞状态的哪个部分将输出出去。接着,我们把细胞状态通过 tanh 进行处理(得到一个在 -1 到 1 之间的值)并将它和 sigmoid 门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。
其中遗忘门,输入门和输出门的权重W和b都是通过误差反向传播学习得到的,下一篇将会对权重的学习和更新进行详细解释。
本文转载自人工智能训练营,作者:人工智能训练营
