小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
一、网络结构
LSTM具有RNN的优势,具有记忆能力,但他是对有价值的信息进行记忆,放弃了冗余记忆,从而减小了学习难度。与RNN相比,LSTM的神经元还是基于输入X和上一级的隐藏层输出h来计算,只不过内部结构变了,也就是神经元的运算公式变了,而外部结构并没有任何变化,因此上面提及的RNN各种结构都能用LSTM来替换。LSTM之所以能筛选出有价值的记忆,是因为他的神经元中加入了输入门i、遗忘门f、输出门o和内部记忆单元c。 对于一个训练好的LSTM模型,我们要知道它的每一个门(遗忘门、输出门和输入门)都有各自的(U, W, b),上述公式也有所体现,这是在训练过程中得到的。而且当输入的序列不存在有用信息时,遗忘门f的值就会接近1,那么输入门i的值接近0,这样过去有用的信息就会被保存。当输入的序列存在重要信息时,遗忘门f的值就会接近0,那么输入门i的值接近1,此时LSTM模型遗忘过去的记忆,记录重要记忆。
下图是一个三层LSTM模型的网络结构,图中每一个方框就代表一个神经元。
下面我们看神经元的结构:
(一)遗忘门
LSTM 的第一步要决定从细胞状态中舍弃哪些信息。这一决定由所谓“遗忘门层”的 S 形网络层做出。它接收h_(t-1)和 ,并且对细胞状态𝑐_(𝑡−1)中的每一个数来说输出值都介于 0 和 1 之间。1 表示“完全接受这个”,0 表示“完全忽略这个”。
(二)输入门
下一步就是要确定需要在细胞状态中保存哪些新信息。这里分成两部分。第一部分,一个所谓“输入门层”的 S 形网络层确定哪些信息需要更新。第二部分,一个 tanh形网络层创建一个新的备选值向量—— ,可以用来添加到细胞状态。
(三)内部记忆单元
现在更新旧的细胞状态𝑐_(𝑡−1)更新到 。我们对旧的状态乘以 ,用来忘记我们决定忘记的信息。然后我们加上 ,用来保留我们要保留新的消息,这是新的候选值。
(三)输出门
最后,确定输出值。输出依赖于我们的细胞状态,首先我们运行 S 形网络层,用来确定细胞状态中的哪些部分可以输出。然后,我们把细胞状态输入 tanh(把数值调整到 −1 和 1 之间)再和 S 形网络层的输出值相乘,部这样我们就可以输出想要输出的分。
LSTM如何缓解梯度消失
之后我们看一下LSTM是如何缓解梯度消失的。我们看记忆单元反向传播的公式,从公式中我们可以发现:其结果范围不一定局限在0-1之间,而是很有可能大于1,即缓解了梯度消失。有两因素影响它的结果范围,一是他公式中的“加法”结构,起到了一定的作用,二是LSTM中逻辑门的参数可以一定程度控制不同时间步梯度消失的程度,他是主要的影响因素,而这个参数是通过学习得到的,这也是LSTM的厉害之处。