理解本文需要读者有RNN基础,关于RNN可参考《RNN循环神经网络》
1 背景
LSTM最早是1997年被提出的,由于深度学习的兴起,形成了完整的框架。LSTM是用于解决RNN处理长序列时梯度消失或梯度爆炸问题。
2 结构

LSTM各个层的结构一致,上图是LSTM中间某一层的结构。与RNN相比,逻辑更复杂,这样的结构能够避免RNN梯度消失或梯度爆炸问题,兼顾长期和短期的记忆。而RNN的结构如下图所示。

3 设计直觉
以柯南破案为例,构造一个LSTM模型,其中输入是一系列的线索,输出推理结论。LSTM的输出最后可以接一个概率分类器,输出每个嫌疑人是案犯的概率。
|------|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|
| 符号 | 含义 | 例子中类比对象 |
| x(t) | t时刻输入 | t时刻接收到的线索 |
| h(t) | t时刻隐藏状态 | t时刻学习到的特征或推理结果。它表示t时刻的短期记忆 |
| c(t) | t时刻细胞状态/工作记忆/长期记忆 | 表示t时刻掌握各个嫌疑人的信息。工作记忆是心理学和认知科学领域的概念,指的是个体在执行认知任务(如推理、学习、语言理解等)时,用于暂时存储和操作信息的一种有限容量的记忆系统。它就像大脑的 "工作台",在短时间内保持和处理当前需要关注的信息,例如我们在做数学心算时,暂时记住中间计算步骤的能力就依赖于工作记忆 |
3.1 遗忘过程
随着线索的增多和推理的进行,有些嫌疑人被排除,那么其相关的信息需要被遗忘。相反,有些很久以前的重要线索时至今日依然有效,这部分信息就不能被遗忘。
遗忘门根据上一时刻的推理h(t-1)和当前时刻接收到的线索x(t),决定工作记忆c(t)中各部分内容遗忘的比例。作用是清理无用信息。
举例:
情况1:上一时刻推理是"嫌疑人是左撇子",当前时刻接收到的线索是"小李惯用手是右手",那么在柯南的工作记忆中将排除小李的嫌疑,后续对于小李的信息将抹除
情况2:相反,如果当前时刻接收到的线索是"小红惯用手是左手",那么后续对于小红的记忆不会抹除。
3.2 输入过程
当接收到有价值的线索时,就要把这部分信息保存到工作记忆中。
输入门是根据上一时刻的推理h(t-1)和当前时刻接收到的线索x(t),决定存入工作记忆c(t)中的比例和内容,作用是记忆有价值的线索。比较特别的是此处既输出比例,又输出内容,二者相乘才得到最终内容,而不是直接输出最终内容,这是与遗忘过程相对应的,遗忘过程是计算出遗忘比例,再用比例乘原始长期记忆。
举例:
情况1:上一时刻推理是"嫌疑人是左撇子",当前时刻接收到的线索是"小李惯用手是右手,小李的社会关系有甲乙丙丁",那么生成候选记忆是小李的信息(比如社会关系),但存入比例为0,因此不会把候选记忆存入工作记忆中
情况2:当前时刻接收到的线索是"小红惯用手是左手。小红案发前去过五金店",那么生成的候选记忆是小红的信息(比如行程),存入比例较高,会把候选记忆存入工作记忆中。
3.3 工作记忆更新
即根据遗忘门和输入门,利用遗忘比例和保存比例,对上一时刻的工作记忆c(t-1)和当前时刻候选记忆c'(t)进行遗忘或保存,该遗忘的遗忘,该保存的保存。
3.4 输出过程
作用是根据已有信息做决策,形成中间推理结果。但并不是直接将已有信息提取出来,而是计算一个比例值,决定哪些部分提取比例高,哪些部分提取比例低。比例依然是由上一时刻的推理h(t-1)和当前时刻接收到的线索x(t)决定的。
例如,当前时刻接收到的线索是"小红惯用手是左手。小红案发前购买过刀具",那么对于小红信息的提取比例较高,将其信息提取后,经过加工(tanh),将推理出小红的作案嫌疑较大。
例如,当前时刻接收到的线索是"凶手被受害人划伤",柯南开启尘封的记忆,想起来小红手指包着创可贴,那么将小红信息的提取比例较高。"小红手指包着创可贴"这个记忆很可能是很久之前看到过的,但仍能够对当前的推理产生帮助。
可以发现,输入的线索和上一时刻的短期记忆(统称为线索)通过输入门和遗忘门形成长期记忆,实现了线索到长期记忆的转化,在未来合适的时间线索将会触发,产生影响。
4 计算过程
4.1 遗忘门

作用:遗忘门用于控制上一时刻的长期记忆有多少比例保留到当前时刻。
计算方法:上一时刻输出h(t-1)与当前时刻输入xt拼接后,乘Wf做线性变换,添加偏置bf后,经过Sigmoid函数得到ft。f代表forget。ft是一个0到1之间的比例,在下文工作记忆的计算中可以看到,ft表示长期记忆有多少比例保留到当前时刻。这里Wf和bf是需要训练的参数。
4.2 输入门

作用:输入门用于更新长期记忆。其中i(t)表示当前时刻信息有多少比例更新到长期记忆里,C(t)表示产生的当前时刻信息。
计算方法:i(t)与遗忘门类似,只是参数换成了W(i)和b(i),i表示input。将参数换成W(c)和b(c),再经过tanh激活得到了C(t),其中c代表cell。
4.3 输出门

作用:输出门用于筛选长期记忆中有用的信息,并将此信息输出。
计算方法:与输入门类似,只是参数换成配Wo和bo,其中o代表output,h代表hidden。
4.4 长期记忆

将遗忘门和输入门的结果结合,得到更新后的长期记忆。
4.5 sigmoid和tanh
sigmoid输出0-1的数值,在LSTM中类似于筛选器,按重要性对信息进行筛选。
tanh输出-1到1的数值,在LSTM中起到激活的作用,并增加非线性。