长短期记忆网络 LSTM 是什么?用门控机制记住长期信息的循环网络
长短期记忆网络(Long Short-Term Memory,LSTM)是一种特殊的循环神经网络,由 Sepp Hochreiter 和 Jürgen Schmidhuber 在 1997 年提出。它通过精心设计的“门”结构,让网络能够有选择地记住或遗忘信息,从而能够学习序列中相隔很远的元素之间的关系。在 Transformer 出现之前,它是处理语音、文本、时间序列等序列数据最主要的神经网络。
它要解决的问题
普通的循环神经网络在每个时间步都把当前的输入和上一步的隐藏状态结合起来,得到新的隐藏状态,以此来“记住”过去的信息。但在训练时,误差需要沿着时间一步步往回传,每一步都要乘以一个因子,经过很多步之后,梯度会以指数的速度衰减,这就是梯度消失。结果,普通的循环神经网络很难学到长期的依赖关系。比如在“我在法国长大……(中间隔了很多句话)……所以我说一口流利的法语”这段文字中,要预测最后的“法语”,需要记住很久之前提到的“法国”。Hochreiter 在 1991 年的毕业论文中就分析了这一问题,长短期记忆网络正是为了解决它而设计的。
核心:细胞状态和三个门
长短期记忆网络在普通的隐藏状态之外,增加了一条“细胞状态”,可以把它想象成一条贯穿整个序列的传送带,信息可以在上面相对平稳地流动,只经过少量的线性运算,因此梯度也能稳定地沿着它传递很远。对细胞状态的修改由三个门来控制,每个门都是一个用 Sigmoid 函数输出 0 到 1 之间数值的小网络,0 表示完全关闭,1 表示完全打开。遗忘门:决定细胞状态中哪些旧信息应该被丢弃,比如读到新的主语时,可以忘掉旧主语的信息。输入门:决定哪些新信息应该被写入细胞状态,配合一个用 Tanh 函数生成的候选值一起使用。输出门:决定细胞状态中哪些信息应该输出为当前时间步的隐藏状态。需要说明的是,1997 年最初的版本并没有遗忘门,它是 Felix Gers 等人在 2000 年加入的,如今所说的长短期记忆网络通常都包含遗忘门。
变体
门控循环单元(GRU):由 Kyunghyun Cho 等人在 2014 年提出,把遗忘门和输入门合并为一个更新门,并去掉了单独的细胞状态,结构更简单、参数更少,在很多任务上效果与长短期记忆网络相当。窥孔连接:让各个门在计算时也能看到细胞状态。双向长短期记忆网络:同时从前往后和从后往前处理序列,让每个位置都能利用完整的上下文。
辉煌与转折
2010 年代中期,长短期记忆网络取得了一系列重要的成功:在语音识别中大幅降低了错误率,谷歌、苹果等公司的语音助手都使用了它;2014 年 Ilya Sutskever 等人用它构建的序列到序列模型推动了神经机器翻译的发展,2016 年谷歌翻译全面采用了基于长短期记忆网络的神经机器翻译系统;它还被用于手写识别、文本生成、股价预测等任务。2017 年 Transformer 出现之后,由于后者可以并行计算、更容易建模长距离的依赖,在大多数自然语言处理任务上逐渐取代了长短期记忆网络。不过,在一些对计算资源和实时性要求较高的场景,以及时间序列预测中,它仍然被使用。2024 年,Hochreiter 等人还提出了扩展版的 xLSTM,探索这一架构在大模型时代的潜力;近年来流行的状态空间模型等新架构,也在重新思考如何高效地处理长序列,与循环网络的思想一脉相承。