深入Transformer:注意力机制其实只是几个矩阵,小白程序员必备收藏!

深入Transformer:注意力机制其实只是几个矩阵,小白程序员必备收藏!
本文深入解析Transformer的核心机制——注意力机制通过四个关键步骤线性变换、相似度评分、缩放和Softmax、加权聚合揭示其如何将句子信息混合并介绍多头注意力如何扩展理解范围。文章以简单的矩阵乘法为基础逐步拆解自注意力机制帮助小白和程序员理解现代人工智能背后的奥秘。简单的矩阵运算如何揭示上下文、意义以及现代人工智能背后的奥秘。本周我将接着上次中断的地方讲跨过词嵌入和位置编码直接进入 Transformer 的核心魔法自注意力。但在讨论多头或解码器栈之前我们需要回答一个关键问题➡️ Transformer 究竟是如何一次性地将整个句子中的信息混合在一起的在这篇文章中我们将拆解缩放点积注意力Scaled Dot-Product Attention机制的完整流程如何通过查询和键来比较词语为什么缩放和 softmax 是关键步骤以及如何通过融合价值向量来构建新的、富含上下文的表示。这一切归根结底只是几个简单的矩阵乘法运算。上次我们看了每个词元进入 Transformer 时经过的第一站词嵌入和位置编码的组合。词嵌入本身可以让我们了解一个词的含义。“蛋糕”比“键盘”更接近“派”。但仅凭词嵌入无法感知位置信息模型知道句子中是什么但不知道在哪里。因此我们添加了位置编码以帮助模型跟踪顺序。有了它Transformer 就知道“狗坐在沙发上”和“沙发坐在狗身上”是不一样的除非你访问的是互联网上一些非常奇怪的网站。到这一步结束时句子中的每个词元现在都表示为一个单一的向量它将单词的含义与它在句子中的位置结合起来。但这还不够。我们来看一个简单的句子“I ate the cake and it was delicious.”模型知道“cake”是食物词嵌入。它也知道“it”出现在后面位置编码。但它怎么知道“it”指的是“cake”而不是“I”呢又怎么能把“delicious”这个词和“cake”联系起来呢这就是位置编码的真正局限性。它能提供结构但不能提供关系。这就是注意力发挥作用的地方。嵌入位置阶段的结果将成为注意力机制的输入。下一阶段的任务是做出决定➡每个词元到底应该关注句中的哪些词是时候再次见到这一切的起源图了……令人头疼的图表又来了我知道我习惯用直接从学术论文里摘录出来的那些吓人的技术图表来迎接大家。但我保证我们会一步一步地讲解到最后你会发现它们并没有那么可怕。所以请大家再次耐心看完。正如我们在第三部分中看到的Transformer 由多个活动部件构成。这种架构源自 2017 年的论文《注意力机制你只需要它》Attention is all you need。在下面的图中您可以看到我们将仅关注蓝色高亮显示的方框——即标记为“多头注意力机制”Multi-Head Attention的方框。这就是自注意力的根源所在。注意力机制的细节幸运的是论文中包含一张放大图展示了这些方框内部的情况。今天我们将主要关注的是缩放点积注意力图左侧的那个。你还会看到一个额外的粉色方框上面标有“掩码可选”——这仅在训练过程中用于某些特定情况例如解码器。由于本文重点在于基础自注意力机制的原理我们将略过它。让我猜猜——这仍然完全说不通。你可能想问Q、K、V 分别代表什么缩放点积注意力图里遵循的 4 个步骤是什么为什么 Q 和 K “在一起”而 V 却走了一条不同的路没错你来对地方了这里可以解答这些问题以及更多其他问题。让我们在下一阶段详细探讨所有这些内容“缩放点积注意力”的四个阶段预备阶段引入 QK、V。如果你看一下 Scaled Dot-Product Attention图你会看到三个神秘的向量作为输入Q、K 和 V。在我们深入探讨数学之前让我们先来谈谈你可能每天都在使用的东西推荐系统例如 Netflix我假设你一生中某个时候肯定使用过。假设你打开 Netflix 并搜索“科幻小说”。那么后台发生了什么1. 你提出一个查询。你是说“给我展示符合科幻小说的东西”。 → 这是你的Q查询。2. 系统会将您的查询与选项目录进行比对。每部电影或剧集都有一些标签或特征动作、剧情、惊悚、科幻、爱情喜剧…… → 这些是 K键——每个项目的元数据或标签。3. 系统找到匹配项后需要知道该推荐什么。 不仅是标题还有缩略图、评分甚至可能是预告片预览。 → 这些就是 V价值——你实际收到的信息。所以Q 你正在搜索的内容K 每个项目的标注方式V 匹配成功后你能拿到的东西系统把你的查询 (Q) 与键 (K) 进行比较找出最相关的项然后返回这些相关项的值 (V)。现在让我们回到 Transformer。在 Transformer 中我们不是在推荐电视节目而是在处理句子中的词语。但其机制却出奇地相似。假设我们正在看句子中的单词“it”“I ate the cake and it was delicious.”Q 单词“it”的数值表示我们的查询——“it”试图理解什么K 句子中每个单词的键例如“cake”、“ate”、“and”等V 与这些词语相关的价值——我们可能想要从中提取的实际信息目标是让“it”关注“cake”而不是“and”或“I”。就像 Netflix 的目标是在你搜索科幻作品时为你呈现星球大战而不是爱情岛一样。下一节我们将从直觉过渡到具体机制这些 Q、K 和 V 向量在数学上长什么样它们在 Transformer 内部是如何构造出来的但希望到目前为止你已经有了大致的认识Q 是寻找者K 是它用来比对的对象所有词元的目录V 是它将得到的回报——按匹配强度加权。步骤 1. Q 和 K 的矩阵乘法我一直很纳闷为什么技术论文里非要用这么神秘兮兮的语言。为什么不直接说矩阵乘法而要用 MatMul 呢算了今天就到此为止吧。让我们重点关注缩放点积注意力图的第一步。我们的输入句子以向量形式经过两次线性变换。让我们继续来看之前的例子“I ate the cake and it was delicious.”经过嵌入层和位置编码层之后每个词都变成了一个数值向量它同时捕捉了含义和位置。为简单起见我们假设这些是 4 维向量见下图红色方框。每个词嵌入都会通过矩阵Wq和Wk进行“推送”从而成为一个新的向量。“通过矩阵推送”是什么意思简单来说就是应用线性变换我们使用标准的矩阵乘法规则将词的嵌入向量与矩阵相乘。简单来说取出嵌入向量与矩阵的每一列做点积这就得到一个新的向量要了解简单的点积数学运算是什么样子请查看下图。让我们从左到右一点一点地分析首先关注向量和矩阵的维度。请注意每个单词都是一个 [1 × 4]向量。每个矩阵都是 [4 × 4]。词向量中的 4元素个数必须与矩阵中的 4行数相匹配乘法才能成立。现在让我们关注向量Qcake。它是通过将“cake”的嵌入向量乘以Wq来计算的。Qcake中的每个值都是“cake”的嵌入与Wq的一列之间的点积。在上面的示例中我们展示了如何计算Qcake向量的第一个元素。类似地对于Kit向量我们取“it”的嵌入向量将其乘以Wk并以相同的方式计算每个元素。在图中我们以Kit向量的最后一个元素为例进行说明。现在我们准备好进行 Q 和 K 的 MatMul 运算了。一旦我们通过 Q 和 K 矩阵的权重投影了嵌入我们就可以计算 Q 和 Kᵀ 的 MatMul 了。下图展示了一个示例Qcake向量如何与Kit向量交互。同样地Qcake与句子中的其他每个单词会如何比较。这里会发生什么每个词都作为一个查询词(Q)与所有词作为键(K) 进行比较。输出结果为每个查询词在本例中为“cake”1 行。每关键词一列句子中的每个词。此行中的每个单元格都记录了查询与该键的相似度。例如“cake”和“it”得分 1.3— 高度相似。“cake”和“I”得分 0.4— 非常弱。在完整的 Transformer 模型中我们会对每个词重复此操作将每个查询与所有键进行比较。结果是一个完整的相似度矩阵它显示了每个词与其他词之间的相似度。以下是一个相似度矩阵的示例太棒了现在我们已经了解了第一步的输出结果。接下来让我们进入“缩放”步骤。步骤 2. 调整分数我们现在得到了一个完整的相似度得分矩阵其中每个词作为查询词都与其他所有词作为键词进行了比较。但是这里存在一个问题。有些数字已经相当大了例如当一个词与自身进行比较时其值为 1.6即使我们只处理较小的 4 维向量。想象一下如果我们处理的是 512 维甚至 1024 维的嵌入向量会发生什么——这在真正的 Transformer 模型中很常见。这些点积分数可能会迅速增长到非常大的规模。为什么这会是个问题因为下一步我们要应用Softmax函数。而 Softmax 函数对输入数据的尺度非常敏感。如果数值太大softmax 函数就会变得非常“尖锐”——它将几乎所有的概率质量都推向一个词而其他地方的概率质量几乎为零。这使得模型变得脆弱——输入的微小变化会导致输出的巨大变化。这也使得学习更加困难因为梯度变得很小且不稳定。解决方案在 softmax 之前对分数进行缩放我们不会直接将原始点积输入到 softmax 函数中而是先将每个分数除以一个数字。具体来说这个数字是向量大小的平方根 (√d)。在我们的简单示例中由于每个向量都有 4 个维度因此在进行 softmax 运算之前每个分数都会除以2。这个简单的技巧控制了分数的幅度使 softmax 输出保持稳定从而更容易让模型学习。把这想象成准备冲泡咖啡的水如果水温太高原始点积咖啡会烧焦、味道很糟糕softmax 爆炸。如果先将其调整到合适的温度就能冲泡出一杯完美的咖啡softmax 表现良好。步骤 3. 应用 Softmax现在我们已经对分数进行了缩放还有一个关键步骤将这些原始数字转换为概率。缩放后的分数告诉我们每个查询与每个键的相似程度——但它们仍然是原始数字。我们希望将它们转化为可解释的东西介于 0 和 1 之间的正数其中每一行的总和都恰好为 1这样我们就能把它们当作词语上的概率分布来处理如果没有 Softmax模型就无法知道应该给每个词分配多少相对“重要性”。Softmax 是什么Softmax 是一个简单的数学函数其中zi是该行中的第 i 个分数e^zi是该分数的指数使所有输出均为正数分母是对该行所有分数求和以做归一化再次强调softmax 是按行应用的softmax 的另一个额外好处是它能为Q与K之间的相似度引入一些非线性。换句话说它可以学到一些更复杂的词语交互而简单的点积线性变换可能会忽略它们。看看现在的注意力热图是什么样子。现在我们已经将注意力得分转化为清晰的概率是时候将它们用于一些有用的事情了。具体来说我们将结合其他单词的信息——使用V 向量。步骤 4. 注意力分数与值向量 (V) 的矩阵乘法现在我们已经得到了注意力概率是时候使用它们了。我们通过执行最后一次矩阵乘法来实现这一点Softmax 矩阵 × 值矩阵 (V)。它看起来类似于我们之前进行的 Q × Kᵀ 乘法但在这里我们不是在计算相似度而是在收集信息并将注意力概率用作权重。我们再画一个点积图我们之前已经讲解过矩阵乘法例如 Q × Kᵀ。这里的运算机制相同。例如自注意力 softmax 矩阵的维度为 [n × n]每行对应一个查询每列对应一个键。V 矩阵的维度为 [n × dv]每行对应一个键每个键都是一个 dv 维向量。如果我们将这些矩阵相乘我们将得到一个维度为 [nx dv]的结果矩阵。换句话说每个词对应一个向量。操作非常简单对于 softmax 矩阵中的每个单词行取该行的每个元素与 V 向量中的第一个元素相乘。把它们相加得到新词向量的第一个元素。对所有列重复此操作构建出这个 [n x dv] 向量。在下图所示的例子中你可以看到我们如何计算Vcake向量的第一个元素的值。最后这一步代表什么以 Netflix 为例⚠️ 非常重要得到的向量是不是概率。事实上您可以在图中看到这一点 → 我们计算出的数字“2.4”完全正确。输出结果也可能为负数。softmax 函数得到的概率值控制着 V 对每个词的贡献程度。 可以把它想象成浏览 Netflix注意力概率就像你对电影的感兴趣程度。也许 25% 星球大战、20% 星际穿越、10% 落魄大厨等等。但真正的电影V 向量有它们各自的特征 星球大战 → [冒险 8幽默 2121 分钟] 星际穿越 → [冒险 7幽默 1169到目前为止我们构建的所有机制——Q、K、V、缩放点积、加权平均值——对每个词都只执行一次。但实际上Transformer 模型会同时运行多个注意力机制。这叫做多头注意力。为什么要设置多个头每个注意力头都会学习关注词语之间不同类型的关系。例如一个头可能学会追踪代词指代“it”→“cake”另一个头可能侧重于动宾关系“ate”→“cake”还有一个头可能捕捉到情感线索“delicious”→“cake”。通过让多个头并行运行Transformer 可以对句子获得更丰富的理解。它是如何运作的每个头都运行我们上面描述的过程然后所有头连接在一起。矩阵连接实际上就是构建更宽的矩阵捕获更多特征。例如如果每个头的输出是 4 维的dv 4而我们有 8 个头h 8拼接之后每个单词的向量就变为 4 × 8 32 维。最后如果说程序员已经是高薪职业那么干AI的程序员就是高薪中的高薪。现在的市场已经用数据给程序员指明了方向学AI大模型就是冲刺高薪的最优解看着身边越来越多的同行转型大模型、拿到高薪offer很多人心里都动了心但真正的难题来了零基础小白不知道从哪入门有基础的程序员找不到系统学习路径实战项目练手无门面试不知道考什么别慌今天就给大家整理了一份【2026年最新版】AI大模型免费学习资源包覆盖从入门到实战、从理论到面试、从基础到进阶的全流程所有资料均已整理归档无冗余、无套路免费分享给每一位想抓住AI风口的程序员和小白扫码免费领取全部内容1、大模型系统化学习路线2、大模型学习书籍文档3、AI大模型最新行业报告4、大模型项目实战配套源码5、大模型大厂面试真题四阶段精细化学习规划附时间节点可直接照做结合上述资源给大家整理了一份可直接落地的四阶段学习规划总时长约2个月小白可循序渐进程序员可根据自身基础调整节奏高效掌握大模型核心能力快速实现从“入门”到“能落地、能面试”的跨越。第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…扫码免费领取全部内容6、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】