Transformer模型-5-Multi-Head Attention

image.png

上图红色圈中的部分为 Multi-Head Attention,是由多个Self-Attention组成的,虽然Encoder与Decoder中都有Multi-Head Attention,但他们略有区别。Encoder block包含一个 Multi-Head Attention, 而Decoder block包含两个 Multi-Head Attention。

Decoder block包含两个 Multi-Head Attention,其中第一层的多头注意力用到Masked,第二层其数据组成则是由 Encoder输出数据的3/4直接送入( Encoder输出的另外1/4数据入了Add&Norm层) 再加上 由Decoder的Outputs进入的经Token Embedding和Position Enbedding计算后得的向量,经过第一层多头注意力后的数据

注意力

Attention函数可以描述为将query和一组key-value对映射到输出,其中query、key、value和输出都是向量。 输出为value的加权和,其中分配给每个value的权重通过query与相应key的兼容函数来计算。

QKV的理解

在《Attention is all you need》论文中首次提出Transformer时构建了三个辅助向量QKV。而所谓QKV也就是Q(Query 查询),K(Key 键值),V(Value 实际的特征信息)。 他们本质上是代表了三个独立的矩阵,都是我们原本的序列X做了不同的线性变换之后的结果,都可以作为X的代表。简单的可理解成:

Q=XWQK=XWKV=XWVQ = XW^Q \\ K = XW^K \\ V = XW^V \\Q=XWQK=XWKV=XWV

如下图所示:

image.png

多头注意力

什么是多头注意力

所谓多头,是分别将线性的变换之后的QKV切分为H份,然后对每一份进行后续的self-attention操作。最后再连接并做线性回归产生输出。如下图:

image.png

观察上图的多头注意力结构的中间的Scaled Dot-Product Attention(点积自注意力),我们可以把拆为理解为高维向量被拆分为H分低维向量,并在H个低维空间里求解各自的self-Attention。

多头注意力的理解

  • 代码层面: 把原始的维度切成H份,假如h=8(切成8份),每份则为512/8=64。在每个64维做相关度(即相乘)计算
  • 原理层面: 把原来在一个高维空间里衡量一个文本的任意两个字之间的相关度,变成了在8维空间里去分别衡量任意两个字的相关度的变化

工作原理

QKV获取

经过position embedding 与 word embedding 计算后得到的向量x进入Encoder,经过3次线性变化之后,得到QKV,如下图:

image.png

获取每个字都形成512/H维度的信息

一个完整的数据矩阵, 经过计算得到QKV之后,分别获取三个(batch_size)维向量矩阵(下图右侧第一列),再次水平切分矩阵为(seq_len * 512维的信息) 数据(如下图右侧第二列)按,按字按维度切成H份(如最右侧的第三列)。再然后,计算一个字的维度。即将一个字分成H分,每一份为512/H维信息,那么一个完整的字一共有512/H维度的信息(transformer中h=8)。

image.png

在H维空间中矩阵拆变如下:

[batch-size、seq-len、dim]
[batch_size, seq_len, h, dim/h]

---举例---
[1024,  5,     512  ]
[1024,  5,  8, 512/8]

在H个子维度里计算任意两个字的盯关度

每个字的第1头和其他字的第一头分别相乘

比如 "我“ 字,按h=8拆分,得64(512/8) 维的信息。接下来再把我字的第一个64维度的信息分别和其他字的第一个64维的信息进行向量相乘。如果相乘的结果越大代表两个向量相似度接高,越小两个向量的相似度越低。如下图,右侧说明一个序列的第1个字的64维分别与其他字的第一个64维的向量相乘(对于我要吃汉堡,一共是5个字,对应右侧的5个图,从左到向,从上一下:我 想 吃 汉 堡)。

image.png

在H个不同的(512/H)维计算相关度

经过上图的拆分,由原来在512的大的维度空间里计算相似度,变成了在H个不同的(512/H) 维的子空间里分别去计算任意两个字的相似(关)度。

比如:原来只进行1次的512 * 512的向量相乘 现在变成进行8次的64 * 64这样的向量相乘,即把原来的高维空间映射成了8个不同的64维的子空间,在每字64维的子空间里,分别去衡量这一序列字词之任意两个字之间的相似度,进而提升模型的表达能力。

再进行组合成为一个512维的矩阵

当拆分计算完成即相乘之后,再连接并做线性回归产生输出, 形成如下右图所示的矩阵,第一个格子的相似关是Q∗KtQ* KtQ∗Kt,其他格子也是…即再聚合起来(线性变化)成为一个512维的矩阵。

image.png

在这里插入图片描述

自注意力-Self-Attention

从多头注意力的结构可以看到由H份组成的"Scaled Dot-Product Attention",称为点积注意力层 或 自注意力(self-attention)。输入由query、dk 维的key和dv维的value的组成,用dk相除query、d_k 维的key和d_v维的value的组成,用\sqrt{d_k}相除query、dk​ 维的key和dv​维的value的组成,用dk​​相除,然后应用一个softmax函数以获得值的权重。

结构如下:

image.png

上图是 Self-Attention 的结构,在计算的时候需要用到矩阵QKV。其中,Self-Attention接收的是输向量x组成的矩阵X,或者上一个Encoder block的输出。经过三次线性变化得到的QKV。

Q与KtK^tKt经过MatMul,生成相似度矩阵。对相似度矩阵每个元素除以 dk\sqrt{d_k}dk​​ ,其中dkd_kdk​为K的维度大小。这个除法被称为Scale。 当dkd_kdk​很大时,Q*KTK^TKT的乘法结果方法变大, 进行Scale可使方差变小,训练时梯度更新更稳定。

Mask是个要选环节,在机器翻译等自然语言处理任务中经常使用的环节。在机器翻译等NLP场景中,每个样本句子的长短不同,对于句子结束之后的位置,无需参与相似度的计算,否则影响Softmax的计算结果。

softmax是个激活函数,在没有Mask时,softmax只起到归一化的作用。

自注意力机制将一个单词与句子中的所有单词联系起来,从而提取每个词的更多信息。

注意力公式

在这里插入图片描述

公式推导

**先计算softwax**,输入为词向量矩阵X,经过与三个系数 WQ,WKWQ,WKWQ,WK和WVW^VWV 进行矩阵乘法,首先生成Q、K和V。 如下图:

image.png

在这里插入图片描述

image.png

Attention(Q,K,V)=softmax(QKTdk)∗VAttention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})*VAttention(Q,K,V)=softmax(dk​​QKT​)∗V

PS: 最后再经过一个Concat(聚合)再经过Linear(线性变换) ,得到最后的整个多头注意力机制的输出。如下 image.png

在大模型时代,我们如何有效的去学习大模型?

现如今大模型岗位需求越来越大,但是相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。
在这里插入图片描述

掌握大模型技术你还能拥有更多可能性

• 成为一名全栈大模型工程师,包括Prompt,LangChain,LoRA等技术开发、运营、产品等方向全栈工程;

• 能够拥有模型二次训练和微调能力,带领大家完成智能对话、文生图等热门应用;

• 薪资上浮10%-20%,覆盖更多高薪岗位,这是一个高需求、高待遇的热门方向和领域;

• 更优质的项目可以为未来创新创业提供基石。

可能大家都想学习AI大模型技术,也_想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把都打包整理好,希望能够真正帮助到大家_。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,下面是我整理好的一套完整的学习路线,希望能够帮助到你们学习AI大模型。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

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

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

在这里插入图片描述

三、AI大模型经典PDF书籍

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

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四、AI大模型各大场景实战案例

在这里插入图片描述

结语

【一一AGI大模型学习 所有资源获取处(无偿领取)一一】
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

### 回答1: TransformerMulti-Head Attention是一种注意力机制,它通过对输入的查询、键和值进行多个线性变换,然后将结果传入Scaled Dot-Product Attention,最终将多个Attention的结果拼接在一起,再通过线性变换得到最终的输出结果。 具体来说,Multi-Head Attention包括三个线性变换,分别是查询、键和值的变换。假设输入的查询向量、键向量和值向量分别为$Q, K, V \in R^{d_{model}}$,Multi-Head Attention的计算可以表示为: $$ \begin{aligned} \text{MultiHead}(Q,K,V) &= \text{Concat}(head_1, head_2, ..., head_h)W^O\\ \text{head}_i &= \text{Attention}(QW^Q_i, KW^K_i, VW^V_i) \end{aligned} $$ 其,$W^Q_i, W^K_i, W^V_i \in R^{d_{model} \times d_k}$是参数矩阵,$d_k$表示每个头部的维度。$\text{Attention}$表示Scaled Dot-Product Attention,它对输入的查询、键和值进行计算,得到Attention的输出。$\text{Concat}$表示将多个头部的结果拼接在一起,$W^O \in R^{hd_v \times d_{model}}$是参数矩阵,$d_v$表示拼接后的向量维度。 通过使用多个头部,Multi-Head Attention可以在不同的子空间学习到不同的注意力权重,从而更好地捕获输入序列的信息。它在Transformer的应用是非常重要的,可以帮助模型更好地处理长序列数据。 ### 回答2: Transformer的多头注意力机制(multi-head attention)是一种用于处理序列数据的关键组件。它被广泛应用于自然语言处理领域,能够有效地捕捉输入序列的全局依赖关系。 多头注意力机制由多个独立的注意力头组成,每个头都有自己的查询(Q)、键(K)和值(V)矩阵。这些矩阵通过线性变换得到,并通过点积注意力机制计算注意力权重。最终,多头注意力将每个头的注意力权重加权平均,并通过线性变换将其映射回原始表示空间。 通过使用多个头,模型可以同时学习不同的注意力表示。这使得模型能够对不同位置的输入序列部分进行多角度的关注,并捕捉到不同特征的相互作用。这种能力有助于提高模型的表现力,并有效地减少了输入序列长度对性能的影响。 在每个注意力头,Q、K和V矩阵的计算是并行进行的,从而提高了计算效率。然后,通过对注意力权重进行加权平均,多头注意力能够融合多个头的表示,增强了模型的表达能力。 通过引入多头注意力机制,Transformer模型能够建模长距离的依赖关系,从而在许多自然语言处理任务取得了显著的突破。同时,多头注意力机制的并行计算也使得Transformer能够适应大规模数据,提高了训练效率和模型的泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值