# 第四篇: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/)