真的有被Transformer多头注意力惊艳到…

【深度学习】多头注意力机制详解 阅读详情

在这篇文章中,我们将深入探讨 Transformer 的核心部分-多头注意力(Multi-head Attention)。

这个机制能让 Transformer 同时从多个角度理解数据,提高处理信息的能力和效率。

01、Transformer 中如何使用注意力机制

Transformer 在三个关键部分运用了注意力机制:

  • 编码器的自注意力: 输入序列对自己进行聚焦。

  • 解码器的自注意力: 目标序列对自己进行聚焦。

  • 解码器的编码器 - 解码器注意力: 目标序列关注输入序列。

注意力机制的输入参数 —— 查询(Query),键(Key)和值(Value)

注意力层通过三个参数接收输入:查询(Query),键(Key)和值(Value)。这三个参数结构类似,序列中的每个词条都通过一个向量来表示。

(1)编码器自注意力

输入序列首先经过输入嵌入(Input Embedding)和位置编码(Position Encoding)处理,为序列中的每个词条生成了包含意义和位置信息的编码表示。

这些表示分别作为查询(Query),键(Key)和值(Value)的输入,送入第一个编码器中的自注意力模块。

自注意力模块基于这些输入,为输入序列中的每个词条生成一个新的编码表示,其中融合了相应的注意力得分。

随着序列通过编码器堆栈,每个编码器中的自注意力模块都会对词条表示进一步加入自己的注意力得分。

(2)解码器自注意力

在解码器部分,目标序列通过输出嵌入(Output Embedding)和位置编码(Position Encoding)处理后,为每个词生成了既包含意义又包含位置信息的编码表示。

这些表示作为查询(Query),键(Key),和值(Value)的输入,送入第一个解码器的自注意力模块中。

此模块针对目标序列中的每个词产生一个新的编码表示,其中也融入了相应的注意力得分。

通过层标准化(Layer Norm)处理后,这些表示被用作第一个解码器中的编码器 - 解码器注意力的查询(Query)参数。

(3)编码器 - 解码器注意力

同时,堆栈中最后一个编码器的输出被送入编码器 - 解码器注意力的值(Value)和键(Key)参数中。

因此,编码器 - 解码器注意力同时获得了来自解码器自注意力的目标序列表示和来自编码器堆栈的输入序列表示。

它进而产生了一种新的表示,这种表示不仅包含了目标序列每个词的注意力得分,也融合了来自输入序列的注意力得分。

随着序列通过解码器堆栈,每个自注意力和编码器 - 解码器注意力模块也会为每个词的表示增加自己的注意力得分。

02、多头注意力

在 Transformer 中,注意力模块会并行地重复进行多次计算,每一次计算都被称为一个 “注意力头”。

注意力模块将查询(Query),键(Key)和值(Value)参数分成 N 个部分,每部分独立通过一个注意力头进行处理。所有这些相似的注意力计算后来被合并,形成最终的注意力得分。

这种多头注意力机制赋予了 Transformer 强大的能力,能够对每个词条编码多种关系和细微的差别。

为了深入了解数据在 Transformer 内部是如何处理的,我们不妨具体看一看在训练 Transformer 进行翻译时,注意力模块是如何工作的。

以我们的训练数据中的一个样本为例,这个样本包括一个输入序列(英文的 “You are welcome”)和一个目标序列(西班牙语的 “De nada”)。

03、注意力机制的关键超参数

影响数据维度的有三个主要的超参数:

  • 嵌入尺寸(Embedding Size): 这是嵌入向量的宽度,在我们的示例中为 6。这个维度在整个 Transformer 模型中保持一致,有时也被称为 “模型尺寸”。

  • 查询尺寸(Query Size,与键(Key)和值(Value)的尺寸相同): 这是用于生成查询、键和值矩阵的三个线性层的权重尺寸,在我们的示例中为 3。

  • 注意力头的数量: 在我们的示例中,我们使用了 2 个注意力头。

除此之外,还有一个批量大小(Batch size)参数,它表示样本的数量。

04、输入层

输入嵌入(Input Embedding)和位置编码(Position Encoding)层会生成一个形状为(样本数量,序列长度,嵌入尺寸)的矩阵。

这个矩阵随后被送入堆栈中第一个编码器的查询(Query),键(Key)和值(Value)。

为了简化展示,我们在图示中将忽略批量尺寸,专注于其它维度。

05、线性层

对于查询(Query),键(Key)和值(Value),有三个独立的线性层,每个层都有自己的权重。

输入数据通过这些线性层,生成 Q(查询),K(键)和 V(值)矩阵。

06、将数据分配到各个注意力头

现在,数据被分配到多个注意力头中,使每个头可以独立处理数据。

但需要理解的关键点是,这种分配只是在逻辑上进行的。查询、键和值并不会物理上分割成为每个注意力头一个的独立矩阵。

对于查询、键和值,分别使用单一的数据矩阵,其中每个注意力头逻辑上分配有矩阵的不同部分。

同样,也不存在为每个注意力头单独设置的线性层。所有的注意力头共享相同的线性层,但只操作于数据矩阵的 “各自” 的逻辑部分。

(1)按注意力头逻辑划分线性层的权重

通过在注意力头之间均匀分配输入数据和线性层权重,可以完成这种逻辑分割。

我们可以通过选择适当的查询尺寸来实现这一点:查询尺寸 = 嵌入尺寸 / 注意力头的数量。

在我们的例子里,这就是为什么查询尺寸是 6 除以 2,即 3 的原因。尽管层的权重(和输入数据)是一个整体的矩阵,但我们可以想象它是每个注意力头的独立层权重 “组合在一起”。

因此,所有注意力头的计算可以通过一个矩阵运算来完成,而无需多个独立的运算。

这不仅使计算更高效,还保持了模型的简洁性,因为它减少了需要的线性层的数量,同时依然实现了独立注意力头的强大功能。

(2)重塑 Q、K 和 V 矩阵

线性层输出的 Q、K 和 V 矩阵被重新整形,以包括一个明确的注意力头维度。现在,每一块 “切片” 都对应着每个头的一个矩阵。

接着,这个矩阵通过交换头维度和序列维度再次进行重塑。虽然在图示中没有表示批量维度,但 Q 的维度现在变成了(Batch、Head、Sequence、Query size)即(批量、头、序列、查询尺寸)。

在下面的图示中,我们可以看到我们示例中的 Q 矩阵在经过线性层处理后分割的整个过程。

最后一个阶段主要用于可视化 —— 虽然 Q 矩阵是一个单一的矩阵,但我们可以将它理解为每个注意力头逻辑上分开的 Q 矩阵。

Q 矩阵划分为注意力头

现在我们可以开始计算注意力得分了。

07、为每个头计算注意力得分

目前我们有了三个矩阵:Q,K 和 V,它们分布在不同的注意力头上。这些矩阵将被用于计算注意力得分。

我们将展示单个注意力头的计算过程,这里只涉及最后两个维度(序列和查询尺寸),而忽略前两个维度(批量和头)。

从本质上讲,我们可以想象我们正在观察的计算过程在每个头和批量中的每个样本上都在进行(尽管实际上,它们是作为一个整体的矩阵操作进行的,而不是循环)。

第一步是进行 Q 和 K 矩阵之间的矩阵乘法。

接着,向结果中加入一个掩码值。在编码器的自注意力机制中,这个掩码用于隐藏填充值,确保它们不参与注意力得分的计算。

在解码器的自注意力和编码器 - 解码器注意力中使用的掩码会有所不同,我们稍后将在过程中讨论这一点。

现在的结果通过除以查询尺寸的平方根来缩放,然后应用 Softmax 函数。

随后,进行 Softmax 输出和 V 矩阵之间的另一次矩阵乘法。

在编码器自注意力中,完整的注意力得分计算过程如下所示:

08、将每个头的注意力得分合并

现在我们得到了每个注意力头的独立注意力得分,接下来需要将它们合并成一个统一的得分。这个合并操作实际上是分割操作的逆过程。

这个过程通过重新调整结果矩阵的形状来消除头维度。

具体步骤如下:

  • 通过交换头维度和序列维度来重新调整注意力得分矩阵的形状。也就是说,矩阵的形状从(批量、头、序列、查询尺寸)转变为(批量、序列、头、查询尺寸)。

  • 通过重塑为(批量、序列、头 * 查询尺寸)来折叠头维度,从而有效地将每个头的注意力得分向量串联成一个整体的注意力得分。

由于嵌入尺寸 = 头 * 查询尺寸,因此合并后的得分维度为(批量、序列、嵌入尺寸)。

在下图中,我们可以看到示例得分矩阵的合并过程:

09、端到端的多头注意力

综合这些步骤,我们得到了多头注意力机制的端到端流程。

10、多头分割促进更深层次的理解

嵌入向量用于捕捉单词的含义。在多头注意力机制中,我们看到输入(和目标)序列的嵌入向量在逻辑上分布在多个头中。这意味着什么呢?

这意味着嵌入向量的不同部分可以学习每个单词的不同意义方面,尤其是它与序列中其他单词的关联。这使得 Transformer 能够更丰富、更深入地解读序列。

虽然这可能不是一个现实的例子,但它有助于我们建立一种直觉。比如说,嵌入向量的一个部分可能专注于捕捉名词的 “性别属性”(如男性、女性、中性),而另一个部分则可能关注名词的 “数目属性”(如单数与复数)。

这在翻译过程中是重要的,因为在很多语言中,动词的使用取决于这些因素。

11、解码器自注意力和掩蔽

解码器自注意力的工作原理与编码器自注意力类似,区别在于它作用于目标序列的每个单词上。

同样,掩蔽机制用于屏蔽目标序列中的填充词。

12、编码器 - 解码器注意力和掩蔽

编码器 - 解码器注意力从两个不同的来源接收输入。因此,不同于编码器自注意力仅计算输入词汇间的相互作用,以及解码器自注意力计算目标词汇间的相互作用,编码器 - 解码器注意力是计算每个目标词汇与每个输入词汇之间的相互作用。

因此,在注意力得分结果中的每个单元都对应于一个 Q(即目标序列中的单词)与所有 K(即输入序列中的单词)和所有 V(即输入序列中的单词)之间的交互。

同样,掩蔽机制在目标输出中遮蔽了后续的单词,这一点在本系列的第二篇文章中已经有了详细的解释。

13、结论

希望这篇文章能帮助你对 Transformer 中注意力模块的作用有一个清晰的认识。当我们将其与前面介绍的 Transformer 的整体端到端流程结合起来时,我们就完整地理解了 Transformer 架构的详细操作。

我们现在已经明白理解了 Transformer 的功能。但我们还没有完全回答为什么 Transformer 的注意力机制会执行它所进行的计算。

为什么它要使用查询(Query),键(Key)和值(Value)这些概念,为什么它要进行我们刚才看到的矩阵乘法?

我们大致可以理解为 “它捕捉了每个单词与序列中其他单词之间的关系”,但这究竟意味着什么?它是如何使 Transformer 的注意力机制能够理解序列中每个单词的微妙之处的?

这是一个有趣的问题,一旦我们弄清楚了这个问题,我们就能真正理解 Transformer 架构的精妙之处了。

​

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

多头注意力(Multi-Head Attention)和交叉注意力(Cross-Attention)两种常用注意力机制的原理及区别 在类的初始化函数中,我们需要设置注意力头数num_heads,以及每个注意力头的k维度k_dim和v维度v_dim。在前向传播函数中,我们使用全连接层将x1投影到k_dim * num_heads维度,x2投影到k_dim * num_heads和v_dim * num_heads的空间,再将结果按注意力头和k_dim/v_dim维度进行调整。注意力计算完成后,将得分与v相乘,再将结果按注意力头和v_dim维度进行调整,最终使用全连接层将结果投影会in_dim维度,即可得到多头注意力计算的结果。 阅读详情

相关推荐

Transformer 02:多头注意力机制的工作原理

本文介绍多头注意力机制的工作原理,最后附上代码示例,通过代码应用自注意力机制模块的步骤。多头注意力机制是Transformer架构中的一个关键创新,它允许模型在不同的表示子空间中并行地学习输入数据的不同方面。这种机制增加了模型的灵活性和能力,使其能够捕捉到更复杂的特征关系。多头注意力机制的核心思想是将注意力操作分拆成多个“头”,每个头独立地进行注意力计算,然后将这些计算的结果合并起来。

qq_35284513的博客 6094

Transformer中16个注意力头一定要比1个注意力头效果好吗?

作者:Paul Michel编译:ronghuaiyang导读多头注意力中的冗余分析,看看是否可以在不影响性能的情况下做剪枝。“Hercules Slaying the Hydra”,...

abcdefg90876的博客 5370

学习Transformer:自注意力与多头自注意力的原理及实现

自从Transformer[3]模型在NLP领域问世后,基于Transformer的深度学习模型性能逐渐在NLP和CV领域(Vision Transformer)取得了令人惊叹的提升。本文的主要目的是介绍经典Transformer模型和Vision Transformer的技术细节及基本原理,以方便读者在CV领域了解和使用Vision Transformer。......

newxuyangcao 2万+

【动手深度学习-笔记】注意力机制(三)多头注意力

多头注意力

一个学习困难症患者的破博客 2586

transformer中的多头注意力机制

本文为《Attention Is All You Need》精读中的一个拓展 论文- 《Attention Is All You Need》 为了学到多重语意含义的表达,进行多头注意力机制的运算。不要被这个多头注意力给吓住,其实这里面就是用到了几个矩阵运算,先不用管怎么运算的,我们先宏观看一下这个注意力机制到底在做什么? 拿单头注意力机制举例: 左边的红框就是我们现在讲的部分,右图就是单头注意力机制做的事情,拿句子: The animal didn’t cross the street, because

scu-liu的博客 1万+

【NLP】多头注意力(Multi-Head Attention)的概念解析

多头注意力(Multi-Head Attention)是一种在Transformer模型中被广泛采用的注意力机制扩展形式,它通过并行地运行多个独立的注意力机制来获取输入序列的不同子空间的注意力分布,从而更全面地捕获序列中潜在的多种语义关联。在多头注意力中,输入序列首先通过三个不同的线性变换层分别得到Query、Key和Value。然后,这些变换后的向量被划分为若干个“头”,每个头都有自己独立的Query、Key和Value矩阵。

qq_42533357的博客 1万+

【Transformer模型学习】第二篇:多头注意力机制

注意力机制说明

使者大牙ℂypher的博客 1万+

Transformer的注意力和多头注意力结构(含Pytorch代码实现)

本文讲解了Transformer的注意力机制及其计算过程,并用PyTorch实现。

KO_TU的博客 2063

Transformer多头自注意力及掩码机制详解

在本文中我们重点介绍Transformer中的掩码机制及多头自注意力模块的原理以及代码实现。掩码机制是Transformer中非常重要的一个部分,在模型结构图中的三个地方有用到掩码机制,如下图所示。Transformer中的掩码分为两种,分别是填充mask和因果mask。在下图中,1和2所在为位置为填充mask,3所在的位置为因果mask。

m0_64148253的博客 1万+

Transformer动画讲解 - 单头注意力和多头注意力

单头注意力:通过生成查询、键和值向量,计算并归一化注意力分数,最终对值向量进行加权求和,从而得到输入序列中每个位置的加权表示。 多头注意力:通过将输入的查询、键和值矩阵分割成多个头,并在每个头中独立计算注意力,再将这些头的输出拼接并线性变换,从而实现在不同表示子空间中同时捕获和整合多种交互信息,提升模型的表达能力。

weixin_53880910的博客 1597

举个例子:说明transformer的多头注意力思路

通过以上步骤,我们演示了Transformer模型中的自注意力机制和多头注意力机制的具体应用过程。通过自注意力机制,每个单词都能够关注到句子中的所有其他单词,通过多头注意力机制,我们能够学习到不同方面的语义信息,并将它们整合到最终的表示中。

kingking44的博客 1276

Transformer 之多头注意力

写在前边:学习 Transformer 的过程中,找到了博客中关于Transformer系统的介绍文章,感觉非常棒,于是进行了翻译。原文链接在文末。翻译主要采用 “DeepL+人工”的方式进行,并加入了一些自己的理解。

hellozhxy的博客 4119

【面试】为什么要使用多头注意力而不是单头注意力

面试官提问:为什么要使用多头注意力而不是单头注意力?参考回答:多头注意力(Multi-Head Attention)是 Transformer 模型中的一个关键组件,它通过同时执行多个注意力机制,极大地提升了模型的表达能力。与单头注意力相比,多头注意力的优势主要体现在以下几个方面:在单头注意力中,模型只会通过一次注意力机制来计算序列中各位置之间的依赖关系,这限制了它对输入信息的多样性捕捉。注意力机制通过 Query、Key、Value 计算注意力权重后进行加权求和,生成上下文向量,但这个过程只会从一个视角去

Lewiz_124的博客 3296

Transformer多头注意力

学习 Transformer 的过程中,找到了博客中关于Transformer系统的介绍文章,感觉非常棒,于是进行了翻译。原文链接在文末。翻译主要采用 “DeepL+人工”的方式进行,并加入了一些自己的理解。

hellozhxy的博客 2741

transformer学习之多头注意力机制

文章目录题目注意力机制多头注意力机制为什么要使用多头注意力机制 题目 transformer学习之多头注意力机制 注意力机制 详细了解 ➡️ 注意力机制 之前我们也学习过了Seq2Seq,知道了把注意力机制加入到它后会使模型学习的更有效率,那么现在到了全部都由注意力机制构成的Transformer,它和Seq2Seq中加入的注意力有什么不同呢? 不同点 Seq2Seq里的Attention Transformer s(Q,K)=QTKs(Q,K)=Q^TKs(Q,K)=QTK s(Q,K)=

MyHeartWillGoOn 1万+

Transformer模型架构:自注意力机制与多头注意力详解

自注意力机制是Transformer模型的核心组件,通过Query、Key、Value三个向量实现上下文理解,解决了传统RNN的长距离依赖和并行计算问题。其工作流程包括:计算注意力分数、获取注意力权重、生成上下文相关表示。多头注意力在此基础上并行运行多组自注意力,拼接结果后通过线性变换,使模型能同时捕捉语法、语义等多维度信息。这种设计赋予Transformer强大的上下文理解能力和高效计算优势,是自然语言处理领域取得突破的关键技术。

数据知道的博客 9175

transformer-多头注意力

多头注意力是Transformer模型的关键创新,通过并行执行多个独立的注意力计算单元,使模型能够同时关注来自不同表示子空间的信息。每个注意力头学习不同的语义特征,最后通过线性变换将多头的输出组合为最终结果。当n_heads=1时,多头注意力等价于标准缩放点积注意力。多头设计通过建立多个独立的"观察视角",使模型能够捕获更丰富的上下文信息。

hbkybkzw的博客 1284

水环境综合管控平台完整方案

水环境综合管控平台项目(2026-2027)摘要 项目概况: 总投资5亿元的水环境综合管控平台项目,是国家数字政府与生态文明建设战略的重要实践。项目严格遵循2026年最新政策标准,整合物联网、大数据和AI技术,构建覆盖水质监测、污染溯源、生态保护等全流程的智能管控体系。 核心内容: 系统架构:采用五层设计(基础设施层至展示层),集成10大核心功能模块,包括水质动态监测、污染智能溯源和生态评估预警系统; 技术创新:运用2026年最新边缘计算和数字孪生技术,实现毫秒级水质异常响应和三维流域仿真; 实施规划:分7

随读手记 405
上一篇: Trans论文复现:基于模型预测控制的微网两阶段储能优化调度程序代码!~
下一篇: 学习大模型真不难!常见的问题就这么多!想要快速入门大模型,这本中文书你一定一定要好好阅读!!
少喝冰美式
博客等级 码龄3年 6839粉丝 517原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值