合并子章节到父文件,每个篇章归为单文件
将 11 个目录下的 26 个子章节文件合并到对应的父文件中, 用 --- 分隔各子章节,移除冗余的章节目录索引。 每个篇章现在是独立的单文件,结构更简洁。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,156 +0,0 @@
|
||||
|
||||
### 学习目标
|
||||
|
||||
理解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架构
|
||||
@@ -1,157 +0,0 @@
|
||||
|
||||
### 学习目标
|
||||
|
||||
理解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 大语言模型应用
|
||||
@@ -1,166 +0,0 @@
|
||||
|
||||
## 学习目标
|
||||
|
||||
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/)
|
||||
@@ -8,26 +8,487 @@ Transformer是AI领域最重要的架构创新之一。它不仅彻底改变了
|
||||
|
||||
本篇将从注意力机制出发,深入理解Transformer架构,并探讨大语言模型在设计领域的应用。
|
||||
|
||||
## 章节目录
|
||||
---
|
||||
|
||||
[03.1 注意力机制](03.1-attention.md) - Self-Attention原理
|
||||
### 学习目标
|
||||
|
||||
[03.2 Transformer架构](03.2-transformer.md) - Encoder-Decoder结构
|
||||
理解Self-Attention的动机和原理
|
||||
|
||||
[03.3 大语言模型应用](03.3-llm-application.md) - ChatGPT、RAG与Prompt工程
|
||||
掌握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``:``...`\
|
||||
`- ``结论:``...`
|
||||
|
||||
## 设计领域应用
|
||||
|
||||
-------------------------------------------------------
|
||||
概念 英文 说明
|
||||
------------ --------------------- --------------------
|
||||
注意力机制 Attention 关注输入的重要部分
|
||||
任务 Prompt示例
|
||||
---------- --------------------------------------------
|
||||
方案生成 "设计一个50人的办公空间,要求开放式布局"
|
||||
|
||||
自注意力 Self-Attention 序列内部的关系建模
|
||||
代码生成 "写一个Python脚本计算建筑容积率"
|
||||
|
||||
位置编码 Positional Encoding 保留序列位置信息
|
||||
|
||||
令牌 Token 文本的基本单位
|
||||
文档撰写 "帮我写一份景观设计说明书的框架"
|
||||
-------------------------------------------------------
|
||||
|
||||
## 03.1 注意力机制
|
||||
## 思考与练习
|
||||
|
||||
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/)
|
||||
|
||||
Reference in New Issue
Block a user