AnthropicOpenaiGoogle技术总监级拆解大模型|第10讲 Attention 与 Transformer 到底在算什么?Q、K、V 一次讲明白 AI技术总监级拆解大模型第10讲Attention 与 Transformer 到底在算什么Q、K、V 一次讲明白AI 学习系列第10讲 / 共26讲前面第09讲讲了RNN ↓ LSTM ↓ Seq2Seq ↓ 固定 Context 瓶颈这一讲正式进入今天大模型最核心的计算机制Attention ↓ Transformer ↓ GPT / LLM01为什么需要 Attention先回顾 RNN / LSTMx1 → h1 → h2 → h3 → h4问题是必须按顺序处理 远距离信息传递困难Seq2Seq 又把输入压进一个固定长度 Context很长的输入 ↓ 一个 Context ↓ Decoder于是出现信息瓶颈。Attention 的核心思路非常简单当前计算需要什么信息就去已有信息里找什么信息。02Attention 不是什么“神秘机制”可以先把它看成当前问题 ↓ 找谁与我最相关 ↓ 给相关位置更高权重 ↓ 把相关内容加权拿回来例如一句话我 喜欢 学习 人工智能当前处理“它”时不同位置可能得到不同关注程度我 0.05 喜欢 0.08 学习 0.12 人工智能 0.75Attention 做的事情就是按照相关程度重新组合已有信息。03Attention 最核心的公式Scaled Dot-Product Attention[\operatorname{Attention}(Q,K,V)\operatorname{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V]第一次看到不用怕。整个公式实际上只有四步① Q 和 K 做匹配 ↓ ② 除以 √d_k ↓ ③ Softmax 变成权重 ↓ ④ 用权重加权 V04Q、K、V 到底是什么最简单的理解QQuery我现在想找什么KKey我这里有什么特征可以被你匹配VValue匹配以后真正拿回去的内容是什么可以类比一个数据库Query 我要查什么 Key 用什么字段匹配 Value 真正返回的数据因此Q ↓ 和所有 K 比较 ↓ 找到相关位置 ↓ 取对应 V05Q、K、V 从哪里来输入[X]经过三个不同的线性变换[QXW_Q][KXW_K][VXW_V]注意不是三个完全不同的输入而是同一个输入 X通过三组不同参数得到三种角色。06第一步QKᵀ 到底在算什么假设[Q\begin{bmatrix}10\end{bmatrix}][K\begin{bmatrix}10\01\end{bmatrix}]那么[QK^T\begin{bmatrix}10\end{bmatrix}\begin{bmatrix}10\01\end{bmatrix}\begin{bmatrix}10\end{bmatrix}]实际上就是在做Q 与每一个 K 的点积。点积越大方向越匹配 ↓ 相关性通常越高07为什么要除以 √d_k公式[\frac{QK^T}{\sqrt{d_k}}]这里[d_k]是 Key 向量的维度。为什么要缩放因为维度变大以后点积的数值尺度可能变大。如果直接把很大的分数送进 Softmax一个特别大 其他特别小Softmax 可能变得过于尖锐。因此除以 (\sqrt{d_k}) 是为了控制点积的数值尺度。08Softmax把分数变成权重假设匹配分数[1, 2, 4]经过 Softmax 后会变成[较小, 较小, 最大]而且所有权重加起来[\sum_i\alpha_i1]所以可以把它理解成匹配分数 ↓ 归一化 ↓ 注意力权重09最后一步加权求和 V假设V1 [10,0] V2 [0,20]Attention 权重[0.8, 0.2]那么输出[0.8V_10.2V_2]得到[[8,4]]所以 Attention 的最后一步其实很朴素按相关程度对 Value 做加权平均式组合。10所以 Attention 到底在做什么把公式完整翻译成人话[\operatorname{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V]就是Q ↓ 我现在需要什么 K ↓ 谁和我的需求最匹配 Softmax ↓ 分别给多少权重 V ↓ 把相关内容拿回来 加权求和 ↓ 形成新的表示所以Attention 根据当前需求动态从已有信息中读取相关内容。11Self-Attention 是什么Self-Attention 的特点是Q K V都来自同一个输入序列也就是[QXW_Q][KXW_K][VXW_V]所以一句话Self-Attention 让序列中的每个位置都能够根据自身需求访问其他位置的信息。12为什么这比 RNN 不一样RNNx1 ↓ x2 ↓ x3 ↓ x4信息主要通过h1 → h2 → h3 → h4逐步传播。Self-Attentionx1 ─┐ x2 ─┼→ 两两计算相关性 x3 ─┤ x4 ─┘一个位置可以直接访问其他位置。所以长距离依赖不再必须经过很多个递归状态。而且整个序列的 Attention 计算可以组织成大矩阵运算。这非常适合 GPU。13Multi-Head Attention为什么不是只做一次 Attention一个 Attention 头只能从一种表示空间观察关系。Multi-HeadHead 1 Head 2 Head 3 …… Head h让不同 Head 在不同参数空间里学习不同关系。例如一个 Head 可能更关注主语 ↔ 动词另一个可能更关注代词 ↔ 指代对象另一个可能关注局部邻近关系注意具体每个 Head 学到什么并不是人为固定的而是训练形成的。14Multi-Head 的结构可以理解成输入 X ↓ ┌───────┬───────┬───────┐ Head 1 Head 2 Head 3 ... ↓ ↓ ↓ Attention Attention Attention └───────┴───────┴───────┘ ↓ Concat ↓ Linear Projection ↓ 输出因此Multi-Head Attention 并行地从多个表示子空间学习信息关系。15为什么需要 PositionAttention 本身只根据内容关系计算。如果输入A B C和C B A没有额外位置信息模型很难只靠集合关系区分顺序。所以 Transformer 需要Position Information经典 Transformer 使用 Positional Encoding。现代模型还存在RoPE 其他位置编码方案因此不要把位置编码只理解为一种固定公式。真正要记的是模型必须获得“位置”信息否则只看内容关系不足以完整表达序列顺序。16Transformer Block 到底有什么一个经典 Transformer Block 可以理解为输入 ↓ Multi-Head Self-Attention ↓ Residual Connection ↓ LayerNorm ↓ Feed Forward Network ↓ Residual Connection ↓ LayerNorm ↓ 输出现代架构在具体的 Norm 顺序、位置和实现上有不同变体。但核心组件仍然围绕Attention Feed Forward Residual Normalization17Residual Connection 为什么存在最简单[yF(x)x]也就是原输入 网络处理结果 ↓ 输出它给信息提供了一条直接路径x ──────────────┐ x → F(x) ────────┘好处之一更容易进行深层网络中的信息和梯度传播。不是“彻底解决梯度问题”而是提供了更直接的路径。18LayerNorm 是干什么的LayerNorm 可以理解成对一个样本内部的特征进行归一化处理。目的之一是让各层输入的数值尺度更稳定 ↓ 训练更容易和 BatchNorm 不同LayerNorm 不依赖 batch 维度统计。这也是 Transformer 常见的归一化方式。19Feed Forward Network 是什么Transformer Block 里除了 Attention还有 FFN。最简单形式[FFN(x)W_2\sigma(W_1xb_1)b_2]它实际上就是Linear ↓ Activation ↓ Linear作用可以理解成对每个位置的表示进行进一步的非线性变换。所以 Transformer Block 不只是 Attention。20Transformer 为什么适合大规模训练核心原因之一RNN ↓ 时间维串行 Transformer ↓ 大量矩阵运算 ↓ 可以更充分利用 GPU 并行尤其训练阶段Self-Attention 可以对整个序列批量计算。因此Transformer GPU 大数据 大参数量形成了现代大模型规模化的基础。21一个完整的 Transformer 思维图Token ↓ Embedding Position Information ↓ X ↓ Q / K / V ↓ QKᵀ ↓ Scale ↓ Softmax ↓ Attention Weights ↓ Weighted Sum ↓ Multi-Head Attention ↓ Residual Norm ↓ FFN ↓ Residual Norm ↓ Transformer Block ↓ 重复很多层 ↓ Transformer22Attention 最重要的公式[QXW_Q][KXW_K][VXW_V][\operatorname{Attention}(Q,K,V)\operatorname{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V]真正需要记住的是Q 我想找什么 K 什么可以和我匹配 V 匹配以后拿什么回来23一句话理解 TransformerTransformer 把“序列中的信息怎么相互访问”变成了 Attention再用残差、归一化和前馈网络组成可堆叠的 Block最后通过大量堆叠形成能够大规模训练的序列模型。24第10讲最重要的技术演化RNN ↓ 状态传递 ↓ 串行 ↓ LSTM ↓ 更稳定的记忆 ↓ 但仍然串行 ↓ Seq2Seq ↓ 固定 Context ↓ 信息瓶颈 ↓ Attention ↓ 动态访问信息 ↓ Transformer ↓ 大规模矩阵运算 ↓ GPU ↓ 规模化训练 ↓ GPT / LLM25第10讲一句话Attention 解决的是“当前计算应该从哪些已有信息中读取内容”Transformer 则把 Attention、前馈网络、残差和归一化组织成可以重复堆叠、适合大规模 GPU 训练的模型结构。下一讲第11讲Tokenizer、语言模型与 GPT为什么“预测下一个 Token”足够强下一讲开始正式回答文字 ↓ Tokenizer ↓ Token ID ↓ Embedding ↓ Transformer ↓ Logits ↓ Softmax ↓ 下一个 Token 概率 ↓ 采样 / 选择 ↓ 生成文本也就是GPT 到底怎样从一串 Token一步一步生成我们今天看到的文字、代码和答案。附录第0110讲最低成本快速理解版这一部分只做一件事让第一次接触本系列的读者用最低阅读成本建立第0110讲的完整技术框架。第01讲现代 AI 为什么会走到今天解决为什么今天的大模型会有这么多能力规则 ↓ 机器学习 ↓ 神经网络 ↓ 表示学习 ↓ Transformer ↓ 大规模预训练 ↓ 后训练 ↓ LLM一句话今天的 AI 不是突然出现而是一系列技术瓶颈被连续解除的结果。第02讲向量、矩阵与线性变换解决AI 内部拿什么东西进行计算向量 一组数字 矩阵 对数字做有结构的变换 矩阵乘法 批量执行这种变换一句话现代 AI 的大量核心计算本质建立在线性代数之上。第03讲概率、信息论与损失函数解决模型怎样判断自己预测得好不好Logits ↓ 概率 ↓ Cross-Entropy / NLL ↓ Loss一句话Loss 把“预测好不好”变成一个可以被优化的数字。第04讲导数、梯度与优化解决模型错了以后怎么改参数[\theta_{t1}\theta_t-\eta\nabla_\theta L]一句话梯度告诉模型往哪里改Optimizer 决定具体怎么改。第05讲机器学习、泛化与过拟合解决为什么训练集很好真实数据却可能很差训练集表现好 ≠ 真正学会规律一句话真正重要的是泛化能力而不是把训练数据背熟。第06讲神经网络、Forward、Backward 与 BP解决怎样把“计算→犯错→修正”变成可训练网络Forward ↓ Loss ↓ Backward ↓ Gradient ↓ Update ↓ Repeat一句话神经网络通过反向传播得到梯度再不断更新参数。第07讲表示学习与 Embedding解决离散符号怎样变成可计算的连续表示Token ↓ Embedding ↓ Vector一句话Embedding 把离散世界转换成连续向量空间。第08讲CNN 与视觉表示解决图片有空间结构为什么不能粗暴全连接局部连接 参数共享 ↓ 卷积 ↓ Feature Map ↓ 层级视觉特征一句话CNN 把图像的空间结构直接写进网络。第09讲RNN、LSTM、Seq2Seq解决文本有顺序模型怎样带着过去的信息往前走RNN ↓ 状态保存过去 LSTM ↓ 门控管理记忆 Seq2Seq ↓ Encoder → Context → Decoder最终问题固定 Context ↓ 信息瓶颈一句话RNN 负责记过去LSTM 负责管记忆Seq2Seq 负责序列到序列固定 Context 最终把问题推向 Attention。第10讲Attention 与 Transformer解决当前计算能不能直接去已有信息里找自己需要的内容[Attention(Q,K,V)softmax\left(\frac{QK^T}{\sqrt{d_k}}\right)V]直接翻译Q → 我想找什么 K → 谁最匹配 Softmax → 给多少权重 V → 拿什么回来 加权求和 → 得到新的表示然后Attention FFN Residual LayerNorm ↓ Transformer Block ↓ 多层堆叠 ↓ GPT / LLM一句话Attention 负责动态读取信息Transformer 把这种信息交互组织成可以规模化训练的模型结构。第0110讲一条线串起来01 AI 为什么走到今天 ↓ 02 AI 用什么数学对象计算 ↓ 03 怎么衡量预测错多少 ↓ 04 怎么根据错误修改参数 ↓ 05 怎么确保模型能泛化 ↓ 06 怎么把这些东西组成神经网络 ↓ 07 怎么把离散信息变成向量 ↓ 08 怎么利用图像的局部结构 ↓ 09 怎么利用序列的历史信息 ↓ 10 怎么让不同位置动态交换信息最终向量 ↓ Loss ↓ Gradient ↓ Neural Network ↓ Embedding ↓ CNN / RNN ↓ Attention ↓ Transformer ↓ GPT ↓ LLM最低成本记住前10讲1. AI 是在数据上学习参数化函数。 2. 向量和矩阵是 AI 的基础计算语言。 3. Loss 用来衡量模型预测得有多差。 4. Gradient 告诉模型参数往哪里改。 5. 泛化比“背训练数据”更重要。 6. 神经网络通过 Forward → Loss → Backward → Update 学习。 7. Embedding 把离散信息变成向量。 8. CNN 利用图像的局部结构和参数共享。 9. RNN/LSTM 利用状态处理序列但存在递归与长距离依赖问题。 10. Attention 让每个位置可以动态访问其他位置的信息Transformer 则把这种机制规模化。到第10讲为止本系列已经完成了从“AI 为什么能学习”到“现代大模型为什么使用 Transformer”的完整主干。