在大屏或电脑上体验更佳——动画和操作区域更宽敞。
输入

RNN 与 LSTM

循环神经网络(RNN)逐个读取序列元素,把新输入合入隐藏状态,各步共享权重。LSTM 增加了细胞状态:它通过遗忘门缩放,再加上新内容,而不是每步完整重算。

关键区别是前向保留信息与反向传回学习信号。训练好的普通 RNN 可以答对长距离问题,但同一路径向前传值、向后传梯度的效果不同。本课中,主语信息到达句尾,反向路径的典型增益却只有约十万分之一。

普通 RNN 的两条方向

每步用当前词 x_t 和旧状态 h_(t−1) 计算:

h_t = tanh(W_x x_t + W_h h_(t−1) + b)

W_h 在所有位置复用,所以参数量不随句长增长。最后由读出层从最终状态生成答案。在这个结构中,隐藏状态承担已经读过的内容的摘要。

任务是英语主谓数一致:the keys to the desk near the door ___ 应填 are,把 keys 改成 key 则应填 is。决定标签的是第二个词。后续填充词在两种答案中来自同一词池,不能提供标签线索;成对切换主语可以检查网络是否利用了这个提示。

反向沿时间传播需计算 ∂h_T/∂h_t,由多步雅可比相乘:

∂h_t/∂h_(t−1) = diag(1 − h_t²) · W_h

矩阵乘积可以在不同方向缩小、放大或保持信号。tanh 饱和时 1 − h² 接近零。本例学出的锁存单元靠饱和保留前向值,同时削弱反向梯度;不能据此说所有记忆都必须靠饱和。

LSTM 的细胞状态路径

C_t = f_t ⊙ C_(t−1) + i_t ⊙ g_t

h_t = o_t ⊙ tanh(C_t)

i、f、g、o 来自对 (x_t, h_(t−1)) 的仿射计算及相应激活。网络学习保留多少、写入多少,以及对外暴露多少状态。沿直接细胞状态路径,旧状态只逐元素乘遗忘门再相加;反向为遗忘门值的乘积。门接近一时,这条路径衰减较慢。

这不是总导数。门也依赖旧隐藏状态,另有穿过循环矩阵的间接路径,会受相应雅可比影响。画布只比较直接细胞状态通道,展示通常称作 constant error carousel 的加性记忆思想;带遗忘门时并不自动保持常数梯度。

逐步演示:先读句子,再看反向路径

默认普通 RNN 读取 the keys to the desk near the door ___。主语和空位间有六个填充词,共九个时间步,隐藏单元 12 个,权重已经训练。

  1. h₀ = 0,从空状态开始。
  2. t = 1,读 the,状态来自 W_x 和偏置。
  3. t = 2,读 keys。描边单元是切换主语后最终值变化最大的隐藏单元,随后进入锁存状态。
  4. t = 3…8,依次读 to、the、desk、near、the、door。同一个 W_h 使用六次,锁存单元保留线索,其他状态继续变化。
  5. t = 9,读空位,从 h₉ 读出 are,显示 100%,is 显示 0%。显示经过舍入。切到 key 后答案变成 is,说明不是只输出多数类。

动画停留在正确答案,将七列之前的 keys 再次点亮,并连接箭头:若答案有误,修正信号能否回到这个词?

下方对数轴显示路径增益:∂h_T/∂h_t 的 Frobenius 范数除以 √H。它是对方向取均方根的增益,不是某个真实梯度的幅度,也不是普通算术平均。答案位置的路径是恒等映射,增益为 1.000。

反向步数时间与词相邻显示增益之比路径增益
0t = 9,空位—1.000
1t = 8,door×0.1220.122
2t = 7,the×0.0759.2e-3
3t = 6,near×0.0666.0e-4
4t = 5,desk×0.1086.5e-5
5t = 4,the×0.1921.2e-5
6t = 3,to×0.5426.8e-6
7t = 2,keys×1.3128.9e-6

到主语时,典型方向的相对信号约为十万分之一,但前向答案仍正确。具体梯度还取决于误差方向和其他路径。

均方根增益不是上界。保持最好的方向由乘积的最大奇异值给出,本例为 3.1e-5,约为均方根的 3.5 倍,仍只有约三万分之一。这个路径在所有方向都有强衰减,但更新是否有用还受损失尺度、优化器、精度和其他路径影响。

每步有效倍率也不是固定 ρ:它从 0.066 到 1.312,因为各状态的饱和程度不同。最后一步甚至放大信号,但无法弥补此前损失;七步几何平均约为 ×0.19。

同一句子的 LSTM 对照

结尾的对照节拍直接把 LSTM 的数值放在同一列,无需先切换模型。

反向步数有效倍率直接细胞状态路径增益
1×0.8670.867
3×0.8590.652
5×0.8980.524
7×0.9060.427

这些显示倍率概括逐元素遗忘门构成的路径,并非把多单元 LSTM 简化成一个门。七步后约 0.43,普通 RNN 为 0.0000089,相差约 48,000 倍。本课最大间隔为 12 个填充词,此时差距约 400 亿倍。这些是特定已训练模型的路径指标,不能当作训练速度比。

切到 LSTM,可看到状态下方的通道逐步乘 f 并加入新内容。移动间隔滑杆,两种模型在各选项中都答对,但普通 RNN 到主语的增益下降更快。

LSTM 仍有边界

直接路径为 Π f_t。如果每步 f = 0.5,七步只有 0.5⁷ ≈ 7.8e-3,十三步为 1.2e-4。门接近一才利于保留,结构不保证所有长距离梯度都健康。它提供的是可学习、逐单元的保留决策。本课沿用一种常见做法,把遗忘门偏置初始化为 1,先偏向打开,再学习何时遗忘。

长距离任务失败可能是信息没被保留,也可能是信息保留了却难以学会使用。前者可检查容量和输入表示,后者可检查梯度路径。路径测量能帮助诊断,但完整雅可比或其范数可能需要多个向量反向计算;一次方向探测只测一个方向。

门控循环单元能用固定大小的状态处理流式音频或控制输入,是否比其他结构便宜取决于任务和实现。注意力中允许的连接可在一层内直接联系远处位置,避免逐个经过中间循环步;掩码、权重、网络深度和其他雅可比仍影响信号,距离不意味着完全没有代价。

边界情况

  • 最短间隔,两填充词:反向三步,RNN 保留约 7.8%,LSTM 约 61%。衰减随距离改变,不是各位置都同样失败。
  • 单数主语:两种模型在各间隔把 key 判为 is。这是检查提示依赖的成对对照;单次失败不能单独证明模型在利用类不平衡。
  • 放大的一步:有效倍率大于一可以出现,仍需看完整路径增益。
  • LSTM 的其他路径:平缓曲线只属于直接 C 路径。经 o ⊙ tanh(C) 和循环矩阵的隐藏状态路径仍可能衰减或放大。
  • 两种模型都能学会这个任务:路径差距不能推出普通 RNN 无法训练。相同训练配方、固定间隔、五个随机种子的实验如下:
固定间隔RNN 收敛次数LSTM 收敛次数解题迭代次数中位数
205/55/5RNN 331;LSTM 48
402/52/5成功运行太少,不报告

间隔 20 时 LSTM 约快七倍,40 时两者都不可靠。这只需保存一个比特,饱和 tanh 可以锁存,Adam 与梯度裁剪也帮助训练。它不是复杂长距离信用分配的强测试;准确结论是路径相差多个数量级,而两种单元仍能学会这个小任务。

常见错误

  • 用正确答案证明梯度健康。前向保留和反向可达性是两项指标。
  • 把均方根路径增益当上界。上界需看最大奇异值,本例约高 3.5 倍。
  • 把理论中的 ρ^k 界当实际每步固定比例;本例倍率约从 0.07 到 1.3。
  • 以为 LSTM 删除了乘法。直接路径仍连乘各单元遗忘门,只是保留率可学习。
  • 认为把 tanh 换 ReLU 就足够。循环权重仍会让信号收缩或放大;加性状态改变路径,裁剪只限制爆炸。
  • 将 12 单元、10 词词表的合成句子推广为真实语言模型结论。权重、前向和雅可比在浏览器中实际计算,但大模型的层数、结构和数据不同;机制可比较,具体数值不可照搬。