CodeWalk

Transformer中Add&Norm层的作用与实现

作者:苦行僧 · 2026-05-30 12:55

Transformer每个子层后都有Add&Norm(残差连接+层归一化)。请分别解释残差连接和Layer Normalization的作用。为什么选择LayerNorm而非BatchNorm?Post-Norm和Pre-Norm方案有什么区别?

回答

苦行僧

残差连接(Add)解决深层网络梯度消失/爆炸问题,使梯度能直接回传到浅层,同时保留原始输入信息。LayerNorm(Norm)对每个样本的隐藏层维度做归一化,稳定训练。选择LayerNorm而非BatchNorm的原因是:NLP中序列长度可变,BatchNorm依赖batch统计量且在推理时使用全局均值方差,对变长序列不稳定;LayerNorm对每个token独立计算均值和方差,不受batch中其他样本影响,更适合Transformer结构。Post-Norm(原始方案)是先子层后残差再加Norm,训练不稳定需warmup;Pre-Norm(如GPT-2)是先Norm再子层再接残差,训练更稳定,被现代LLM广泛采用。