Vision Transformer(一):自注意力机制

news2024/11/17 5:25:58

1. 注意力机制

注意力本质上是模仿人的行为。这种行为可以描述为人在观察一些事物时,会对感兴趣的区域会产生更多的聚焦,而会选择性的忽视(或者减少关注)另一些区域。

举个简单的例子,一些对跑车感兴趣的人,在路上看到看到某种日常难以见到的跑车时,注意力往往会聚焦到跑车上,而忽略其他车辆。

在这个例子中,跑车就像是神经网络中的“关键信息”,而其他车辆则类似于“背景信息”。注意力机制允许神经网络模型模仿这种人类专注于关键信息的能力,即在处理大量数据时自动“寻找”并集中处理最关键、最相关的信息片段,而非平等地处理所有信息。这种机制在提高模型处理效率和准确性方面非常有效。

从另一方面讲,关键信息会被增强,而其他背景信息会被削弱,由此来引起后续神经网络或其他识别系统的选择性关注。

2.

2. 注意力的产生

人对特定目标的注意力是怎么来的?

每个人感兴趣的事物不同,在所观察的场景中,聚焦的范围也不同。从另一方面讲,人类之所以产生注意力,更多的是因为感兴趣。而感兴趣,或者本身对某一事物的重要性判定产生是一个逐渐发展的过程,基于对事物的持续观察和理解。

同理,在深度学习中,一个神经网络模型的训练过程也是一个逐步发展的过程。就像人类通过不断的经验积累学会关注某些事物的关键方面一样,神经网络通过大量的数据训练逐渐学会识别和处理对当前任务最重要的信息。这个过程需要大量的数据和迭代,以便模型能够学习到如何有效地聚焦于关键特征,并在预测或决策时忽略不相关的信息。

3. 自注意力机制

相关性。

在图像领域,相关性是用来度量两幅图像的相似程度或一致性程度,两幅图像越相似,相关性越强。这种相关性会体现在像素级,结构性或更深层次的特征上。例如我们在学习图像处理时,经常会用的HOG,SIFT,SURF等提取特征向量,然后再通过欧氏距离,曼哈顿距离或余弦相似度、皮尔逊系数等方法度量相似度。

在注意力机制中,一般是通过QKV操作实现相似度判别。

这种机制的基本思想是增强相似元素之间的关系,而减弱不相似元素之间的关系。这一过程通过以下几个步骤实现:

查询(Query)、键(Key)和值(Value)的生成:对于序列中的每个元素,模型生成三个向量,即查询(Q)、键(K)和值(V)。这些向量通常通过不同的线性变换获得。

相似度计算:模型计算查询向量与每个键向量之间的相似度。这通常通过点积(或者其他相似度度量方式)来实现。点积的结果是一个标量,表示两个元素之间的相似程度。

注意力分数的归一化:通过softmax函数对这些相似度分数进行归一化。这一步骤确保了每个元素的注意力分数之和为1,并且更高的分数会被赋予相似度更高的元素。

权重应用与聚合:将归一化后的注意力分数应用于值(V)向量。如果一个元素的键与另一个元素的查询非常相似,那么这个元素的值向量将在最终输出中占据更大的比重。这意味着相似的元素在最终的表示中得到增强,而不相似的元素则被削弱。

输出生成:所有加权的值向量相加,生成最终的输出向量,这个向量是序列中每个元素考虑到其他所有元素后的综合表示。

这种机制使得模型能够捕捉和强调序列中重要的特征,同时忽略那些不相关或者不重要的信息,从而在处理复杂的语言结构时表现出色。

具体实现方式,推荐参考下面两个连接就可以了。在本文中不再重复造轮子了。

Vision Transformer(VIT)-CSDN博客

自注意力机制(Self-Attention)-CSDN博客

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

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

相关文章

个人博客说明

本人博客主要发布平台为博客园 https://www.cnblogs.com/carmi 更多详细,完整图片的文章还请师傅们动动小手到博客园去看吧。

npm 上传一个自己的应用(5) 删除自己发送到NPM官网的指定工具版本

上文 npm 上传一个自己的应用(4) 更新自己上传到NPM中的工具版本 并就行内容修改 我们更新了项目内容 然后更新了项目版本 那么 一些已经过时 甚至 当时上传的东西就有问题 我们又该怎么删除版本呢? 首先 我们还是要先登录 npm npm login然后 根据要求填写 Userna…

vue3 mathjax2.7.7 数学公式

1. index.html代码部分 <script type"text/x-mathjax-config">MathJax.Hub.Config({extensions: ["tex2jax.js"],jax: ["input/TeX","output/HTML-CSS"],tex2jax: {inlineMath: [["$","$"],["\\(&quo…

【C++航海王:追寻罗杰的编程之路】类与对象你学会了吗?(下)

目录 1 -> 再谈构造函数1.1 -> 构造函数体赋值1.2 -> 初始化列表1.3 -> explicit关键字 2 -> static成员2.1 -> 概念2.2 -> 特性 3 -> 友元3.1 -> 友元函数3.2 -> 友元类 4 -> 内部类5 -> 匿名对象6 -> 拷贝对象时的一些编译器优化 1 -…

Java基于微信小程序的学生实习管理小程序

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

自定义npm包从vue2升级到vue3遇到的问题解决

1.执行npm run build时报错&#xff1a; (node:16724) UnhandledPromiseRejectionWarning: SyntaxError: Unexpected token ‘??’ at Loader.moduleStrategy (internal/modules/esm/translators.js:149:18 解决&#xff1a;更新node版本 查看了我使用的node版本是14.21.3&…

精酿啤酒:啤酒的后熟与包装过程的品质保障

啤酒的后熟与包装过程是确保产品品质的重要环节。对于Fendi Club啤酒来说&#xff0c;这一环节同样关键&#xff0c;它关系到啤酒的口感、风味和保质期的长短。 在啤酒的后熟过程中&#xff0c;Fendi Club啤酒酿造团队采用适当的温度和时间控制&#xff0c;让啤酒逐渐发展出更加…

pycharm 配置 conda 新环境

1. conda 创建新环境 本章利用pycharm将conda新建的环境载入进去 关于conda的下载参考上一章博文&#xff1a;深度学习环境配置&#xff1a;Anaconda 安装和 pip 源 首先利用conda 新建虚拟环境 这里按 y 确定 安装好如下&#xff1a;这里两行命令代表怎么激活和关闭新建的虚…

前端JavaScript篇之数组的遍历方法有哪些?forEach和map方法有什么区别?

目录 数组的遍历方法有哪些&#xff1f;forEach和map方法有什么区别&#xff1f;forEach()map()filter()for…ofevery() 和 some()find() 和 findIndex()reduce() 和 reduceRight()forEach和map方法有什么区别总结 数组的遍历方法有哪些&#xff1f;forEach和map方法有什么区别…

辅助Qi2磁吸快充,新标准,新体验 - CPS8200

前言 11月17日&#xff0c;随著Qi2认证Soft Launch 的结束&#xff0c;搭载易冲CPS8200的两款产品在韩国TTA实验室通过了Qi2 认证&#xff0c;预计WPC会在下周&#xff08; ~11月30号&#xff09;为这两款产品正式核发认证证书。 而CPS8200也成为目前唯一拥有两款产品通过认证的…

AI大模型开发架构设计(9)——AI 编程架构刨析和业务应用实战案例

文章目录 AI 编程架构刨析和业务应用实战案例1 AI编程代码生成模型剖析编程方式的发展代码自动生成基于大模型的AI编程工具——Github Copilot以 CodeGeeX 为例-发展过程以 CodeGeeX 为例-训练过程以 CodeGeeX 为例-大规模代码数据处理以 CodeGeeX 为例-模型结构以 CodeGeeX 为…

【Linux C | I/O模型】IO复用 | poll、ppoll函数详解

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

社区商铺投资指南:鲜奶吧——最具潜力的开店项目

作为一位开店5年的鲜奶吧创业者&#xff0c;我深知在社区商铺中寻找一个具有潜力的项目并非易事。 今天为大家分享鲜奶吧项目的好处&#xff0c;帮助你在社区商铺投资中做出明智的选择。 一、鲜奶吧的市场潜力与前景 随着健康饮食观念的普及&#xff0c;鲜奶及酸奶制品越来越…

【AIGC风格prompt深度指南】掌握绘画风格关键词,实现艺术模仿的革新实践

[小提琴家]ASCII风格&#xff0c;点&#xff0c;爆炸&#xff0c;光&#xff0c;射线&#xff0c;计算机代码 由冰和水制成的和平标志]非常详细&#xff0c;寒冷&#xff0c;冰冻&#xff0c;大气&#xff0c;照片逼真&#xff0c;流动&#xff0c;16K 胡迪尼模拟火和水&#x…

【复现】万户 ezOFFICE SQL注入漏洞_42

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 万户ezOFFICE协同管理平台分为企业版和政务版。 解决方案由五大应用、两个支撑平台组成&#xff0c;分别为知识管理、工作流程、沟…

【Vue】mvc,mvp,mvvm 的区别

总结&#xff1a; MVC : view 视图层依靠 model 来进行更新渲染&#xff0c;当数据发生改变时。第一步: 通知 controller 进行更新&#xff0c;然后第二步 controller 再通知 model 进行更新。最后 model 才将 view 更新 , 这样大量的逻辑以及更新操作&#xff0c;都需要在con…

设计师常用的软件有哪些?推荐5款设计工具

设计软件的使用对设计师来说非常重要。设计工具的使用是否直接影响到最终结果的质量&#xff0c;然后有人会问&#xff1a;设计需要使用什么软件&#xff1f;这里有一些设计师和那些对设计感兴趣的朋友列出了五个有用的设计工具。 1、即时设计 即时设计操作简单&#xff0c;内…

机器学习 | 一文看懂SVM算法从原理到实现全解析

目录 初识SVM算法 SVM算法原理 SVM损失函数 SVM的核方法 数字识别器(实操) 初识SVM算法 支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是一种经典的监督学习算法&#xff0c;用于解决二分类和多分类问题。其核心思想是通过在特征空间中找到一…

Pymysql之Cursor常用API

Cursor常用API 1、cursor.execute(query, argsNone)&#xff1a;执行sql语句。 参数: query (str)&#xff1a;sql语句。 args (tuple, list or dict)&#xff1a;sql语句中如果有变量&#xff0c;或者格式化输出&#xff0c;会在这里填充数据。 Returns&#xff1a;返…

编程实例分享,手表养护维修软件钟表维修开单管理系统教程

编程实例分享&#xff0c;手表养护维修软件钟表维修开单管理系统教程 一、前言 以下教程以 佳易王钟表维护维修管理系统软件V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 左侧为导航栏&#xff0c; 1、系统设置&#xff1a;可以设置打…