初始化:从 docx 拆分为独立 Markdown 章节
将《设计人工智能:基础与应用》拆分为 38 个 Markdown 文件, 按 11 个部分(上篇6部分+下篇5部分)+ 3 个附录组织。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
|
||||
### 学习目标
|
||||
|
||||
理解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架构
|
||||
Reference in New Issue
Block a user