代码修改版

编解码与残差归一化 · 代码修改

亲手实现掩码注意力、残差连接与 LayerNorm,改参数看它们如何影响梯度与数值量级。

目标实验目标

三段关键代码:因果掩码(遮住未来)、残差连接(给梯度开口)、LayerNorm(拉回量级)。改黄色数字,看结果怎么变。

重点把 use_residual 改成 false、层数改成 96,看第 1 层的梯度变成多少——体会「没有残差就没有深模型」。

代码可编辑源码

虚线处可直接点击修改。

stabilizers.js — 点击黄色数字可编辑

结果三项检验

① 掩码检查—
② 梯度回传—
③ 归一化结果—
等待运行…

监视变量监视

层数 L = -
每层梯度 = -
残差 = -
第1层梯度 = -
μ = -
σ = -

日志执行日志

点击「运行代码」开始执行…

挑战实验课挑战

挑战 1 · 关掉残差
use_residual=false、L=96、导数 0.9。第 1 层梯度是多少?训练会怎样?
挑战 2 · 导数取 1.1
每层导数改成 1.1,开残差。第 1 层梯度是多少?还是安全的吗?
挑战 3 · 掩码的作用
把 mask 里的 j > i 改成 false,掩码表变成什么?这对应哪个架构?
挑战 4 · RMSNorm
如果去掉减均值这一步(只除 RMS),归一化结果会差多少?