一文搞懂 Transformer 中的三种注意力机制

108 篇文章 3 订阅
61 篇文章 2 订阅

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。

针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。

汇总合集

《大模型面试宝典》(2024版) 发布!
《大模型实战宝典》(2024版) 发布!


《Attention is All You Need》3.2.3 注意力机制的应用
图片

Transformer使用多头注意力机制的三种不同方式如下:

  • 在“编码器-解码器注意力”层中,查询来自前一层解码器,而记忆键和值则来自编码器的输出。这使得解码器中的每个位置都能关注输入序列中的所有位置。这模仿了序列到序列模型中典型的编码器-解码器注意力机制。

  • 编码器包含自注意力层。在自注意力层中,所有的键、值和查询都来自同一个地方,即编码器前一层的输出。编码器中的每个位置都可以关注编码器前一层中的所有位置。

  • 同样,解码器中的自注意力层允许解码器中的每个位置关注解码器中包括该位置在内的所有位置。我们需要防止解码器中的信息向左流动,以保持自回归属性。我们通过将softmax输入中对应非法连接的所有值掩盖掉(设为-∞)来实现这一点。

相信大家跟我一样,刚开始看到这段话一脸懵逼,每个字都认识,但组合起来却感觉难以理解,甚至有点“不明觉厉”的感觉。

那今天我们来说人话、敲黑板、划重点,希望通过一系列问答,让大家真正一文搞懂Transformer中的三种注意力机制。

本文将从Self Attention、Cross Attention、Causal Attention_三个方面,带您一文搞懂 Transformer中的三种注意力机制。(每篇文章的标准开头不能少,生活再苦再累,仪式感不能缺)

图片

Transformer中的三种注意力机制

一、Self Attention_

疑问一:图中编码器明明写的是Multi-Head Attention,怎么就说是Self Attention?

图片

编码器的Self Attention

先了解三个概念:Scaled Dot-Product Attention、Self Attention、Multi-Head Attention

图片

Scaled Dot-Product Attention和Multi-Head Attention

Scaled Dot-Product Attention(缩放点积注意力):输入包括维度为dk的查询(queries)和键(keys),以及维度为dv的值(values)。我们计算查询与所有键的点积,每个点积结果都除以√dk,然后应用softmax函数,以得到注意力分数。

体现如何计算注意力分数,关注Q、K、V计算公式。

图片

Scaled Dot-Product Attention(缩放点积注意力)

Self Attention(自注意力):对同一个序列,通过缩放点积注意力计算注意力分数,最终对值向量进行加权求和,从而得到输入序列中每个位置的加权表示。

表达的是一种注意力机制,如何使用缩放点积注意力对同一个序列计算注意力分数,从而得到同一序列中每个位置的注意力权重。

图片

Self Attention(自注意力)

Multi-Head Attention(多头注意力):多个注意力头并行运行,每个头都会独立地计算注意力权重和输出,然后将所有头的输出拼接起来得到最终的输出。

强调的是一种实操方法,实际操作中我们并不会使用单个维度来执行单一的注意力函数,而是通过h=8个头分别计算,然后加权平均。这样为了避免单个计算的误差。

图片

Multi-Head Attention(多头注意力)

疑问解答:Scaled Dot-Product Attention、Self Attention、Multi-Head Attention实际上说的是同一件事,从不同维度解答如何获取同一个序列中每个位置的注意力权重。图上标注Multi-Head Attention强调需要多个头计算注意力权重。

Transformer第一个注意力(Self Attention)更严谨的描述应该为:编码器输入序列通过Multi-Head Self Attention(多头自注意力)计算注意力权重。

二、Cross Attention

疑问二:图中编码器明明写的也是Multi-Head Attention,怎么就说是Cross Attention?

图片

编码器-解码器的Cross Attention

先了解一个概念:Cross Attention

Cross Attention(交叉注意力):输入来自两个不同的序列,一个序列用作查询(Q),另一个序列提供键(K)和值(V),实现跨序列的交互。

图片

Cross Attention(交叉注意力)

Cross Attention与Self Attention的区别:

  • 输入来源:

  • Cross Attention:来自两个不同的序列,一个来自编码器,一个来自解码器

  • Self Attention:来自编码器的同一序列

  • 实现目标:

  • Cross Attention:解码器序列用作查询(Q),编码器序列提供键(K)和值(V),用于在编码器-解码器两个不同序列之间进行注意力转移。

  • Self Attention:查询(Q)、键(K)和值(V)均来自编码器同一序列,实现编码器序列内部的注意力计算。

疑问解答:Cross Attention、Multi-Head Attention实际上说的是也同一件事,从不同维度解答两个不同序列之间如何进行注意力转移。图上标注Multi-Head Attention强调需要多个头进行注意力转移计算。

Transformer第二个注意力(Cross Attention)更严谨的描述应该为:编码器-解码器两个序列通过Multi-Head Cross Attention(多头交叉注意力)进行注意力转移。

三、Causal Attention

疑问三:图中编码器明明写的也是Masked Multi-Head Attention,怎么就说是Causal Attention?

图片

解码器的Causal Attention

先了解四个概念:Predict The Next Word、Masked Language Model、Autoregressive、Causal Attention

Predict The Next Word(预测下一个词):模型通常需要基于已经生成的词来预测下一个词。这种特性要求模型在预测时不能“看到”未来的信息,以避免预测受到未来信息的影响。

图片

预测下一个词

Masked Language Model(掩码语言模型):遮盖一些词语来让模型学习预测被遮盖的词语,从而帮助模型学习语言规律。

图片

掩码语言模型

Autoregressive(自回归):在生成序列的某个词时,解码器会考虑已经生成的所有词,包括当前正在生成的这个词本身。为了保持自回归属性,即模型在生成序列时只能基于已经生成的信息进行预测,我们需要防止解码器中的信息向左流动。换句话说,当解码器在生成第t个词时,它不应该看到未来(即第t+1, t+2,…等位置)的信息。

图片

自回归

Causal Attention(因果注意力):为了确保模型在生成序列时,只依赖于之前的输入信息,而不会受到未来信息的影响。Causal Attention通过掩盖(mask)未来的位置来实现这一点,使得模型在预测某个位置的输出时,只能看到该位置及其之前的输入。

图片

Causal Attention(因果注意力)

疑问解答:Causal Attention、Mask Multi-Head Attention实际上说的是也同一件事,解码器中Self Attention如何结合Causal Attention来保持自回归属性。

Mask Multi-Head Attention强调使用了多个独立的注意力头,每个头都可以学习不同的注意力权重,从而增强模型的表示能力。而Causal Attention则强调了模型在预测时只能依赖于已经生成的信息,不能看到未来的信息。

Transformer第三个注意力(Causal Attention)更严谨的描述应该为:解码器的单个序列通过Multi-Head Causal Self Attention(多头因果自注意力)进行注意力计算。

技术交流

前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

我们建了算法岗面试与技术交流群, 想要进交流群、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2040。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。

方式①、微信搜索公众号:机器学习社区,后台回复:技术交流
方式②、添加微信号:mlc2040,备注:技术交流+CSDN

用通俗易懂的方式讲解系列

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Transformer 是一种神经网络架构,它可以在序列的自然语言或本处理任务取得很好的性能。它由 Google 在 2017 年提出,并在《自然语言处理任务的机器翻译》一进行了描述。 Transformer 通过使用注意力机制来解决序列的长依赖问题。它的优势在于,它可以并行地执行序列的转换,因此速度更快,并且不需要使用循环神经网络,因此也不会有梯度消失或爆炸的问题。 Transformer 已经在许多自然语言处理任务得到了广泛应用,包括机器翻译、本分类、命名实体识别和句子相似性计算。它还被用于一些生成任务,如本生成和代码生成。 ### 回答2: Transformer是一种常见的电力设备,用于将交流电的电压从一种水平变换为另一种水平。它由两个或多个线圈共享一个磁心组成。在变压器,有一个主线圈,也称为初级线圈,和一个次级线圈。当交流电通过主线圈时,它会通过磁场作用产生电感效应,从而在次级线圈引起电压。根据线圈的匝数比率,变压器可以将电压升高或降低。 变压器在电力系统起着重要的作用。例如,在发电厂,变压器用于升压以将发电机产生的低电压转换为输送线路所需的高电压。这可以有效地减少输送线路上的功耗,并减少能量损失。类似地,在消费者处,变压器用于将输送线路上的高电压转换为家庭和工业用途所需的低电压。这确保了电力的安全分配和使用。 除了电力系统,变压器还广泛应用于各种电子设备。例如,电子变压器用于调整电子设备的电压水平。变压器还在无线充电设备使用,以将电压从发射器传输到接收器。 总之,Transformer是一种重要的电力设备,用于变换交流电的电压水平。它在电力系统和各种电子设备发挥着至关重要的作用,确保了电力的高效传输和安全使用。 ### 回答3: Transformer是一种用于电力传输和分配的重要电气设备,也被称为变压器。它能够通过电磁感应原理将交流电的电压从高压变为低压,或者从低压变为高压。Transformer主要由一个铁芯和两个或多个绕组组成。 在Transformer,有一个绕组连接到输入电源,称为主绕组,另一个绕组连接到输出电路,称为副绕组。当主绕组接通电源时,所产生的磁场在铁芯产生磁场变化,进而引起副绕组的电压变化。根据软磁材料的特性,Transformer在电网实现了高效率的电能传输。 Transformer有许多应用领域,其最常见的是电力系统的电网传输。它将发电厂产生的高压电能传输到各个地方的输电线路,并在到达终端用户时将其转换为适用于家庭和工业用途的低压电能。除了电力系统的电网传输,Transformer还广泛应用于变频器、计算机、电子设备和通信系统等领域。 Transformer的优势在于其高效率、可靠性和经济性。它可以在不改变电能准确度的同时,将电压和电流转换为适合特定需求的级别。此外,Transformer还具有隔离电路、提供电源稳压、降低功率损耗和提高电能质量的功能。 作为一种重要的电气设备,Transformer在电力系统扮演着至关重要的角色。它不仅能够满足电力分配、变换和升降压的需求,还能提供稳定、可靠的电源供应。随着电力需求的增长和技术进步,Transformer的设计和制造也在不断演进,以适应各种新兴应用和环境要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值