pi0.5 里的 adarms 是做什么的?
为什么会问这个问题:在 π₀.₅ 源码中看到 adarms 参数,文档只说"adaptive RMSNorm",但不清楚为什么需要"自适应"。
简短回答:adaRMS 让归一化层接受条件向量(通常是 timestep),用一个小 Dense 生成 scale、shift、gate 参数,逐层调制 Transformer。π₀ 只在输入端把 action 和 timestep 拼接一次,π₀.₅ 则在每一层都注入 timestep。
这个回答暴露了什么前置概念:需要理解什么是 RMSNorm,才能理解"自适应"的含义。
什么是 RMSNorm?
为什么从上一个问题引出这个问题:adaRMS 是"adaptive RMSNorm",但 RMSNorm 本身是什么?
简短回答:RMSNorm 用向量的均方根对向量归一化,稳定 hidden state 的 magnitude,但不删除 mean 方向的信息:
其中 是可学习的 scale 参数。
这个回答暴露了什么前置概念:为什么"不删除 mean"很重要?这和 LayerNorm 的区别是什么?
为什么 RMSNorm 不减去均值?
为什么从上一个问题引出这个问题:LayerNorm 会先减 mean 再除标准差,RMSNorm 只除 RMS,这个差别意味着什么?
简短回答:LayerNorm 删除了 hidden vector 在 all-ones 方向上的分量(整体 offset),RMSNorm 保留了这个方向。从几何上看,RMSNorm 只调整向量长度,不改变方向;LayerNorm 会删除一个维度的信息。
例如 和 ,LayerNorm 后完全相同,RMSNorm 后仍不同。
这个回答暴露了什么前置概念:Norm 在 Transformer 里放在什么位置?为什么现代模型都用 Pre-Norm?
Transformer 为什么使用 Pre-Norm?
为什么从上一个问题引出这个问题:理解了 RMSNorm 和 LayerNorm 的区别,但它们在 Transformer 里怎么用?为什么是 x + F(Norm(x)) 而不是 Norm(x + F(x))?
简短回答:Pre-Norm 保留了一条完全不受阻碍的 identity path:
即使 Attention/FFN 梯度很小, 始终在,梯度可以直接传。Post-Norm 的梯度必须经过 Norm:
深层网络更容易不稳定。
这个回答暴露了什么前置概念:这个 identity path 保护的是什么?residual stream 到底在传递什么?
残差流在保留什么?
为什么从上一个问题引出这个问题:Pre-Norm 保护 identity path,但这个 path 承载的信息是什么?为什么需要保护?
简短回答:Residual stream 是所有层共享的"内存",每层不是重新创造表示,而是往这个流里写增量:
Norm 不在这条高速公路上,它只负责:某个模块准备读取 residual stream 时,先把输入尺度整理一下。
回到 adaRMS:它让 timestep 控制"怎么看"(scale/shift)和"写多少"(gate),但不破坏 residual highway。
概念链
这条问题链的价值不在于"adaRMS 会归一化激活值"这个结论,而在于理解:归一化、条件调制和残差流设计是一个系统,让 Transformer 既稳定又能响应上下文。