Self-Attention & Transformer 学习笔记
一、为什么要学 Transformer? Transformer 是当前深度学习的基础架构。NLP 领域的 BERT、GPT 系列,计算机视觉的 ViT,多模态模型 CLIP、Stable Diffusion——底层全是 Transformer。不理解 Transformer,后续读任何相关论文都会卡在架构细节上。 学完本笔记后,应该能回答:Q/K/V 怎么算?Multi-Head 为什么有用?Positional Encoding 干什么的?Encoder 和 Decoder 有什么区别? 二、Self-Attention(自注意力机制) 2.1 核心问题:如何处理变长序列? 输入可能是一句话(5个词)、一段语音(200帧)、一张图(196个patch),长度不固定。传统 FC 层要求固定输入维度,无法处理这种情况。 生活类比:你在教室里坐着,老师点名提问。FC 层相当于老师只看你一个人;Self-Attention 相当于老师让全班每个人都互相看一眼,综合所有人的信息后再做判断。 2.2 Self-Attention 的计算流程 假设输入序列有 T 个 token,每个 token 是一个 d 维向量: 输入:X = [x₁, x₂, ..., xT],shape = [T, d] 第1步:生成 Q, K, V(三个"角色") Q = X @ Wq # Query: "我在找什么?" shape = [T, dk] K = X @ Wk # Key: "我能提供什么?" shape = [T, dk] V = X @ Wv # Value: "我的实际内容" shape = [T, dv] 第2步:算 Attention Score(谁和谁最相关?) Score = Q @ K^T # shape = [T, T],每对 token 之间的相关性 Score = Score / √dk # 缩放,防止数值过大导致 softmax 梯度消失 第3步:Softmax 归一化 Attention = softmax(Score, dim=-1) # 每行和为1,变成概率分布 第4步:加权求和 Output = Attention @ V # shape = [T, dv] 生活类比: ...