ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Transformer 与大语言模型:第4章 Transformer Block

Transformer 与大语言模型:第4章 Transformer Block 第4章 Transformer Block本章目标:理解一个完整的 Transformer Block 的结构,以及 Tensor 的 Shape 是如何在其中变化的。本章目录4.1 一个 Block 的全貌4.2 Block 的四个组件4.3 为什么这样排列?4.4 Pre-Norm vs Post-Norm4.5 Tensor Shape 的完整流程(Pre-Norm)4.6 TensorFlow 实现4.7 多个 Block 堆叠4.8 一层 Block 有多少参数?4.9 Hidden State——Block 中真正流动的数据本章总结本章思考题下一章预告4.1 一个 Block 的全貌Transformer 是由多个相同的 Block 堆叠而成的。原始论文(2017)使用的是Post-Norm结构,每个 Block 的结构如下:输入 x[batch, seq, d_model]Multi-Head Self-Attention残差连接 +LayerNormFeed Forward Network残差连接 +LayerNorm输出[batch, seq, d_model]⚠️注意:上图是原始论文的 Post-Norm 结构。现代 LLM(GPT-2、Llama、Qwen)使用 Pre-Norm 结构,区别见 4.4 节。注意:输入和输出的 Shape 完全相同。这是 Transformer 能堆叠多层的关键。4.2 Block 的四个组件组件作用章节Multi-Head Self-Attention让每个 Token 和所有 Token 交互第6、7章Residual(残差连接)防止梯度消失,保留原始信息第10章LayerNorm稳定训练,加速收敛第9章Feed Forward Network对每个 Token 做非线性变换第8章4.3 为什么这样排列?Block 的排列顺序是:Attention → Add Norm → FFN → Add Norm这个顺序不是随意的:Attention 先:让 Token 先收集全局信息Add Norm:稳定 Attention 的输出,防止梯度爆炸FFN 后:对每个 Token 的表示做进一步变换(引入非线性)Add Norm:再次稳定4.3.1 为什么要两次 Residual + 两次 LayerNorm?很多人看到 Block 结构会疑惑:为什么不是只在最后做一次 Residual + LayerNorm?答案在于:一个 Block 做了两件本质不同的事情,每件事完成后都需要独立"提交"结果。阶段做什么类比为什么需要独立的 Add NormAttention收集其他Token的信息开会听取意见意见可能有错,不能直接覆盖旧认知FFN对已有信息独立加工回家自己思考推理可能跑偏,不能直接覆盖会议结论每个阶段的 Residual 含义:第一次 Residual(Attention后):旧认知 + 从别人那里收集的新信息第二次 Residual(FFN后):收集后的认知 + 自己深入思考的结果如果只在 Block 最后做一次 Residual:❌ H_new = H_old + Attention(H_old) + FFN(...)那就意味着 FFN 的输入是 Attention 的"裸输出"(未经稳定化),数值可能不稳定,且 Attention 的错误会直接传给 FFN。两次独立的 Add Norm 确保:FFN 收到的是已经稳定化的中间结果每个阶段的错误都被 Residual “缓冲”——即使那个阶段失败了,原始信息也不会丢失4.4 Pre-Norm vs Post-Norm原始论文使用Post-Norm(LayerNorm 在残差相加之后):Post-Norm: x → Attention(x) → x + Attention(x) → LayerNorm → ...现代 LLM(GPT-2、Qwen、Llama)使用Pre-Norm(LayerNorm 在子层之前):Pre-Norm: x → LayerNorm(x) → Attention(LayerNorm(x)) → x + Attention(LayerNorm(x)) → ...
返回列表