LSTM的直观解释
递归神经网络(RNN)与前馈神经网络不同,它存在反馈连接,信息流在同一层的神经元之间或从高层神经元流向低层神经元。
反馈连接的存在使RNN能够执行需要记忆的任务。这是因为网络保留了有关其先前状态的信息。更具体地说,网络在t时间向自己传输要在t+1时刻使用的信息(连同t+1时收到的外部输入)。因此,网络的行为受到它在某一时刻收到的输入的影响,也受到网络在前一时刻发生的事情的影响(反过来又受到前几个时刻的影响)。
LSTM架构
长短时记忆(LSTM)是由Sepp Hochreiter和Jürgen Schmidhuber在1997年设计的一种循环神经网络架构。
LSTM架构由一个单元组成,即记忆单元(也称为LSTM单元)。LSTM单元是由四个前馈神经网络组成的。这些神经网络中的每一个都由一个输入层和一个输出层组成。在每个神经网络中,输入神经元都与所有输出神经元相连。因此,LSTM单元有四个完全连接的层。
四个前馈神经网络中有三个负责选择信息。它们是遗忘门、输入门和输出门。这三个门用于执行三个典型的内存管理操作:从内存中删除信息(遗忘门),在内存中插入新信息(输入门),以及使用内存中存在的信息(输出门)。
第四个神经网络,即候选存储器,用于创建新的候选信息,以插入存储器中。
图1:LSTM单元的结构 (Credit: https://d2l.ai/chapter_recurrent-modern/lstm.html)
输入和输出
一个LSTM单元接收三个向量(三个数字列表)作为输入。两个向量来自LSTM本身,由LSTM在前一瞬间(瞬间t-1)生成。这些是单元状态(C)和隐藏状态(H)。第三个向量来自外部。这是瞬间t时提交给LSTM的向量X(称为输入向量)。
给定三个输入向量(C、H、X),LSTM通过门来调节内部信息流,并转换细胞状态和隐藏状态向量的值。在下一个瞬间(瞬间t+1),这些向量将成为LSTM输入集的一部分。信息流控制是这样做的:单元状态作为长期记忆,而隐藏状态作为短期记忆。
在实践中,LSTM单元使用最近的过去信息(短时记忆,H)和来自外部的新信息(输入向量,X)来更新长期记忆(单元状态,C)。最后,它使用长期记忆(细胞状态,C)来更新短期记忆(隐藏状态,H)。瞬间t确定的隐藏状态也是LSTM单元在瞬间t的输出。它是LSTM为执行特定任务向外界提供的东西。换句话说,它是评估LSTM性能的行为。
闸门
三个门(遗忘门、输入门和输出门)是信息选择器。它们的任务是创建选择器向量。一个选择器向量是一个数值在零和一之间的向量,并且接近这两个极端。
一个选择器向量的创建是为了被另一个同样大小的向量逐元素相乘。这意味着选择器向量的值等于零的位置完全消除了(在逐个元素的乘法中)另一个向量中同一位置的信息。选择器向量的值等于1的位置不改变(在逐个元素的乘法中)另一个向量中相同位置所包含的信息。
这三个门都是神经网络,在输出层使用sigmoid函数作为激活函数。sigmoid函数被用来作为输出,有一个由零和一之间的值和接近这两个极端的值组成的向量。
所有三个门都使用输入向量(X)和来自前一瞬间的隐藏状态向量(H_[t-1]),并将其串联成一个向量。这个向量是所有三个门的输入。
遗忘之门
在任何时间t,LSTM接收一个输入向量(X_[t])作为输入。它还收到前一瞬间(t-1)确定的隐藏状态(H_[t-1])和单元状态(C_[t-1])矢量。
LSTM单元的第一个活动是由遗忘门执行的。遗忘门决定(基于X_[t]和H_[t-1]向量)从时间t-1而来的单元状态向量中删除哪些信息。这个决定的结果是一个选择器向量。
图2:遗忘门
选择器向量与LSTM单元接收到的细胞状态向量逐一相乘,作为输入。这意味着选择器向量的值等于0的位置完全消除了(在乘法中)包含在细胞状态中同一位置的信息。选择器向量的值等于1的位置不改变(在乘法中)细胞状态中同一位置所包含的信息。
输入门和候选存储器
在去除输入中收到的细胞状态(C_[t-1])的一些信息后,我们可以插入一个新的状态。这一活动是由两个神经网络进行的:候选存储器和输入门。这两个神经网络是相互独立的。它们的输入是向量X_[t]和H_[t-1],一起串联成一个向量。
图3:输入门和候选存储器_
候选存储器负责生成一个候选矢量:一个候选信息的矢量,被添加到细胞状态中。
候选记忆输出神经元使用双曲切线函数。这个函数的属性确保了候选向量的所有值都在-1和1之间。这被用来规范将被添加到细胞状态的信息。
输入门负责生成一个选择器向量,该向量将与候选向量逐元相乘。
选择器向量和候选向量是逐个元素相乘的。这意味着,选择向量的值等于0的位置完全消除(在乘法中)包含在候选向量中同一位置的信息。选择器向量的值等于1的位置,则在候选向量的同一位置上所包含的信息没有变化(在乘法中)。
候选向量和选择器向量之间的乘法结果被添加到细胞状态向量中。这就给细胞状态增加了新的信息。
单元状态在被我们所看到的操作更新后,被输出门使用,并进入LSTM单元在下一个瞬间(t+1)使用的输入集。
输出门
输出门决定了LSTM(在瞬间t)输出的隐藏状态的值,并由LSTM在下一个瞬间(t+1)的输入集接收。
输出的生成也是通过选择器向量和候选向量之间的乘法进行的。然而,在这种情况下,候选向量不是由神经网络生成的,而是通过对细胞状态向量使用双曲正切函数获得的。通过这种方式,在与选择向量(其值在0和1之间)相乘后,我们得到一个值在-1和1之间的隐藏状态。
图4:输出门
选择器向量是由输出门根据它收到的X_[t]和H_[t-1]的值作为输入生成的。输出门使用sigmoid函数作为输出神经元的激活函数。
选择器向量和候选向量是逐个元素相乘的。这意味着,选择向量的值等于0的位置完全消除(在乘法中)包含在候选向量中同一位置的信息。选择器向量的值等于1的位置,则在候选向量的同一位置上所包含的信息没有变化(在乘法中)。
通过时间的反向传播
神经网络的输出Y取决于信息流,这些信息流通过放置在一个链条上的许多元素。这些元素中的每一个都是以这样的方式制作的,即其输出值的小幅增加会影响所有后续元素输出值的增加(或减少),直到网络的输出(Y)。误差最小化是通过计算特定元素输出值的增加与网络误差的增加之间的比率来实现的。这项活动被称为 "反向传播"(Backpropagation)。
逆传播允许计算误差梯度。对于具有不同输入的函数,梯度概括了导数的概念。导数的概念将(瞬时和无限小的)增量之间的比率的想法正式化。
逆向传播利用了连锁规则的数学技术。链式规则背后的直觉是:如果误差E的增长速度是Y的增长速度的两倍,而Y的增长速度是D的增长速度的两倍,那么我们可以得出结论,误差E的增长速度是D的增长速度的四倍。我们通过两个比率(两个导数)相乘得出这个结论。
在RRNs中,信息的流动不仅仅是通过神经网络的元素发生。它也会随着时间的推移而发生。网络在时间t所犯的错误也取决于从以前收到的信息和在这些时间段内的处理。因此,在RRN中,反向传播也考虑了各时间段之间的依赖关系链。由于这个原因,它被称为通过时间的反向传播(BPTT)。
RNNs和长期记忆
在基本的RRN架构中,随着时间的推移,信息的流动是这样进行的:由应用链式规则(在通过时间的反向传播过程中)确定的乘积由许多因素组成。一般来说,如果许多因素接近于零,那么产品将非常接近于零。另一方面,许多大于1的因子会导致一个非常大的乘积。
对RNN的研究强调了在基本的RNN结构中,随着所考虑的时间时刻的增加,由反向传播通过时间决定的乘积链如何趋向于零或趋向于极大的值。在第一种情况下,我们有一个消失的梯度,在第二种情况下有一个爆炸的梯度。
学习是通过改变网络的权重来进行的,其方向与通过时间进行反向传播的乘积链中的计算方向相反。这是因为,如果一个权重的增加导致了误差的增加,那么我们可以通过减少权重(以增加的相反方向改变)来减少误差。因此,消失和爆炸的梯度对学习有影响。在梯度消失的情况下,权重的修改是微不足道的(它非常接近于零)。如果是爆炸性梯度,这个任务在计算上可能是不可能的。
梯度消失和爆炸问题意味着基本的RRN只能表现出基于短期记忆的行为,因此在通过时间的反向传播过程中,它不能确定非常长的产品链。
梯度爆炸的问题可以用梯度剪裁的技术来解决(https://machinelearningmastery.com/how-to-avoid-exploding-gradients-in-neural-networks-with-gradient-clipping/)。梯度消失的问题反而更难解决。
LSTM和长期记忆
LSTM结构通过控制通过门的信息流来对比消失的梯度问题。在一个LSTM单元中,信息的流动是这样进行的:通过时间的误差反向传播取决于单元的状态。这意味着通过时间的误差反向传播使用(在乘积链中)的因子,即某一瞬间的单元状态与前一瞬间的单元状态之间的(瞬时和无限小)增长比率(∂C_[t]/∂C_[t-1])。LSTM的结构是这样的:这个比率是四个神经网络(门和候选存储器)的效果之和。LSTM学习(在学习阶段)如何控制这些影响。
从数学的角度来看,前面的观察意味着LSTM能够控制通过时间反向传播产生的产品链中的数值:LSTM可以学习如何调节四个网络对∂C_[t]/∂C_[t-1]因子的影响,以支配最终产品的行为(在通过时间反向传播产生的产品链中)。
通过时间来学习控制反向传播产生的产品链的能力使LSTM架构能够对比消失的梯度问题。由于这个原因,LSTM架构不仅能够表现出基于短期记忆的行为,还能表现出基于长期记忆的行为。
主要参考资料
https://medium.com/@ottaviocalzone/an-intuitive-explanation-of-lstm-a035eb6ab42c