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

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.hqwc.cn/news/456855.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新产品!可视化试卷搭建平台

hi, 大家好, 我是徐小夕. 之前和大家分享了很多可视化低代码和零代码的技术实现和产品设计思路, 也和大家分享了 H5-Dooring 零代码搭建平台的技术实现和未来规划, 今天继续和大家分享一下我们的新产品——橙子试卷. 橙子试卷 是一款可视化试卷/问卷搭建平台, 我们可以通过拖拽…

AVR 328pb触摸功能基本介绍和使用

AVR 328pb触摸功能基本介绍和使用 📝ATMEGA328PB-AU外设中带外围触摸控制器(PTC)电容式触摸按钮、滑块和轮子24个自帽通道和144个互帽通道。(ATMEGA328P没有的) ✅PTC-外围触摸控制器 🍃低功耗、高灵敏度、…

【python】绘制爱心图案

以下是一个简单的Python代码示例,它使用turtle模块绘制一个代表爱和情人节的心形图案。 首先,请确保计算机上安装了Python和turtle模块。然后,将以下代码保存到一个.py文件中,运行它就可以看到爱心图案的绘制过程。 import turt…

24、数据结构/排序相关练习20240206

一、现有无序序列数组为{23,24,12,5,33,5,34,7},请使用以下排序实现编程。 函数1:请使用冒泡排序实现升序排序 函数2:请使用简单选择排序实现升序排序 函数3:请使用快速排序实现升序排序 函数4:请使用插入排序实现…

Node.js(五)-跨域(了解)

一 、CORS相关 1. 接口的跨域问题 html: server: 访问结果: 刚才编写的 GET 和 POST接口,存在一个很严重的问题:不支持跨域请求。 解决接口跨域问题的方案主要有两种: ① CORS(主流的解决方案,推荐使…

使用STM32 HAL库配置和控制外设接口

使用STM32 HAL库配置和控制外设接口非常简单,以下是一个示例,演示如何使用STM32 HAL库配置和控制USART外设接口。 ✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进 ❤欢迎关注我的知乎:对error视而不见 代码获取…

数据结构——框架简介

1.数据结构的作用 数据结构是计算机科学中一种重要的概念,它主要用于组织和存储数据以便有效地进行操作。数据结构可以看作是数据的组织方式,通过合理的数据结构设计,可以更高效地执行各种操作,提高程序的性能和可维护性。 以下是…

pytorch 利用Tensorboar记录训练过程loss变化

文章目录 1. LossHistory日志类定义2. LossHistory类的使用2.1 实例化LossHistory2.2 记录每个epoch的loss2.3 训练结束close掉SummaryWriter 3. 利用Tensorboard 可视化3.1 显示可视化效果 参考 利用Tensorboard记录训练过程中每个epoch的训练loss以及验证loss,便于…

JAVA原型模式详解

原型模式 1 原型模式介绍 定义: 原型模式(Prototype Design Pattern)用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。 西游记中的孙悟空 拔毛变小猴,孙悟空这种根据自己的形状复制出多个身外化身的技巧,在面向对象软件设计领…

Java实现音乐平台 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首音乐4.2 新增音乐4.3 新增音乐订单4.4 查询音乐订单4.5 新增音乐收藏 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的音乐平台,包含了音乐…

后端软件三层架构

一、三层架构简介 三层架构是软件开发中广泛采用的一种经典架构模式,其核心价值在于通过清晰的任务划分来提高代码的可维护性和重用性。具体来说,三层架构主要包括以下三个层次: 持久层(DAO层):这一层主要…

【XR806开发板试用】xr806使用tcp socket与手机通信

本文为极术社区XR806开发板活动试用文章。 参考:基于星辰处理器的全志XR806开源鸿蒙开发板上手体验 搭建环境。并成功编译。 项目源码 : https://gitee.com/kingwho/smart-home 在同一个局域网中,手机与xr806连接后,手机 APP 每隔…