手动调参版

编解码与残差归一化 · 手动调参

拖动滑块改层数、每层导数与残差开关,看梯度能不能活着传回第 1 层;再调归一化强度,看数值量级会不会失控。

目标实验目标

把「深层网络为什么训得起来」变成两个可调的旋钮:残差连接给梯度开一条不衰减的直通路,LayerNorm 把乱飞的数值拉回正常量级。改参数,看两条曲线怎么变。

怎么玩先把「残差连接」关掉,层数拉到 96,看第 1 层收到的梯度掉到多少——这就是没有残差时深层网络的灾难。

参数控制

GPT-3 的深度。层数越大,梯度连乘的次数越多。
子层自己那部分导数。实践中它很小(子层只学「小修正」),残差那个 +1 才是主角。
归一化后再缩放。γ 太大,量级又会失控。

梯度第 1 层收到的梯度

量级残差流的范数随深度变化

挑战实验课挑战

挑战 1 · 关掉残差
残差关闭、层数 96、导数 0.9。第 1 层梯度是 0.9^96,算算还剩万分之几?
挑战 2 · 爆炸的那一侧
关闭残差、把每层导数设成 1.1,1.1^96 是多少?这会让训练出现什么现象?
挑战 3 · 那个 +1
开启残差,把 ∂f/∂x 调到 0.01(几乎不学)。每层总梯度是多少?为什么它「不会塌」?
挑战 4 · γ 的作用
把 γ 拉到 2.0,残差流的范数怎么变?为什么归一化后还要再缩放?