Files
2026_DesignAI/04-transformer/04-transformer.md
T
pengxiao fac0133db5 合并子章节到父文件,每个篇章归为单文件
将 11 个目录下的 26 个子章节文件合并到对应的父文件中,
用 --- 分隔各子章节,移除冗余的章节目录索引。
每个篇章现在是独立的单文件,结构更简洁。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-25 10:48:05 +08:00

495 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第四篇:Transformer与大模型
本篇介绍革命性的Transformer架构和大语言模型,理解Self-Attention机制和LLM应用。
## 篇章导读
Transformer是AI领域最重要的架构创新之一。它不仅彻底改变了自然语言处理,还通过Attention机制启发了计算机视觉的范式变革。
本篇将从注意力机制出发,深入理解Transformer架构,并探讨大语言模型在设计领域的应用。
---
### 学习目标
理解Self-Attention的动机和原理
掌握Q、K、V的计算过程
了解Multi-Head Attention的优势
### 为什么需要Attention
#### 序列标注问题
`输入序列:``x₁, x₂, ..., xₙ (N``个元素``)`\
`输出序列:``y₁, y₂, ..., yₙ' (N'``个元素``)`
传统方法 (RNN/FCN): - 固定窗口大小 - 长距离依赖丢失 - 难以并行计算
Self-Attention - 每个元素都能关注所有元素 - 直接建模任意距离依赖 - 可以并行计算
### Self-Attention原理
#### 核心思想 {#核心思想-1}
为每个输出元素,计算输入序列中所有元素的相关性:
`对于每个位置``i```\
` yᵢ = Σ (``注意力权重`` × ``对应输入值``)`
#### Q、K、V计算
`输入``X → ``三个线性变换`\
` ↓`\
`Q (Query): "``我想找什么``"`\
`K (Key): "``我有什么标签``"`\
`V (Value): "``我的实际内容``"`
#### 注意力分数计算
`1. ``计算相似度:``Score = Q × Kᵀ`
`2. ``缩放:``Score = Score / √dₖ`
`3. ``Softmax````Weight = ``softmax``(Score)`
`4. ``加权求和:``Output = Weight × V`
#### 直观理解 {#直观理解-2}
`查询:``"``苹果``"`\
` ↓`\
`与所有``Key``计算相似度`\
` ↓`\
`权重高的``Key``对应``Value``贡献更大`\
` ↓`\
`输出:融合上下文的``"``苹果``"``表示`
### Multi-Head Attention
单头 vs 多头
**单头注意力**
`一组``Q``、``K``、``V → ``一个注意力表示`
**多头注意力**
`多组``Q``、``K``、``V → ``多个注意力表示`` → ``拼接`
#### 多头优势
---------------------
头 关注内容
-------- ------------
Head 1 语法关系
Head 2 语义指代
Head 3 长距离依赖
... ...
---------------------
多头让模型从不同角度理解序列。
### Positional Encoding
#### 问题
Self-Attention本身是**置换不变**的:
`Attention(``[A, B, C]) = Attention([B, A, C])`
但序列位置很重要!
#### 解决方案
添加位置信息:
`输入`` = X + ``PositionalEncoding`
常用方法: - 正弦/余弦位置编码 - 可学习位置编码
### Self-Attention vs CNN
感受野对比
------------------------------------
层级 CNN Self-Attention
------ ------------ ----------------
单层 局部感受野 全局感受野
深层 逐层扩大 始终全局
------------------------------------
计算复杂度
--------------------------------------
操作 CNN Self-Attention
-------- ------------ ----------------
复杂度 O(k²·C) O(n²·d)
n 图像尺寸 序列长度
k 卷积核大小 \-
--------------------------------------
### 思考与练习
1.为什么Attention需要Scaling (除以√dₖ)
2.Multi-Head Attention中,头数越多越好吗?
3.Self-Attention如何应用在图像上?
### 关键术语
------------------------------------------------------
中文 英文 说明
---------- -------------------- ----------------------
查询 Query 查询向量
键 Key 键向量
值 Value 值向量
缩放点积 Scaled Dot-Product 注意力计算方式
掩码 Mask 屏蔽某些位置的注意力
------------------------------------------------------
### 延伸阅读
[Attention Is All You Need](https://arxiv.org/abs/1706.03762)
[The Illustrated Transformer](https://jalammar.github.io/illustrated-transformer/) \# 03.2 Transformer架构
---
### 学习目标
理解Transformer的Encoder-Decoder结构
掌握各组件的作用和连接方式
了解Token处理流程
### 整体架构
`输入``Token``序列`` → Encoder → ``编码表示`\
` ↓`\
`输出``Token``序列`` ← Decoder ← ``编码表示`
### Encoder层
单层结构
`输入``X`\
` ↓`\
`Multi-Head Self-Attention`\
` ↓`\
`Add & Norm (``残差连接`` + ``层归一化``)`\
` ↓`\
`Feed-Forward Network (FFN)`\
` ↓`\
`Add & Norm`\
` ↓`\
`输出``H`
#### 残差连接
`输出`` = F(x) + x`
作用: - 缓解梯度消失 - 便于训练深层网络
#### 层归一化
`输出`` = ``LayerNorm``(x + F(x))`
作用: - 稳定训练 - 加速收敛
#### FFN (前馈网络)
`FFN(x) = ``ReLU``(``xW``₁ + b₁)W₂ + b₂`
本质:两层全连接网络,非线性变换
### Decoder层
#### 结构
`输入``X`\
` ↓`\
`Masked Self-Attention (``只能看之前的位置``)`\
` ↓`\
`Add & Norm`\
` ↓`\
`Cross-Attention (Query``来自``Decoder, Key/Value``来自``Encoder)`\
` ↓`\
`Add & Norm`\
` ↓`\
`FFN`\
` ↓`\
`Add & Norm`\
` ↓`\
`输出`` (``接``Softmax``预测概率``)`
#### Cross-Attention
`Q: Decoder``的隐藏状态`\
`K, V: Encoder``的输出`
作用:让Decoder关注Encoder的相关部分
## Token处理流程
### 输入处理
`文本`` → Tokenize → Token IDs`\
` ↓`\
` Embedding``层`\
` ↓`\
` ``位置编码相加`\
` ↓`\
` Encoder/Decoder`
### 输出处理
`Decoder``输出`` → ``线性层`` → ``Softmax`` → ``概率分布`\
` ↓`\
` ``选择最大值`
## 训练与推理
训练阶段
`教师强制`` (Teacher Forcing)```\
` ``真实标签作为``Decoder``输入`\
` ``可以并行计算`
推理阶段
`自回归生成`` (Autoregressive)```\
` ``生成一个``Token → ``加入输入`` → ``生成下一个`\
` ``串行计算`
## Transformer变体
BERT (Encoder-only)
`输入`` → Encoder → [CLS]``表示`` / ``每个``Token``表示`
应用:分类、NER、问答
GPT (Decoder-only)
`输入`` → Decoder → ``下一个``Token``预测`
应用:文本生成
T5 (Encoder-Decoder)
`输入`` → Encoder → ``表示`` → Decoder → ``输出`
应用:翻译、摘要
## 思考与练习
1. 为什么Decoder需要Masked Attention
2. Encoder-only和Decoder-only模型各有什么优势?
3. Transformer如何处理超长序列?
## 关键术语
----------------------------------------------------------
中文 英文 说明
--------------- --------------------- --------------------
残差连接 Residual Connection 跨层连接
层归一化 Layer Normalization 归一化层
教师强制 Teacher Forcing 训练时使用真实标签
自回归 Autoregressive 基于前序生成后续
编码器-解码器 Encoder-Decoder Seq2Seq架构
----------------------------------------------------------
## 延伸阅读
1. [The Annotated Transformer](https://nlp.seas.harvard.edu/2018/04/03/attention.html)
[Visualizing A Machine Learning Model](https://poloclub.github.io/transformer-explainer/) \# 03.3 大语言模型应用
---
## 学习目标
3. 理解从Transformer到ChatGPT的演进
掌握RAG、RLHF等关键技术
了解Prompt工程在设计中的应用
## 从Transformer到ChatGPT
### GPT系列演进
------------------------------------------------------
模型 发布时间 参数量 特点
--------- ---------- -------- ------------------------
GPT-1 2018 117M 验证Decoder-only可行性
GPT-2 2019 1.5B 展示零样本能力
GPT-3 2020 175B 少样本学习震撼业界
ChatGPT 2022 \~ 对话能力达到新高度
GPT-4 2023 \~ 多模态能力
------------------------------------------------------
### 训练范式
`预训练`` (Pre-training)```\
` ``大规模文本`` → ``无监督学习`` → ``语言模型`\
\
`微调`` (Fine-tuning)```\
` ``特定任务`` → ``有监督学习`` → ``任务模型`
## RAG:检索增强生成
### 核心思想 {#核心思想-2}
用户提问 → 检索相关文档 → LLM生成答案
外部知识库
### RAG架构
#### 文档索引
`文档`` → ``切分`` → Embedding → ``向量数据库`
####
`2. ``检索阶段`
#### 问题 → Embedding → 相似度搜索 → 相关文档
`3. ``生成阶段`
问题 + 相关文档 → LLM → 答案
### RAG优势
---------------------------
特点 说明
---------- ----------------
减少幻觉 基于检索的事实
可更新 更新知识库即可
可解释 显示参考来源
---------------------------
## RLHF:人类反馈强化学习
### 为什么需要RLHF
预训练模型可能: - 生成有害内容 - 不符合人类偏好 - 产生无意义输出
### RLHF三阶段
#### 有监督微调 (SFT)
`人工标注对话`` → ``微调模型`
`2. ``奖励模型`` (RM)`
#### 多个输出 → 人类排序 → 训练奖励模型
`3. ``强化学习`` (RL)`
PPO算法 → 优化策略
### 效果
1. 输出更符合人类偏好
减少有害内容
提高回答质量
## Prompt工程
### Prompt设计原则
#### 明确任务
`好:请总结以下文本的主要观点`\
`差:看看这段文字`
#### 提供示例
`任务:情感分类`\
`示例:`\
`"``这部电影太棒了!``" → ``正面`\
`"``服务态度很差。``" → ``负面`\
`现在分类:``"..."`
### 指定格式
`请按以下格式输出:`\
`- ``观点``1````...`\
`- ``观点``2````...`\
`- ``结论:``...`
## 设计领域应用
-------------------------------------------------------
任务 Prompt示例
---------- --------------------------------------------
方案生成 "设计一个50人的办公空间,要求开放式布局"
代码生成 "写一个Python脚本计算建筑容积率"
文档撰写 "帮我写一份景观设计说明书的框架"
-------------------------------------------------------
## 思考与练习
1. RAG和微调(Fine-tuning)各适用于什么场景?
2. 如何评估LLM输出的质量?
3. Prompt工程在设计工作流中能解决什么问题?
## 关键术语
------------------------------------------------------------------------------------
中文 英文 说明
------------------ -------------------- --------------------------------------------
检索增强生成 RAG Retrieval-Augmented Generation
人类反馈强化学习 RLHF Reinforcement Learning from Human Feedback
提示工程 Prompt Engineering 设计输入以引导模型输出
向量数据库 Vector Database 存储和检索向量表示
幻觉 Hallucination 模型编造错误信息
------------------------------------------------------------------------------------
## 延伸阅读
1. [Language Models are Few-Shot Learners (GPT-3)](https://arxiv.org/abs/2005.14165)
[Training Language Models to Follow Instructions with Human Feedback](https://arxiv.org/abs/2203.02155)
[LangChain RAG教程](https://python.langchain.com/docs/tutorials/rag/)