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的兼容函数来计算。
—— 来自(www.yiyibooks.cn/yiyibooks/A…

QKV的理解

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

Q=XWQK=XWKV=XWV*Q*=*X**W**Q**K*=*X**W**K**V*=*X**W**V*

如下图所示:

image.png

其中 WQ,WK和WV*W**Q*,*W**K*和*W**V*是三个可训练的参数矩阵,输入矩阵X分别与WQ,WK和WV*W**Q*,*W**K*和*W**V*相乘,生成Q, K和V, 相当于经历了一次线性变换。Attention不直接使用X,而是使用经过矩阵乘法生成的三个矩阵,因为使用三个可训练的参数矩阵,可增强模型的拟合能力。

多头注意力

什么是多头注意力


所谓多头,是分别将线性的变换之后的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维空间中矩阵拆变如下:

1  [batch-size、seq-len、dim]
2  [batch_size, seq_len, h, dim/h]
3
4  ---举例---
5  [1024,  5,     512  ]
6  [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∗Kt*Q*∗*K**t*,其他格子也是...即再聚合起来(线性变化)成为一个512维的矩阵。

image.png

多头注意力公式


MultiHead(Q,K,V)=Concat(head1,...,headh)∗WO其中headi=Attention(QWiQ,KWiK,VWiV,)*M**u**lt**i**He**a**d*(*Q*,*K*,*V*)=*C**o**n**c**a**t*(*h**e**a**d*1,...,*h**e**a**d**h*)∗*W**O*其中*h**e**a**d**i*=*A**tt**e**n**t**i**o**n*(*Q**W**i**Q*,*K**W**i**K*,*V**W**i**V*,)

其中参数映射为矩阵:

WiQεRdmodel∗dk,WiKεRdmodel∗dk,WiVεRdmodel∗dv,WOεRdmodel∗hdv*W**i**Q**ε**R**d**m**o**d**e**l*∗*d**k*,*W**i**K**ε**R**d**m**o**d**e**l*∗*d**k*,*W**i**V**ε**R**d**m**o**d**e**l*∗*d**v*,*W**O**ε**R**d**m**o**d**e**l*∗*h**d**v*

> ![transform: h=8,dmodel=512,dk=dv=dmodel/h=512/8=64*h*=8,*d**m**o**d**e**l*=512,*d**k*=*d**v*=*d**m**o**d**e**l*/*h*=512/8=64](https://i-blog.csdnimg.cn/direct/10888ed7084748228bdb662ff63d2b1c.png)

自注意力-Self-Attention

从多头注意力的结构可以看到由H份组成的"Scaled Dot-Product Attention",称为点积注意力层 或 自注意力(self-attention)。输入由query、dk 维的key和dv维的value的组成,用dk相除*q**u**ery*、*d**k* 维的*k**ey*和*d**v*维的*v**a**l**u**e*的组成,用*d**k*相除,然后应用一个softmax函数以获得值的权重。

结构如下:

image.png

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

Q与Kt*K**t*经过MatMul,生成相似度矩阵。对相似度矩阵每个元素除以 dk*d**k* ,其中dk*d**k*为K的维度大小。这个除法被称为Scale。 当dk*d**k*很大时,Q*KT*K**T*的乘法结果方法变大, 进行Scale可使方差变小,训练时梯度更新更稳定。

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

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

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

注意力公式


Attention(Q,K,V)=softmax(QKTdk)∗Vdk是Q,K矩阵的列数,即向量维度*A**tt**e**n**t**i**o**n*(*Q*,*K*,*V*)=*so**f**t**ma**x*(*d**k**Q**K**T*)∗*V**d**k*是*Q*,*K*矩阵的列数,即向量维度

其中,Q为Query、K为Key、V为Value。QKV都是从同样的输入矩阵X经过三次线性变换而来的。

在这里插入图片描述

公式推导

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

image.png

在这里插入图片描述

image.png

Attention(Q,K,V)=softmax(QKTdk)∗V*A**tt**e**n**t**i**o**n*(*Q*,*K*,*V*)=*so**f**t**ma**x*(*d**k**Q**K**T*)∗*V*

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


如果您也对AI大模型感兴趣想学习却苦于没有方向👀
小编给自己收藏整理好的学习资料分享出来给大家💖
👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码关注免费领取【保证100%免费】🆓
请添加图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
在这里插入图片描述

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

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

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

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

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

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

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

👉如何学习AI大模型?👈

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

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

请添加图片描述

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

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

在这里插入图片描述

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

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

三、AI大模型经典PDF籍

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

在这里插入图片描述

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

在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1540853.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

jenkins声明式流水线语法详解

最基本的语法包含 pipeline:所有有效的声明式流水线必须包含在一个 pipeline 块中stages:包含一系列一个或多个stage指令stage:stage包含在stages中进行,比如某个阶段steps:在阶段中具体得执行操作,一个或…

gcc配合cython编译python源代码

以前我们一般用Nuitka或者Pyinstaller来将python源码编译成二进制可执行文件。今天我们学习如何直接用gcc来编译。 很简单的一个python程序,结构如下。包含一个model.py和main.py 步骤1:处理main.py 处理main.py。即主程序入口 cython -D -2 --embe…

界面控件Telerik UI for WinForms 2024 Q3概览 - 支持合并单元格等

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件。所有的UI for WinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。 本文将介绍界面组件Telerik UI for WinForms在今年第一…

Linux 系统进程理解——标识符,状态

目录 进程描述-pcb 并行与并发 概念: 课本概念:程序的一个执行实例,正在执行的程序等 内核观点:担当分配系统资源(CPU时间,内存)的实体 这短短的两行就概括了进程,但是进程的内在…

一个能同时to B和to C、批发零售一体化的需求分析和系统设计

一些企业纠结自己的模式是to B还是to C,一些企业在to B和to C中转型,还有一些企业在做着to B的业务,也在做to C的代发,这些企业在不停地变更着业务,更换着系统,给企业带来巨大的资金和时间成本,…

21、Tomato

难度 低(个人认为中) 目标 root权限 一个flag 使用VMware启动 kali 192.168.152.56 靶机 192.168.152.66 信息收集 端口信息收集 可以看到有个ftp服务,2211实际是ssh协议端口,80、8888是一个web服务 web测试 80端口显示一个tomato 查看源码给了一些…

grafana 使用常见问题

一、点击 panel 没有反应,没有出现 edit 选项。 方法一 将鼠标放在 panel 的任意位置,然后键盘输入 "e",然后再次点击 title,即可出现选项框。 方法二 F12 查看当前 panel id,然后在浏览器 url 地址上拼接…

技术成神之路:设计模式(十四)享元模式

介绍 享元模式(Flyweight Pattern)是一种结构性设计模式,旨在通过共享对象来有效地支持大量细粒度的对象。 1.定义 享元模式通过将对象状态分为内部状态(可以共享)和外部状态(不可共享)&#xf…

Godot游戏如何提升触感体验

在游戏世界中,触感体验至关重要,既能极大提升玩家沉浸感,让其深度融入游戏,在操作角色或与环境互动时,通过触感反馈获得身临其境的真实感(比如动作游戏中角色攻击或受击时的振动反馈,能使玩家更…

STM8L101低功耗的理解

一.通过降低时钟频率来降低功耗: 规格书如图 1.code 从flash启动,主频率是16Mhz时,功耗测量2.51ma左右,对应程序如下: 2.code从flash启动,主频率是2Mhz时(上电默认值),功…

视频美颜SDK核心功能解析:打造高效直播美颜工具方案详解

随着直播行业的迅猛发展,用户对于直播画质和个人形象的要求越来越高。视频美颜SDK作为一项关键技术,已经成为各大直播平台和短视频应用的重要组成部分。通过实时美颜技术,用户能够在直播过程中呈现出更加理想的形象,从而提升直播体…

【计算机网络篇】物理层

本文主要介绍计算机网络第二章节的物理层,文中的内容是我认为的重点内容,并非所有。参考的教材是谢希仁老师编著的《计算机网络》第8版。跟学视频课为河南科技大学郑瑞娟老师所讲计网。 文章目录 🎯一.基本概念及公式 🎃基本概念…

推荐系统-电商直播 多目标排序算法探秘

前言: 电商直播已经成为电商平台流量的主要入口,今天我们一起探讨推荐算法在直播中所面临的核心问题和解决方案。以下内容参考阿里1688的技术方案整理完成。 一、核心问题介绍 在电商网站中,用户的主要行为是在商品上的行为,直播…

STM32G431RBT6(蓝桥杯)串口(发送)

一、基础配置 (1) PA9和PA10就是串口对应在单片机上的端口 注意:一定要先选择PA9的TX和PA10的RX,再去打开异步的模式 (2) 二、查看单片机的端口连接至电脑的哪里 (1)此电脑->右击属性 (2)找到端…

轻量级RSS阅读器Fusion

什么是 Fusion ? Fusion 是一款轻量级、自托管的 RSS 聚合器和阅读器。 软件主要特点: 自动分组、书签、搜索、嗅探信息导入/导出 OPML 文件支持 RSS、Atom、JSON 类型的 feed响应式、明/暗模式、PWA轻量级,自托管友好 使用 Golang 和 SQLit…

c语言面试字符串复制

1&#xff0c;下面这个函数的打印是什么&#xff1a; #include<stdio.h> #include<string.h>int main() {char str0[5], str1[] "welcome";strcpy(str0, str1);printf("str0:%s\r\n",str0);printf("str1:%s\r\n",str1); } larkla…

Linux:虚拟文件系统/proc和self进程

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 /proc目录 在Linux操作系统中&#xff0c;目录/proc是一个虚拟文件系统&#xff0c;称为procfc&#xff0c;用于访问内核和系统的实时状态信息。这个文件系统不同于常规…

java-----IDE(集成开发环境)

IDE&#xff08;集成开发环境&#xff09; IDE&#xff08;集成开发环境&#xff09;-IDEA IDEA 介绍 1) IDEA 全称 IntelliJ IDEA2) 在业界被公认为最好的Java开发工具3) IDEA是JetBrains 公司的产品&#xff0c;总部位于捷克的首都布拉格4) 除了支持Java开发&#xff0c;还…

国标GB28181视频融合监控汇聚平台的方案实现及场景应用

Liveweb国标视频融合云平台基于端-边-云一体化架构&#xff0c;部署轻量简单、功能灵活多样&#xff0c;平台可支持多协议&#xff08;GB28181/RTSP/Onvif/海康SDK/Ehome/大华SDK/RTMP推流等&#xff09;、多类型设备接入(IPC/NVR/监控平台)&#xff0c;在视频能力上&#xff0…

Cloudera安装不再复杂:基础环境设置详解

Cloudera Manager是CDH市场领先的管理平台。它以其强大的数据管理和分析能力&#xff0c;帮助企业能够轻松驾驭海量数据&#xff0c;实现数据的实时分析与洞察。 作为业界第一的端到端 Apache Hadoop 的管理应用&#xff0c;Cloudera Manager对CDH的每个部件都提供了细粒度的可…