记忆 c ≠ 当前输出 h
c 是沿时间传递的内部记忆;h 是由当前记忆生成的输出特征,也会参与下一步门的计算。输出门关小,不等于直接清空 c。
拆开当前时间步
时间向右 → 这些是同一个 LSTM 单元在不同时刻的展开,共享参数;上方传记忆 c,下方传输出 h。
教学演示:聚焦一个记忆分量,使用预设权重进行标准 LSTM 计算,显示值已四舍五入。输入文字是读图标签,并非模型理解了这些文字。实际网络有许多记忆分量并行工作。
先试“暂不输出”,再试“全部忘掉”。观察右侧两条线是否一起变化。
门的开度通常由当前输入与上一时刻输出共同计算,训练学习的是这些计算中的参数。
c 是沿时间传递的内部记忆;h 是由当前记忆生成的输出特征,也会参与下一步门的计算。输出门关小,不等于直接清空 c。
门通常给出 0~1 之间的数。遗忘门回答“旧内容保留多少”,输入门回答“新内容写入多少”;候选内容本身则可以是正数或负数。
当遗忘门接近 1、输入门接近 0 时,旧内容较容易沿记忆通路保留。能记多久取决于门值、参数和任务,LSTM 并不保证无限记忆。
本页展示单层、单向、无窥孔连接的一个标量 LSTM。三个门使用 sigmoid,候选内容和输出前的压缩使用 tanh;所有时间步使用同一套权重。手动开度属于教学干预,不是重新训练,后续状态会据此重新计算。
普通 RNN 也可以学习时间依赖,不能概括成“每步固定忘掉一半”。LSTM 的特点是增加单独的记忆通路和门控更新,让跨时间的信息保留更容易被调节。
结构依据:PyTorch LSTM 文档 ↗ · LSTM 原始论文(1997)↗。本页采用含遗忘门的常见现代结构,不能将所有细节归于 1997 年原版。
LSTM 每一步都在做同一件事:选择保留旧内容,选择写入新内容,再选择输出多少。
LSTM 是为了让网络「记得住很久以前的事」而设计的。它的核心是一条贯穿时间的记忆通路,加上三道闸门:遗忘门决定旧记忆保留多少,输入门决定新内容写进去多少,输出门决定这一步向外吐出多少。这一页把每道门的开度都做成了可以看的数字。
上面那条横贯的线是记忆通路 c,下面那条是输出 h。每个时间步里,当前输入和上一步的输出被合在一起,同时送给四个计算模块:三道门和一份候选内容。注意页面的提示——三道门是并列算出来的,不是串联的,图里拆成几步只是为了看清楚。
新记忆的构成是两部分相加:旧记忆乘以遗忘门的开度,加上候选内容乘以输入门的开度。把遗忘门调到接近 0,之前记住的东西一步之内就没了;调到接近 1 而输入门接近 0,记忆就原封不动地往下传。切换三种情境(记住再取用、旧线索换新的、什么时候才算忘掉),能看到同一套机制在不同任务下的门开度完全不同。
本页聚焦单个记忆分量,使用预设权重按标准 LSTM 公式计算,显示值经过四舍五入。