注意力机制(Attention)、自注意力机制(Self Attention)和多头注意力(Multi-head Self Attention)机制详解

news2025/1/11 1:52:34

目录

  • 参考
  • 一、Attention注意力机制
    • 原理
    • 计算过程
  • 二、自注意力机制
    • 2.1 自注意力关键!!
    • 2.2 实现步骤
      • 1. 获取 K Q V
      • 2. MatMul
      • 3. scale + softmax归一化
      • 4. MalMul
    • 2.3 自注意力机制的缺陷
  • 三、多头自注意力机制
    • 3.1 简介
    • 3.2 实现步骤
    • 3.3 公式

参考

感谢我的互联网导师:水论文的程序猿
参考资料和图片来源:
Transformer、GPT、BERT,预训练语言模型的前世今生
【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解
【Deformable DETR 论文+源码解读】Deformable Transformers for End-to-End Object Detection

一、Attention注意力机制

原理

我(查询q) 看-> 一张图 ( 被查询对象v )

我看这张图,第一眼,我就会去判断哪些东西对我而言更重要,哪些对我而言又更不重要(去计算 Q 和 V 里的事物的重要度)

重要度计算,其实是不是就是相似度计算(更接近),点乘其实是求内积。
在这里插入图片描述

计算过程

被查询对象: V = ( v 1 , v 2 , v 3 , . . . ) V = (v1, v2, v3, ...) V=v1,v2,v3,...

在transformer中,K == V

  1. 计算相似度: Q ∗ k 1 , Q ∗ k 2 , . . . . . . = s 1 , s 2 , . . s n . Q*k1 , Q*k2, ...... = s1, s2, ..sn. Qk1,Qk2,......=s1,s2,..sn.

  2. 归一化求概率: s o f t m a x ( s 1 , s 2 , s 3 , . . . ) = a 1 , a 2 , a 3 , . . a n . softmax(s1, s2, s3, ...) = a1, a2, a3, ..an. softmax(s1,s2,s3,...)=a1,a2,a3,..an.

  3. 更新V为V’: V ′ = ( a 1 ∗ v 1 + a 2 ∗ v 2 + . . . + a n ∗ v n ) V' = (a1*v1+a2*v2+...+an*vn) V=(a1v1+a2v2+...+anvn)

这样就会就得到一个新的 V’,用 V’ 代替 V。这个新的 V’除了能表示K和V(K==V),还能代表Q的信息(对Q而言对K中哪个部分关注最多,最重要),找出来了Q对K的注意力集中在哪里。

二、自注意力机制

2.1 自注意力关键!!

K、 V、 Q 来自于同一个X,三者同源。所以叫做自注意力

K V Q 如何得到? 通过x与三个向量参数( W K , W V , W Q W^K, W^V, W^Q WK,WV,WQ)相乘得到。这三个参数向量也是我们要学习的东西。

在这里插入图片描述

2.2 实现步骤

1. 获取 K Q V

有一个句子是“ T h i n k i n g M a c h i n e s ”,该句子中有两个单词,两个单词的向量分别 x 1 , x 2 ,分别与( W K , W V , W Q ) 3 个矩阵相乘得到 q 1 , q 2 , k 1 , k 2 , v 1 , v 2 的 6 个向量。 有一个句子是“Thinking Machines”,该句子中有两个单词,两个单词的向量分别x1,x2,分别与(W^K, W^V, W^Q)3个矩阵相乘得到q1,q2,k1,k2,v1,v2的6个向量。 有一个句子是ThinkingMachines,该句子中有两个单词,两个单词的向量分别x1,x2,分别与(WK,WV,WQ3个矩阵相乘得到q1,q2,k1,k2,v1,v26个向量。
在这里插入图片描述

2. MatMul

q 1 分别与 k 1 , k 2 点乘得到得分,寻找 q 1 对 x 1 , x 2 的重要信息 q1分别与k1,k2点乘得到得分,寻找q1对x1,x2的重要信息 q1分别与k1,k2点乘得到得分,寻找q1x1,x2的重要信息
在这里插入图片描述

3. scale + softmax归一化

scale:对得分进行规范,防止梯度下降出现问题。
softmax: 归一化求概率得到a1,a2
在这里插入图片描述
经过Softmax的归一化后,每个值是一个大于0且小于1的权重系数,且总和为0,这个结果可以被理解成一个权重矩阵W。

这个W就是注意力权重,其中包含着该单词与该句子之间的相关信息和更关心哪个部分。

4. MalMul

用得分比例 [0.88,0.12] 乘以[ v 1 , v 2 v1,v2 v1,v2]后得到相加得到z1 : z 1 = ( a 1 ∗ v 1 + a 1 ∗ v 2 ) z1 = (a1 * v1 + a1*v2) z1=(a1v1+a1v2)

在这里插入图片描述

得到的新向量z1就是thinking这个单词的新的词向量,z1里面包含着thinking这个单词和“Thinking Machines”这句话里每一个单词的相似程度和关联信息。

同理可得到z2向量,代表machines的新的词向量。

2.3 自注意力机制的缺陷

  1. 自注意力机制虽然考虑了所有的输入向量,但没有考虑到向量的位置信息。在实际的文字处理问题中,可能在不同位置词语具有不同的性质,比如动词往往较低频率出现在句首。(解决:引入位置编码)
  2. 模型在对当前位置的信息进行编码时,会过度的将注意力集中于自身的位置,有效信息抓取能力就差一些。 (解决:引入多头注意力)

三、多头自注意力机制

3.1 简介

简单理解:多组自注意力机制并行运行,最后把结果拼接起来。
在这里插入图片描述

3.2 实现步骤

  1. 定义多组 W q 、 W k 和 W v Wq、Wk和Wv WqWkWv,生成多组Q、K和V
  2. 分别对多组进行自注意力机制,得到多组 z ( z 0 − z n z(z_0-z_n zz0zn
  3. 多组 z ( z 0 − z n z(z_0-z_n zz0zn)进行拼接(cancat),再乘以矩阵W做一次线性变化降低维度,得到最终的Z。
    在这里插入图片描述

3.3 公式

在这里插入图片描述
其中,x是输入特征,z表示 query,由x经过Wq线性变换来的,k是key的索引,q 是query的索引,M 表示多头注意力的头数,m代表第几注意力头部, A m q k A_{mqk} Amqk表示第m头注意力权重(即上图a中一直到SoftMax的过程), W m ’ x k W^’_m x_k Wmxk其实就是value,整个[ ]内的过程就是图a的全过程, W m W_m Wm是注意力施加在value之后的结果经过线性变换(也就是图b的Linear)从而得到不同头部的输出结果, Ω k \Omega_k Ωk表示所有key的集合。

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

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

相关文章

【51单片机】之入门详解(一)

📃博客主页: 小镇敲码人 💞热门专栏:C语言进阶 🚀 欢迎关注:👍点赞 👂🏽留言 😍收藏 🌏 任尔江湖满血骨,我自踏雪寻梅香。 万千浮云遮…

Android Rxjava架构原理与使用的详解解答

简单介绍 Rxjava这个名字,其中java代表java语言,而Rx是什么意思呢?Rx是Reactive Extensions的简写,翻译过来就是,响应式拓展。所以Rxjava的名字的含义就是,对java语言的拓展,让其可以实现对数据…

python画折线图 一张图上三条折线 设置折线marker chatgpt画折线图的提示词

chatgpt提示词 用python写一段代码,该代码的功能是:画一个折线图,该折线图x轴的标题是面积,y轴的标题是房价。该图上有三条折线,分别代表深圳,广州,郑州。这三条折线的颜色分别为红&#xff0c…

allegro等跨境电商平台可以测评补单吗?

做allegro平台如果想要销量好,基本免不了要进行测评补单,因为不管对于哪一个平台的新店铺新产品而言,前期只靠自然流量是很难的,所以很多卖家都会选择测评来提高产品的排名,权重和销量,也可以提升订单量&am…

基于JavaWeb+SSM+基于微信小程序的“生鲜食品”团购平台生鲜商城系统的设计和实现

基于JavaWebSSM基于微信小程序的“生鲜食品”团购平台生鲜商城系统的设计和实现 源码获取入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 前言 生鲜食品是我们生活中的必需品,为了确保食品的新鲜…

贝锐向日葵如何实现无人值守远程控制?

1.适用场景 (1)远程公司电脑应急办公(2)远程家里电脑游戏挂机(3)异地远程传输文件 2.操作步骤 (1)电脑安装向日葵个人版并登录贝锐账号(点击注册)&#xf…

deepstream生成pipeline拓扑图的方法

deepstream生成pipeline拓扑图的方法 1、前期工作1.1 安装dot 2、使用命令行生成2.1、添加环境变量2.2 、运行管道2.3 、使用dot 生成png图片 3、在c中使用3.1、添加代码3.2、运行代码3.3 、使用dot 生成png图片 4、在python中使用4.1、添加代码4.2 、使用dot 生成png图片 1、前…

软件外包开发需求整理需要注意的问题

在整理软件开发需求时,注意以下问题可以有助于确保需求的准确性、完整性和可行性。通过认真考虑这些问题,您可以确保整理出一份清晰、全面且具有可行性的软件开发需求文档,有助于项目的成功实施。北京木奇移动技术有限公司,专业的…

Vue3 数据响应式原理:Proxy和Reflect

我们在Vue2中使用的是Object.defineProperty方法来实现数据响应式的,可以通过get和set方法来监听对象的访问和修改。 但是并不能响应对象中属性的增加和删除,只能使用Vue.$set 和Vue.$delete 来对对象中的属性进行增加和删除。 数组也不能直接通过下标…

es性能强悍的推演过程

前言 es底层复用的Lucene的能力,Lucene在以前的文章中有所讲解,感兴趣可查看 https://blog.csdn.net/u013978512/article/details/125474873?ops_request_misc%257B%2522request%255Fid%2522%253A%2522169771769916777224433628%2522%252C%2522scm%2522…

02-瑞吉外卖员工表的增删改查

添加员工信息 执行流程 第一步: 用户点击添加员工按钮跳转到add.html页面,然后在页面中输入要添加的员工的信息 第二步: 用户点击保存按钮发送Ajax请求将用户输入的员工信息以json的格式提交到服务端 第三步: 服务端Controller接收页面提交的json格式的数据并转化为java对象…

酷开系统 | 酷开科技:打造精彩纷呈的电影盛宴

对于许多人来说,观看电影是一种享受、一种放松、一种逃避现实的方式。而现在,酷开科技作为行业内领军企业,为我们带来了一种全新的居家观影体验,让电影不仅是一种娱乐方式,更是科技的展现。 酷开科技致力于为观众带来…

【MySQL日志与备份篇】数据库备份与恢复

数据库备份与恢复 文章目录 数据库备份与恢复1. 物理备份与逻辑备份2. mysqldump实现逻辑备份2.1 备份一个数据库2.2 备份全部数据库2.3 备份部分数据库2.4 备份部分表2.5 备份单表的部分数据2.6 排除某些表的备份2.7 只备份结构或只备份数据2.8 备份中包含存储过程、函数、事件…

金蝶云星空设置单据体行高

文章目录 金蝶云星空设置单据体行高表单插件Python脚本 金蝶云星空设置单据体行高 表单插件 新建类继承AbstractBillPlugIn,重写OnInitialize方法进行设置 public override void OnInitialize(InitializeEventArgs e){base.OnInitialize(e);this.View.GetControl&…

图片高清重建

图像超分辨率重建(super resolution,SR)是指利用计算机将一幅低分辨率图像(low resolution,LR)或图像序列进行处理,恢复出高分辨率图像(high resolution,HR)的一种图像处理技术。简单…

红海云签约湘湖实验室,助力科研机构人力资源数字化全面升级

湘湖实验室(农业浙江省实验室)是由浙江省农业科学院和萧山区人民政府共同举办的新型研发机构,定位为农业核心种质资源生物制造与生物互作科学问题和核心技术研究,瞄准世界农业科技发展前沿,面向国家重大战略&#xff0…

Qt执行带参sql

//准备执行的sql语句,此为带参的sql语句query.prepare("update employee set Name:Name, Gender:Gender,Height:Height,"" Birthday:Birthday, Mobile:Mobile, Province:Province,"" City:City, Department:Department, Education:Educati…

DeepFool: a simple and accurate method to fool deep neural networks

DeepFool: a simple and accurate method to fool deep neural networks----《DeepFool:一种简单而准确的欺骗深度神经网络的方法》 摘要 最先进的深度神经网络已经在许多图像分类任务上取得了令人印象深刻的结果。然而,这些相同的架构已被证明对于图像…

使用cmd运行控制面板工具

如何通过键入命令运行“控制面板”工具 - Microsoft 支持 windows自带管理工具(exe/cpl/msc)-CSDN博客 CMD下打开系统各面板_cmd打开轻松使用面板-CSDN博客 示例: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl 替换powercfg.…

EXCEL——计算数据分散程度的相关函数

一、PERCENTIL函数 1.函数介绍 通常用来返回数据集给定百分点上的值。 2.函数解读 函数公式: PERCENTILE(数据, 百分点) 参数释义: 数据(必填):待处理的数组或数据区域。 百分点(必填)&…