跳到主内容

什么是 LSTM?循环网络怎么记住更久

2026-10-06 发布 来源:我告诉你AI导航 阅读

在 AI 处理序列数据时,用输入法打一句话,打到句末它还能想起句首的主语是什么,这类记住前文的能力,普通循环网络做得并不好。信息往前传十几步就淡得差不多了,这是循环结构的老毛病。LSTM 就是为这件事设计的:它在原有状态之外多开了一...

在 AI 处理序列数据时,用输入法打一句话,打到句末它还能想起句首的主语是什么,这类记住前文的能力,普通循环网络做得并不好。信息往前传十几步就淡得差不多了,这是循环结构的老毛病。LSTM 就是为这件事设计的:它在原有状态之外多开了一条通道,让网络自己决定哪些信息值得一路带下去。要理解它,得先看清普通循环网络是在哪一步开始忘事的。

普通循环网络从第几步开始忘

循环网络每读一个输入,就把上一步的状态乘一个权重矩阵、加上当前输入的影响,得到新状态。信息要传到后面,就得反复经过这个乘法。问题在于,如果权重矩阵的尺度略小于 1,每乘一次状态就缩一点,传十几步之后,早期信息只剩下一个几乎可以忽略的残值。反向传播时更糟:梯度要沿着同一条路径连乘回去,连乘一串小于 1 的数,梯度迅速趋近于零,前面那些步的权重几乎收不到有效的更新信号。这就是长依赖学不动的机制性原因。

多出来的那条通道

LSTM 的改法很直接:在隐藏状态之外,再加一条贯穿整条序列的单元状态。这条通道上的更新以加法为主,不必每步都整体做一次矩阵乘法。

结构状态更新方式梯度回传路径参数量解决什么
普通循环单元每步整体乘权重矩阵长链连乘,快速衰减一组权重短序列的时序建模
LSTM 单元状态旧状态乘一个门,再加新内容加法旁路,衰减慢另加三组门权重跨较长距离的信息保留
LSTM 隐藏状态由单元状态经输出门筛出仍需经过门控含在门权重内对外暴露当前时刻的表征

表格第二行是核心。单元状态的更新写成「旧状态乘以遗忘门,加上新候选乘以输入门」,遗忘门取接近 1 时,旧状态几乎原样传下去,梯度回传时也就不必穿过一串乘法。这让网络有能力选择记住,而不必被迫遗忘。

三个门分别在决定什么

门本身是一个小网络,输入是当前数据和上一步的隐藏状态,输出经压缩后落在 0 到 1 之间,相当于一个可学习的开关。遗忘门管旧信息留多少:遇到段落结束、话题切换,它会把上一段的残留清掉。输入门管新信息写多少:遇到关键实体、否定词这类不该丢的内容,它开得大一些。输出门管当前状态对外暴露多少:内部记着的东西不必全部摊到输出上,这一步相当于做了一次筛选。三个门共用同一套输入,但各自有独立的权重,所以能学到不同的取舍策略。

为什么「加」比「乘」更抗衰减

关键在于梯度沿加法路径回传时,不需要连乘一串雅可比矩阵。单元状态的梯度大致按遗忘门的取值逐级传递,遗忘门接近 1 时,梯度几乎无损地穿过多步。这一点和残差连接的道理相通:给梯度开一条短路径,深层或长距离的参数也能拿到有效信号。要注意的是,这只缓解了衰减,没有消除它——遗忘门如果学到偏小的值,梯度照样会衰减,只是衰减的快慢由网络自己控制,不再由固定权重决定。

它仍然记不住什么

LSTM 的记性有上限。序列长到几百上千步时,即使有门控,信息仍会逐级稀释,实践中很少指望它稳定记住开头的内容。它还有一个结构性的限制:必须按顺序一步步算,无法并行,训练长序列时硬件利用率低,这在数据规模上去之后成为硬约束。另外,它对大致内容的记忆强于对精确位置的记忆,需要精确指代的任务里容易出错。最后一点常被忽略:门控参数多,小数据上容易 过拟合,序列不长、样本不多的场景,简单结构反而更稳。想对照不同门控设计的取舍,可以看 GRU 如何把三个门简化成两个。

今天还用不用它

大部分需要长距离建模的任务已经转向 注意力机制:后者能直接建立任意两个位置的联系,不必靠逐步传递,而且可以并行训练。LSTM 的位置退到了几类场景:对延迟和内存有硬约束的端侧设备,逐帧到来的流式输入,以及序列极长但单步计算必须很轻的场合。语音唤醒、传感器信号处理、部分 时间序列 预测里仍能看到它。判断一个方案该不该用它,看两点:数据是不是严格流式到达,以及能不能接受顺序计算带来的训练成本。两点都成立时,它仍然是一个参数少、推理稳的选择。

速查:LSTM 记忆机制

  • 普通循环网络反复乘权重,十几步后信息与梯度一起衰减
  • 单元状态走加法旁路,梯度不必连乘一串小系数
  • 遗忘门管旧信息,输入门管新信息,输出门管暴露多少
  • 三个门各有一组权重,参数约为普通循环单元的四倍
  • 超长序列仍会稀释,且无法并行,这是它的硬边界

反馈页面信息

请描述需要更正的地方,页面标题和网址会自动附上。

也可以发邮件至 [email protected]