news 2026/9/13 21:45:56

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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-Norm
  • 4.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

残差连接 +

LayerNorm

Feed 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

这个顺序不是随意的:

  1. Attention 先:让 Token 先收集全局信息
  2. Add & Norm:稳定 Attention 的输出,防止梯度爆炸
  3. FFN 后:对每个 Token 的表示做进一步变换(引入非线性)
  4. Add & Norm:再次稳定

4.3.1 为什么要两次 Residual + 两次 LayerNorm?

很多人看到 Block 结构会疑惑:为什么不是只在最后做一次 Residual + LayerNorm?

答案在于:一个 Block 做了两件本质不同的事情,每件事完成后都需要独立"提交"结果。

阶段做什么类比为什么需要独立的 Add & Norm
Attention收集其他Token的信息开会听取意见意见可能有错,不能直接覆盖旧认知
FFN对已有信息独立加工回家自己思考推理可能跑偏,不能直接覆盖会议结论

每个阶段的 Residual 含义

  • 第一次 Residual(Attention后):旧认知 + 从别人那里收集的新信息
  • 第二次 Residual(FFN后):收集后的认知 + 自己深入思考的结果

如果只在 Block 最后做一次 Residual:

❌ H_new = H_old + Attention(H_old) + FFN(...)

那就意味着 FFN 的输入是 Attention 的"裸输出"(未经稳定化),数值可能不稳定,且 Attention 的错误会直接传给 FFN。

两次独立的 Add & Norm 确保:

  1. FFN 收到的是已经稳定化的中间结果
  2. 每个阶段的错误都被 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)) → ...
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 21:45:00

提示词工程实战:10个提升大模型输出质量的技巧与模板

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 21:44:49

Markdown工程化实践:渲染一致性、PDF保真与跨平台工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 21:35:16

Windows 隐藏导航窗格【主文件夹】、【图库】、【OneDrive】

目录Win11隐藏导航窗格【主文件夹】、【图库】CLSID对照表完整一键 reg(全部隐藏:主文件夹图库OneDrive)恢复显示全部的reg生效操作手动一步步操作(不用reg文件)Win11隐藏导航窗格【主文件夹】、【图库】 ⚠️注意&…

作者头像 李华
网站建设 2026/9/13 21:33:44

Shell 脚本语法规则速查手册

Shell 脚本语法规则速查手册适用于 Bash / Shell 脚本编写(Linux 环境)一、文件基础规则 1.1 文件扩展名与权限 # 推荐扩展名: .sh (不是必须,但便于识别) myscript.sh# 给脚本加执行权限(只需一…

作者头像 李华