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

目录

  • 参考
  • 一、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.niftyadmin.cn/n/5176791.html

相关文章

保姆级vue-pdf的使用过程

第一步 引入vue-pdf npm install --save vue-pdf 第二步 按照需求我们慢慢进行 01.给你一个pdf文件的url&#xff0c;需要在页面渲染 代码 <template><div><pdfref"pdf":src"url"></pdf></div> </template> <…

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

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

RT-DETR算法优化改进:多维协作注意模块MCA,暴力涨点,效果秒杀ECA、SRM、CBAM等 | 即插即用系列

💡💡💡本文独家改进: 多维协作注意模块MCA,暴力涨点,效果秒杀ECA、SRM、CBAM,创新性十足,可直接作为创新点使用。 1)代替RepC3进行使用; 2)MCAAttention直接作为注意力进行使用; 推荐指数:五星 RT-DETR魔术师专栏介绍: https://blog.csdn.net/m0_63774211/…

2023年【广东省安全员B证第四批(项目负责人)】考试及广东省安全员B证第四批(项目负责人)试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 广东省安全员B证第四批&#xff08;项目负责人&#xff09;考试考前必练&#xff01;安全生产模拟考试一点通每个月更新广东省安全员B证第四批&#xff08;项目负责人&#xff09;试题及解析题目及答案&#xff01;多…

功能测试-用例编写

一&#xff1a;购物车 设计操作&#xff1a;增&#xff08;添加商品&#xff09;删&#xff08;删除商品&#xff09;改&#xff08;编辑、跳转商品&#xff09;查&#xff08;检查金额、数目、优惠明细&#xff09; 涉及交互&#xff1a;购物车与用户登录状态的交互&#xff…

海上船舶交通事故VR模拟体验低成本高效率-深圳华锐视点

在海上运输行业&#xff0c;安全事故的防范和应对能力是企业安全教育的重中之重。针对这一问题&#xff0c;海上运输事故VR模拟逃生演练成为了一种创新且高效的教育手段。通过这种演练&#xff0c;企业能够在提升员工安全意识和技能方面获得多方面的帮助。 在VR船舶搜救演练中&…

如何设置静态代理IP切换电脑上网地址使用?

在当今的网络时代&#xff0c;代理IP已成为一种常见的网络访问方式。通过使用代理IP&#xff0c;我们可以隐藏自己的真实IP地址&#xff0c;从而保护自己的隐私和安全。但是&#xff0c;有时候我们需要切换代理IP来满足不同的上网需求。本文将介绍如何设置静态代理IP切换电脑上…

day55 反向解析和视图层精确定位

上周内容回顾 orm的增删改查 1. 查询 from app01 import models models.UserInfo.objects.all() # 查询所有的字段信息和数据 resmodels.UserInfo.objects.first() # 查询一条&#xff0c;而且是第一条&#xff0c;queryset对象&#xff0c;列表套对象的形式 if res:res[0] t…