
本文深入解析Transformer中的多头注意力机制从注意力机制的基本原理到实际应用详细介绍了编码器自注意力、解码器自注意力、编码器-解码器注意力等关键部分。通过多头注意力Transformer能从多角度理解数据提升信息处理能力和效率。文章还探讨了影响数据维度的超参数如嵌入尺寸、查询尺寸和注意力头数量以及输入层和线性层的工作原理。此外详细解释了多头注意力如何促进更深层次的理解并涉及解码器自注意力和编码器-解码器注意力中的掩蔽机制。本文适合对Transformer和大模型感兴趣的小白和程序员学习收藏为深入理解大模型打下坚实基础。1、Transformer 中如何使用注意力机制如所述Transformer 在三个关键部分运用了注意力机制编码器的自注意力输入序列对自己进行聚焦。解码器的自注意力目标序列对自己进行聚焦。解码器的编码器 - 解码器注意力目标序列关注输入序列。注意力机制的输入参数 —— 查询Query键Key和值Value注意力层通过三个参数接收输入查询Query键Key和值Value。这三个参数结构类似序列中的每个词条都通过一个向量来表示。编码器自注意力输入序列首先经过输入嵌入Input Embedding和位置编码Position Encoding处理为序列中的每个词条生成了包含意义和位置信息的编码表示。这些表示分别作为查询Query键Key和值Value的输入送入第一个编码器中的自注意力模块。自注意力模块基于这些输入为输入序列中的每个词条生成一个新的编码表示其中融合了相应的注意力得分。随着序列通过编码器堆栈每个编码器中的自注意力模块都会对词条表示进一步加入自己的注意力得分。解码器自注意力在解码器部分目标序列通过输出嵌入Output Embedding和位置编码Position Encoding处理后为每个词生成了既包含意义又包含位置信息的编码表示。这些表示作为查询Query键Key和值Value的输入送入第一个解码器的自注意力模块中。此模块针对目标序列中的每个词产生一个新的编码表示其中也融入了相应的注意力得分。通过层标准化Layer Norm处理后这些表示被用作第一个解码器中的编码器 - 解码器注意力的查询Query参数。编码器 - 解码器注意力同时堆栈中最后一个编码器的输出被送入编码器 - 解码器注意力的值Value和键Key参数中。因此编码器 - 解码器注意力同时获得了来自解码器自注意力的目标序列表示和来自编码器堆栈的输入序列表示。它进而产生了一种新的表示这种表示不仅包含了目标序列每个词的注意力得分也融合了来自输入序列的注意力得分。随着序列通过解码器堆栈每个自注意力和编码器 - 解码器注意力模块也会为每个词的表示增加自己的注意力得分。2、多头注意力在 Transformer 中注意力模块会并行地重复进行多次计算每一次计算都被称为一个 “注意力头”。注意力模块将查询Query键Key和值Value参数分成 N 个部分每部分独立通过一个注意力头进行处理。所有这些相似的注意力计算后来被合并形成最终的注意力得分。这种多头注意力机制赋予了 Transformer 强大的能力能够对每个词条编码多种关系和细微的差别。为了深入了解数据在 Transformer 内部是如何处理的我们不妨具体看一看在训练 Transformer 进行翻译时注意力模块是如何工作的。以我们的训练数据中的一个样本为例这个样本包括一个输入序列英文的 “You are welcome”和一个目标序列西班牙语的 “De nada”。3、注意力机制的关键超参数影响数据维度的有三个主要的超参数嵌入尺寸Embedding Size这是嵌入向量的宽度在我们的示例中为 6。这个维度在整个 Transformer 模型中保持一致有时也被称为 “模型尺寸”。查询尺寸Query Size与键Key和值Value的尺寸相同这是用于生成查询、键和值矩阵的三个线性层的权重尺寸在我们的示例中为 3。注意力头的数量在我们的示例中我们使用了 2 个注意力头。除此之外还有一个批量大小Batch size参数它表示样本的数量。4、输入层输入嵌入Input Embedding和位置编码Position Encoding层会生成一个形状为样本数量序列长度嵌入尺寸的矩阵。这个矩阵随后被送入堆栈中第一个编码器的查询Query键Key和值Value。为了简化展示我们在图示中将忽略批量尺寸专注于其它维度。5、线性层对于查询Query键Key和值Value有三个独立的线性层每个层都有自己的权重。输入数据通过这些线性层生成 Q查询K键和 V值矩阵。6、将数据分配到各个注意力头现在数据被分配到多个注意力头中使每个头可以独立处理数据。但需要理解的关键点是这种分配只是在逻辑上进行的。查询、键和值并不会物理上分割成为每个注意力头一个的独立矩阵。对于查询、键和值分别使用单一的数据矩阵其中每个注意力头逻辑上分配有矩阵的不同部分。同样也不存在为每个注意力头单独设置的线性层。所有的注意力头共享相同的线性层但只操作于数据矩阵的 “各自” 的逻辑部分。按注意力头逻辑划分线性层的权重通过在注意力头之间均匀分配输入数据和线性层权重可以完成这种逻辑分割。我们可以通过选择适当的查询尺寸来实现这一点查询尺寸 嵌入尺寸 / 注意力头的数量。在我们的例子里这就是为什么查询尺寸是 6 除以 2即 3 的原因。尽管层的权重和输入数据是一个整体的矩阵但我们可以想象它是每个注意力头的独立层权重 “组合在一起”。因此所有注意力头的计算可以通过一个矩阵运算来完成而无需多个独立的运算。这不仅使计算更高效还保持了模型的简洁性因为它减少了需要的线性层的数量同时依然实现了独立注意力头的强大功能。重塑 Q、K 和 V 矩阵线性层输出的 Q、K 和 V 矩阵被重新整形以包括一个明确的注意力头维度。现在每一块 “切片” 都对应着每个头的一个矩阵。接着这个矩阵通过交换头维度和序列维度再次进行重塑。虽然在图示中没有表示批量维度但 Q 的维度现在变成了Batch、Head、Sequence、Query size即批量、头、序列、查询尺寸。在下面的图示中我们可以看到我们示例中的 Q 矩阵在经过线性层处理后分割的整个过程。最后一个阶段主要用于可视化 —— 虽然 Q 矩阵是一个单一的矩阵但我们可以将它理解为每个注意力头逻辑上分开的 Q 矩阵。Q 矩阵划分为注意力头现在我们可以开始计算注意力得分了。7、为每个头计算注意力得分目前我们有了三个矩阵QK 和 V它们分布在不同的注意力头上。这些矩阵将被用于计算注意力得分。我们将展示单个注意力头的计算过程这里只涉及最后两个维度序列和查询尺寸而忽略前两个维度批量和头。从本质上讲我们可以想象我们正在观察的计算过程在每个头和批量中的每个样本上都在进行尽管实际上它们是作为一个整体的矩阵操作进行的而不是循环。第一步是进行 Q 和 K 矩阵之间的矩阵乘法。接着向结果中加入一个掩码值。在编码器的自注意力机制中这个掩码用于隐藏填充值确保它们不参与注意力得分的计算。在解码器的自注意力和编码器 - 解码器注意力中使用的掩码会有所不同我们稍后将在过程中讨论这一点。现在的结果通过除以查询尺寸的平方根来缩放然后应用 Softmax 函数。随后进行 Softmax 输出和 V 矩阵之间的另一次矩阵乘法。在编码器自注意力中完整的注意力得分计算过程如下所示8、将每个头的注意力得分合并现在我们得到了每个注意力头的独立注意力得分接下来需要将它们合并成一个统一的得分。这个合并操作实际上是分割操作的逆过程。这个过程通过重新调整结果矩阵的形状来消除头维度。具体步骤如下通过交换头维度和序列维度来重新调整注意力得分矩阵的形状。也就是说矩阵的形状从批量、头、序列、查询尺寸转变为批量、序列、头、查询尺寸。通过重塑为批量、序列、头 * 查询尺寸来折叠头维度从而有效地将每个头的注意力得分向量串联成一个整体的注意力得分。由于嵌入尺寸 头 * 查询尺寸因此合并后的得分维度为批量、序列、嵌入尺寸。在下图中我们可以看到示例得分矩阵的合并过程。9、端到端的多头注意力综合这些步骤我们得到了多头注意力机制的端到端流程。10、多头分割促进更深层次的理解嵌入向量用于捕捉单词的含义。在多头注意力机制中我们看到输入和目标序列的嵌入向量在逻辑上分布在多个头中。这意味着什么呢这意味着嵌入向量的不同部分可以学习每个单词的不同意义方面尤其是它与序列中其他单词的关联。这使得 Transformer 能够更丰富、更深入地解读序列。虽然这可能不是一个现实的例子但它有助于我们建立一种直觉。比如说嵌入向量的一个部分可能专注于捕捉名词的 “性别属性”如男性、女性、中性而另一个部分则可能关注名词的 “数目属性”如单数与复数。这在翻译过程中是重要的因为在很多语言中动词的使用取决于这些因素。11、解码器自注意力和掩蔽解码器自注意力的工作原理与编码器自注意力类似区别在于它作用于目标序列的每个单词上。同样掩蔽机制用于屏蔽目标序列中的填充词。12、编码器 - 解码器注意力和掩蔽编码器 - 解码器注意力从两个不同的来源接收输入。因此不同于编码器自注意力仅计算输入词汇间的相互作用以及解码器自注意力计算目标词汇间的相互作用编码器 - 解码器注意力是计算每个目标词汇与每个输入词汇之间的相互作用。因此在注意力得分结果中的每个单元都对应于一个 Q即目标序列中的单词与所有 K即输入序列中的单词和所有 V即输入序列中的单词之间的交互。同样掩蔽机制在目标输出中遮蔽了后续的单词这一点在本系列的第二篇文章中已经有了详细的解释。结论我们现在已经明白理解了 Transformer 的功能。但我们还没有完全回答为什么 Transformer 的注意力机制会执行它所进行的计算。为什么它要使用查询Query键Key和值Value这些概念为什么它要进行我们刚才看到的矩阵乘法我们大致可以理解为 “它捕捉了每个单词与序列中其他单词之间的关系”但这究竟意味着什么它是如何使 Transformer 的注意力机制能够理解序列中每个单词的微妙之处的这是一个有趣的问题也是本系列的最后一篇文章的主题。一旦我们弄清楚了这个问题我们就能真正理解 Transformer 架构的精妙之处了。如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】为什么要学习大模型我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年人才缺口已超百万凸显培养不足。随着AI技术飞速发展预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。大模型入门到实战全套学习大礼包1、大模型系统化学习路线作为学习AI大模型技术的新手方向至关重要。 正确的学习路线可以为你节省时间少走弯路方向不对努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划带你从零基础入门到精通2、大模型学习书籍文档学习AI大模型离不开书籍文档我精选了一系列大模型技术的书籍和学习文档电子版它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。3、AI大模型最新行业报告2025最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。4、大模型项目实战配套源码学以致用在项目实战中检验和巩固你所学到的知识同时为你找工作就业和职业发展打下坚实的基础。5、大模型大厂面试真题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我精心整理了一份大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。适用人群第一阶段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 项目内容安全互联网信息服务算法备案…学习是一个过程只要学习就会有挑战。天道酬勤你越努力就会成为越优秀的自己。如果你能在15天内完成所有的任务那你堪称天才。然而如果你能完成 60-70% 的内容你就已经开始具备成为一名大模型 AI 的正确特征了。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】