深度学习视频理解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2.3 LSTM

LSTM计算过程的数学形式如下:

img

(2.27)

其中,img表示逐元素相乘,img表示 Sigmoid 函数img。和RNN 相比,LSTM 多了一个隐状态变量img,称为细胞状态(Cell State),用来记录信息。式(2.27)看起来似乎十分复杂,这是因为公式一次性把 LSTM的所有细节都展示出来了,但是突然暴露这么多细节会使读者眼花缭乱,从而无处下手。因此,本节提出的方法旨在简化门控机制中相对不重要的部分,从而更关注在LSTM的核心思想。整个过程称为“三次简化一张图”,具体流程如下。

(1)第1次简化:忽略门控单元imgimgimg的来源。3个门控单元的计算方法完全相同,都是由输入经过非线性变换得到的,区别只是计算的参数不同:

img

(2.28)

使用相同计算方式的目的是它们都扮演了门控的角色,而使用不同参数的目的是为了在误差反向传播阶段对3个门控单元独立地进行更新。在理解 LSTM 运行机制的时候,为了对图进行简化,我们不在图中标注3个门控单元的计算过程,并假定各门控单元是给定的。

(2)第2次简化:考虑一维门控单元imgimgimg。LSTM中对各维是独立进行门控的,所以为了表示和理解方便,我们只需要考虑一维情况,在理解 LSTM 原理之后,将一维推广到多维是很直接的。经过这两次简化,LSTM的数学形式只有下面3行:

img

(2.29)

由于门控单元变成了一维,所以向量和向量的逐元素相乘img变成了标量和向量相乘。

(3)第3次简化:各门控单元二值输出。门控单元imgimgimg由于经过了Sigmoid 激活函数,输出范围是img。使用Sigmoid 激活函数的目的是为了近似 0/1 阶跃函数,这样 Sigmoid 实数值输出单调可微,可以基于误差反向传播进行更新,如图2-27所示。

img

图2-27 Sigmoid 函数和单位阶跃函数

既然 Sigmoid 激活函数是为了近似 0/1 阶跃函数,那么,在进行 LSTM 理解分析的时候,为了理解方便,我们认为各门控单元输出是img二值,即门控单元扮演了开关的角色,用于控制信息的通断。

(4)一张图。将3次简化的结果用图表示出来,左边是输入,右边是输出。在LSTM中,有一点需要特别注意,LSTM中的细胞状态img实质上起到了RNN中隐层单元img的作用,否则只看img的变化是很难看出 LSTM的原理的,这点在其他资料中不常被提到。因此,整个图的输入是img,而不是img。为了方便画图,我们需要将公式做最后的调整:

img

(2.30)

最终画出的原理图如图2-28所示。和RNN 相同的是,网络接受两个输入,得到一个输出。其中使用了两个参数矩阵img,以及img激活函数。不同之处在于,LSTM中通过 3 个门控单元img来对信息交互进行控制。当img(输入门开关闭合)、img(遗忘门开关打开)、img(输出门开关闭合)时,LSTM 退化为标准的RNN。

img

图2-28 LSTM 运行原理图

根据原理图,我们可以对 LSTM中各单元的作用进行分析。

● 输出门img:输出门的目的是从细胞状态img产生隐层单元img。并不是img中的全部信息都和隐层单元img有关,img可能包含了很多对img无用的信息。因此,img的作用就是判断img中哪些部分是对img有用的,哪些部分是无用的。

● 输入门imgimg控制当前词img的信息融入细胞状态img。在理解一句话时,当前词img可能对整句话的意思很重要,也可能并不重要。输入门的目的就是判断当前词img对全局的重要性。当img(输入门开关打开)的时候,网络将不考虑当前输入img

● 遗忘门imgimg控制上一时刻细胞状态img的信息融入细胞状态img。在理解一句话时,当前词img可能继续延续上文的意思继续描述,也可能从当前词img开始描述新的内容,与上文无关。和输入门img相反,img不对当前词img的重要性进行判断,而判断的是上一时刻的细胞状态img对计算当前细胞状态img的重要性。当img(遗忘门开关打开)的时候,网络将不考虑上一时刻的细胞状态img

● 细胞状态imgimg综合了当前词img和前一时刻细胞状态img的信息。这和ResNet中的残差逼近思想十分相似(见 2.1.6 节),通过从imgimg的“短路连接”,梯度得已有效地反向传播。当img(遗忘门开关闭合)时,img的梯度可以直接沿着最下面这条短路线传递到img,不受参数img的影响,这是LSTM 能有效地缓解梯度消失现象的关键所在。