Transformer——Attention 注意力机制

news2024/11/24 19:38:38

注意力机制

Transformer的注意力机制借鉴了人类的注意力机制。人类通过眼睛的视觉单元去扫描图像,其中的重点区域会被大脑的神经元处理从而获得更多的信息,这是人类长期精华所获得的一种能力。

以论文中的例子来看,红色区域表示我们人脑视觉更为关注的区域。而Attention 机制则是模拟这一人脑机制,让计算机能够正确的从总舵信息中选择出对当前任务更为重要的信息
请添加图片描述

Attention 机制原理

人类视觉注意力机制的原理为:从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略不重要的信息

计算机的注意力机制模型就是从大量信息(Values)中筛选出少量的重要信息,这个重要信息对于另外一个信息(Query)是重要的。即注意力模型的主要作用就是通过Query从Values中筛选出重要信息

结合下图,Attention可以翻译为如下的描述,其将Query和KV(把value拆分为key-value信息,这两个值看作等同的)映射到输出上。其中Q(query)、K(key)、V(value)都是一个向量,输出 V , V^, V则是所有value的加权,其中权重是由Q和每个K计算出来的。
请添加图片描述

KV 是怎么来的?

对于上述图像来说,我们将其分割为不同的小块,其中每个块的向量化表示则是向量K
在这里插入图片描述

详细计算过程

刚刚提到,输出 V , V^, V是对所有value的加权,是由 Query 和每个 key 计算出来的,计算方法分为三步:

  1. 第一步:计算Q和K的相似度,可以用 F F F来表示: f ( Q , K i ) , i = 1 , 2 , . . . , n f(Q,K_i),i=1,2,...,n f(Q,Ki),i=1,2,...,n
    • 计算方法一般分为四种:
      • 点乘: f ( Q , K i ) = Q T K i f(Q,K_i)=Q^TK_i f(Q,Ki)=QTKi
      • 权重: f ( Q , K i ) = Q T K i W f(Q,K_i)=Q^TK_iW f(Q,Ki)=QTKiW
      • 拼接权重: f ( Q , K i ) = [ Q T K i ] W f(Q,K_i)=[Q^TK_i]W f(Q,Ki)=[QTKi]W
      • 感知器: f ( Q , K i ) = V T t a n h ( W Q + U K i ) f(Q,K_i)=V^Ttanh(WQ+UK_i) f(Q,Ki)=VTtanh(WQ+UKi)
  2. 第二布:将第一步得到的相似度进行SoftMax操作,进行归一化: α i = s o f t m a x ( F ( Q , K i ) d k ) \alpha_i=softmax(\frac{F(Q,K_i)}{\sqrt{d_k}}) αi=softmax(dk F(Q,Ki))
    • 这一步进行归一化是避免得到的相似度F1 = 50F2 = 1 之间的差值多大影响模型效果,归一化之后相似度可能就会变成F1 = 0.8F2 = 0.1
  3. 第三步:针对计算出来的权重 α i \alpha^i αi,对V中的所有values进行加权求和计算,得到Attention 向量: A t t e n t i o n = ∑ i = 1 m α i V i Attention=\sum_{i=1}^{m}\alpha_iV_i Attention=i=1mαiVi

注1:softmax函数原理:https://zhuanlan.zhihu.com/p/503321685
注2:为什么要除 d k \sqrt{d_k} dk :softmax函数的输入由key向量和query向量之间的点积组成,key向量和query向量的维度 越大,点积往往越大, 原文论中12个head对应的大小是64,作者在原论文中采用的补救措施,是将点积除以key和query维度的平方根

Attention计算实战

假设我们现在有下面这么一组数据,现在我们的问题是:腰围57其对应的体重是多少(query)

腰围(key)体重(value)
5140
5643
5848

对于单维度场景,我们认为57 腰围所对应的体重在43~48之间,同时考虑到51 腰围这个key,所以我们的公式可以表示为如下的形式:
f ( 57 ) = ∑ i = 1 3 α i V i = α ( 57 , 51 ) ∗ 40 + α ( 57 , 56 ) ∗ 43 + α ( 57 , 58 ) ∗ 48 f(57) =\sum_{i=1}^{3}\alpha_iV_i= \alpha(57,51)*40+\alpha(57,56)*43+\alpha(57,58)*48 f(57)=i=13αiVi=α(57,51)40+α(57,56)43+α(57,58)48

注: 同样的,对于多维向量,我们采用点乘的方式依然可以得到 f f f

Self-Attention 自注意力机制

Self-Attention是Attenion机制的特化。Self-Attention 同样也有着三个输入Q、K、V:对于Self-Attention,Q、K、V均来自句子X的词向量 x x x的线性转化。
请添加图片描述
我们这里采用Thinking Machines这里来举例:

  1. 第一步:两个单词 Thinking 和 Machines。通过线性变换,即 x 1 x_1 x1 x 2 x_2 x2 这两个向量分别和 W Q , W K , W V W^Q,W^K,W^V WQ,WK,WV 三个矩阵点乘得到 q 1 , q 2 , k 1 , k 2 , v 1 , v 2 q_1,q_2,k_1,k_2,v_1,v_2 q1,q2,k1,k2,v1,v2一共六个向量,两两拼接形成对应的QKV矩阵。
    请添加图片描述
  2. 第二步,MatMul:向量 q 1 , k 1 q_1,k_1 q1,k1 做点乘得到得分 112, q 1 , k 2 q_1,k_2 q1,k2 做点乘得到得分96。请添加图片描述

注:这里是通过 q 1 q_1 q1这个信息找到原始输入 x 1 , x 2 x_1,x_2 x1,x2中的重要信息

  1. 第三步和第四步,Scale + Softmax:对该得分进行规范,除以 d k = 8 \sqrt{d_k}=8 dk =8
    请添加图片描述
  2. 第五步,MatMul:用得分比例 [0.88,0.12] 乘以 [ v 1 , v 2 ] [v_1,v_2] [v1,v2]请添加图片描述
    值得到一个加权后的值,将这些值加起来得到 z 1 z_1 z1,拼接 z 1 , z 2 z_1,z_2 z1,z2得到Attention的值 Z = [ z 1 , z 2 ] Z=[z_1,z_2] Z=[z1,z2]

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

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

相关文章

linux内核模块find_module()函数详解--02

亲爱的粉丝朋友们大家好,为了更好的服务大家,提升分析问题和解决问题的能力,先针对Linux内核里面的API函数进行详细分析,并利用案例进行说明,加强对内核API函数的认识。 第一:函数原型 //头文件包含 #incl…

晨曦记账本,微信账单全解析,轻松掌握收支明细与总花销!

在这个数字化时代,微信已不仅仅是一个简单的社交工具,更是我们日常生活中不可或缺的支付与收款平台。从购买早餐、支付水电费到线上购物,微信支付已经渗透到我们生活的方方面面。然而,你是否曾经对自己的微信消费产生过疑惑&#…

线程的状态与切换

文章目录 线程的状态与切换一、线程的状态1、操作系统层面(5种)2、Java_API层面(6种) 二、让出时间片 - yield三、线程插队 - join1、源码分析2、应用1 - 等待线程结果3、应用2 - 控制执行顺序 四、计时等待 - sleep五、等待唤醒 …

2024春节联欢晚会刘谦魔术分析

春晚已经越来越拉胯了,看着节目单没一个能打的,本来想说:办不起,就别办呗。 没想到第二天刘谦的魔术以一种很奇特的姿势火起来了,干脆蹭个热度,分析下魔术的原理。 魔术1 这个不算什么新奇的节目&#xf…

老师的“神秘武器”——教育战线的宝藏工具

每次考试成绩发布,是不是总让你头疼不已?面对一摞摞试卷,一个个需要手动输入的成绩,你是否也感到力不从心?别急,今天我就为大家揭秘老师们的“神秘武器”——那些在教育战线上,让老师们事半功倍…

代码随想录刷题笔记-Day18

1. 合并二叉树 617. 合并二叉树https://leetcode.cn/problems/merge-two-binary-trees/ 给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)…

【图像分割 2024】ParaTransCNN

【图像分割 2024】ParaTransCNN 论文题目:ParaTransCNN: Parallelized TransCNN Encoder for Medical Image Segmentation 中文题目:用于医学图像分割的并行TransCNN编码器 论文链接:https://arxiv.org/abs/2401.15307 论文代码:H…

机器学习西瓜书之决策树

目录 算法原理剪枝处理连续值处理缺失值处理多变量决策树 算法原理 从逻辑角度:通过一系列if-else语句进行多重判断,比如白富美的判断条件(“白”“富”“美”)。 从几何角度:根据定义的标准进行样本空间的划分。 以二…

应对DDoS攻击:快速恢复网站正常运行的关键步骤

当网站遭受DDoS(分布式拒绝服务)攻击时,可能会导致网站停机、性能下降和用户无法访问等问题,处理DDoS攻击需要采取一系列措施来应对和缓解攻击。 您的网站可能是今天的目标,因为面对DDoS(分布式拒绝服务&am…

【Vue前端】vue使用笔记0基础到高手第2篇:Vue知识点介绍(附代码,已分享)

本系列文章md笔记(已分享)主要讨论vue相关知识。Vue.js是前端三大新框架:Angular.js、React.js、Vue.js之一,Vue.js目前的使用和关注程度在三大框架中稍微胜出,并且它的热度还在递增。Vue.js是一个轻巧、高性能、可组件…

【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱2(附带项目源码)

效果演示 文章目录 效果演示系列目录前言拖放、交换物品绘制拖拽物品插槽UI修改Inventory,控制拖放功能 源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第25篇中&#xf…

C语言第二十六弹---字符串函数(下)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 目录 1、strncat 函数的使用 2、strncmp 函数的使用 3、strstr 函数的使用和模拟实现 4、strtok 函数的使用 5、strerror 函数的使用 6、perror 函数的使用…

CSS的注释:以“ /* ”开头,以“ */ ”结尾

CSS的注释:以“ /* ”开头,以“*/”结尾 CSS的注释: 以“ /* ”开头,以“ */ ”结尾 在CSS中,注释是一种非常重要的工具,它们可以帮助开发者记录代码的功能、用法或其他重要信息。这些信息对于理解代码、维护代码以及与他人合作都…

【C++11】:unordered系列关联式容器

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关unordered系列关联式容器的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:…

HarmonyOS一杯冰美式的时间 -- 验证码框

一、前言 像是短密码、验证码都有可能需要一个输入框,像是如下: 恰好在写HarmonyOS的时候也需要写一个验证码输入框,但是在实现的时候碰了几次灰,觉得有必要分享下,故有了此篇文章。 如果您有任何疑问、对文章写的不…

【MySQL】多表关系的基本学习

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-3oES1ZdkKIklfKzq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

WordPress作者页面链接的用户名自动变成16位字符串串插件Smart User Slug Hider

WordPress默认的作者页面URL链接地址格式为“你的域名/author/admin”,其中admin就是你的用户名,这样的话就会暴露我们的用户名。 为了解决这个问题,前面boke112百科跟大家分享了『如何将WordPress作者存档链接中的用户名改为昵称或ID』一文…

51单片机项目(31)——基于51单片机篮球计分器的proteus仿真

1.功能设计 可以通过两组按键,控制两个队伍的加减分,加分设置有+1分按键,+2分按键,+3分按键。减分设置有-1分按键。 设置有开始/暂停按键,按下开始,数码管便开…

人工智能学习与实训笔记(六):神经网络之智能推荐系统

人工智能专栏文章汇总:人工智能学习专栏文章汇总-CSDN博客 本篇目录 七、智能推荐系统处理 7.1 常用的推荐系统算法 7.2 如何实现推荐 7.3 基于飞桨实现的电影推荐模型 7.3.1 电影数据类型 7.3.2 数据处理 7.3.4 数据读取器 7.3.4 网络构建 7.3.4.1用户特…

老兵(11)

百度文心一格,大约是一年前上线并免费向用户开放的。其实也不是免费,而是“电量”比较好获得,白送的就16/每天,如果只是好奇玩玩的话也算够吧。 当时就很开心,因为一直想着把一些文案图像化,做成漫画的形式…