transformer和Non-local

news2024/11/16 8:42:43

两者本质上是一个东西,都是用来求自注意力的,但具体而言还是有一些差别;

1:首先说Non-local,它是像素级别的self-attention,算的是图片中各个像素点对指定像素点的影响;

2:transformer我们拿swin-transformer和vision-transformer,来举例子。

如下可,我们可以看到,两者都对图像进行了分块,不同的是swin-transformer先分了大块,再在大块里面分小块,而VIT就只分为固定的快,然后他们在做self-attention的时候,其实是算的块与块之间的注意力,但值得注意的是swintranformer只算每一个大块里面的小块之间的注意力,也就是大块与大块之间不做注意力计算。

图和内容均参考自:http://Vision transformer_MarDino的博客-CSDN博客_transformer vision

https://zhuanlan.zhihu.com/p/485716110

 什么是transformer?

整个 transformer 的重点在 QKV 结构上。

以前的 CNN 试图通过卷积来表达不同位置数值之间的关系,学习卷积值也就是学习矩阵里的数值之间的特征,所以适合用在图像里面。因为图像就是一个个的像素点形成的矩阵。

RNN 试图通过加入反馈机制来理解一串数值前后的关系,所以适用于语言模型,因为这些数值之间有前后关系,像我们的句子里有先后逻辑。

而 transformer 里的 QKV 给你提供了一个新的思路:只研究问题和答案之间的关系。不去找前后,不去找相邻,就是单纯的问题(Query)和答案(Value),最多加了一个(Key)来辅助。

那为什么要用 QKV 呢?因为这是谷歌搜索等搜索引擎最开始的结构。一个搜索引擎的设计其实就是给一个问题然后找到对应答案。

任何一个问题(Query),会有很多的答案(Value),而之所以能找到这些答案,是因为这些答案里面包包含了有关于这个问题的关键信息(Key)

V=f(Q,K)

这是一个万能形式,任何问题的答案都是通过“问题本身+相关的关键信息”找到的,比如你去谷歌搜索“今天天气怎么样”,这个问题本身就是 Q,而你的语言是“中文”,你的位置是“北京”,你的时间是“今天”,这些就都是 K,那么找到的答案“下雨”就是 V。

一般来说肯定是通过方法找到 f( Q, K) 中的一些系数,就可以找到正确的 V 了。我们也可以把 V挪到公式右边,并且把他们存在的关系叫成 attention,那么就是:

attention = F(Q, K, V)

这就是整个 transformer 的最基础结构,有了这个万能结构,只需要学习 F里的各个参数,就可以回答你想要的问题。

那么,又为什么叫 transformer而不是简单的 attention 呢?

因为 transformer 它为了提高这个 F的 运算效率,做了一些规定,比如你的 attention 的输入输出维度需要一样,这样矩阵运算就可以加快。而且多个 attention 合在一起来算,也是为了加快运算速度和效率。

那整个 Transformer里的 encoded decoder 又是干嘛呢?

这个 QKV 结构是最基础的单元,为了适应不同的目标,把多个 QKV 的 attention 合在一起以后,它分了两个部分,一个用来学怎么 encode,一个用来学怎么 decode。这个就跟 GAN,对抗神经网络很像,基本就是还是为了找到数据高维空间下的一个空间分割平面。而这里为了前后关系,它把上一个运算出来的结果又给进去去计算下一个部分(decoder 部分),所以就可以放在语言任务上(因为语言有前后关系)。

对于像翻译这种任务,encoder 部分输入是第一种语言,而 decoder 部分是第二种语言,这样一来训练出来的模型就可以做翻译。

而 GPT 的全名是 Generative Pretrained Transformers,它用的是 self-attention 结构,也就是 encoder 部分是前半句(一个字,一个句子),decoder 部分是后半句(或者下一个字,或者下个句子,都行),就是自己学自己,不是两种不同语言,所以就是 self-attention。

当然这只是语言上的应用,像 ChatGPT,LLama 这种的。

因为 QKV 就是简单的“问题—答案”结构,这个可以应用在一切问题上,图片,语音,文字,或者相互关联相互变化,都可以。

所以现在如果我回过头来看的话,整个 transformers里面的重点就是它把基本的单元从原来神经元之间的连接结构变成了问答的(QKV)attention 结构。

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

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

相关文章

JVM产生FullGC的原因有哪些?

JVM产生FullGC的原因有哪些? 在Java虚拟机(JVM)中,垃圾回收(Garbage Collection,简称GC)是一个非常重要的机制。GC的目的是自动管理内存,回收不再使用的对象,防止内存泄…

揭秘!5大策略让广告变现长久有效

在数字化时代的浪潮下,广告变现作为自媒体和APP开发者重要的收入来源,越来越受到重视。 但如何让这种变现方式长久持续,成为许多内容创作者与平台运营者思考的问题。 本文旨在探讨广告变现的持久之道,通过分析前端展示、合规性、…

通过元学习优化增益模型的性能:基础到高级应用总结

在当今数据驱动的决策过程中,因果推断和增益模型扮演了至关重要的角色。因果推断帮助我们理解不同变量间的因果关系,而增益模型则专注于评估干预措施对个体的影响,从而优化策略和行动。然而,要提高这些模型的精确度和适应性&#…

lammps聚合物断键拉伸模拟

本文介绍聚合物的断键拉伸。 在lammps模拟中,所有的键默认是永久存在的,非正常情况下,不能断开,否则会产生"bond atoms missing”错误。 聚合物的拉伸模拟过程中,聚合物链并没有被拉断,而只是把不同的…

tmega128单片机控制的智能小车设计

第1章 绪论1.1 选题背景和意义 自第一台工业机器人诞生以来,机器人的民展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人工作的机器一…

国学诗词app开发,学古贯今,句句珠玑

“鹅鹅鹅,曲项向天歌。”这是很多人学会的第一首诗,国学诗词作为中华传统文化的重要组成部分,不仅在历史中占据重要地位,也是儿童学前启蒙的不二选择。对于家长来说,他们更喜欢在学前教孩子一些经典国学和古诗词&#…

180.二叉树:二叉搜索树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

好用的FTP客户端 Transmit 5中文

Transmit 5是一款专为macOS设计的FTP客户端软件,由Panic公司开发。它支持FTP、SFTP、WebDAV和Amazon S3等多种传输协议,满足用户多样化的文件传输需求。Transmit 5拥有用户友好的界面设计,提供了清晰的文件传输状态和详细的信息,让…

Java面经总结

一、java基础 1.重载和重写的区别 重载: 发生在同一类中,函数名必须一样,参数类型、参数个数、参数顺序、返回值、修饰符可以不一样。重写: 发生在父子类中,函数名、参数、返回值必须一样,访问修饰符必须…

【Android面试八股文】1. 你说一说Handler机制吧 2. 你知道Handler的同步屏障吗? 3. Looper一直在循环,会造成阻塞吗?为什么?

文章目录 一. 你说一说Handler机制吧二、你知道Handler的同步屏障吗?2.1 Handler消息的分类2.2 什么是同步屏障2.3 为什么要设计同步屏障2.4 同步屏障的用法 三、Looper一直在循环,会造成阻塞吗?为什么?扩展阅读 一. 你说一说Hand…

PostgreSQL和Oracle的数据类型对比:时间类型 #PG培训

在数据库管理系统中,时间数据类型是非常关键的一部分。时间数据类型的选择和使用直接影响到数据存储、查询效率和应用程序的设计。本文将对比PostgreSQL和Oracle在时间类型方面的实现和特性。 #PG考试#postgresql培训#postgresql考试#postgresql认证 日期和时间类型…

JAVA开发 创建TXT文件,写入并读取数据流输出到控制台

通过BufferedReader类和BufferedWriter类操作txt文件 1、BufferedReader类和BufferedWriter类1.1 BufferedReader类1.1.1 构造方法1.1.2 重要方法1.1.3 作用 1.2 BufferedWriter类1.2.1 构造方法1.2.2 重要方法1.2.3 作用 1.3 总结 2、案例2.1 实现代码2.2 输出 1、BufferedRea…

STM32理论 —— μCOS-Ⅲ(2/2):时间管理、消息队列、信号量、任务内嵌信号量/队列、件标志组

文章目录 9. 时间管理9.1 OSTimeDly()9.2 OSTimeDlyHMSM()9.3 OSTimeDlyResume()9.4 延时函数实验 10. 消息队列10.1 创建消息队列函数OSQCreate()10.2 发送消息到消息队列函数(写入队列)OSQPost()10.3 获取消息队列中的消息函数(读出队列)OSQPend()10.4 消息队列操作实验 11. …

产品经理简要介绍主流电商平台商品API接口的重要应用价值

主流电商平台: 截至目前(2024年6月),主流电商平台通常指的是国内外知名的在线购物平台,包括但不限于以下几家: 1. 中国电商平台: - 淘宝网(taobao.com) - 天猫商…

阿里云香港服务器怎么样?

大家都知道阿里云是国内最受欢迎的云服务商,那么阿里云香港服务器究竟怎么样呢?和硅云的香港服务器用于做外贸网站等业务相比各有哪些优缺点呢? 阿里云和硅云在香港云服务领域有着广泛的应用和良好的口碑。然而,它们各自的特点和…

霍廷格TruPlasma RF 1001 to 1003 (G2/13)手侧通快电源

霍廷格TruPlasma RF 1001 to 1003 (G2/13)手侧通快电源

深入 Go 语言核心:结构体的全方位解析

Go 语言,作为一种高效、静态类型的编程语言,自其问世以来便以其并发处理能力和简洁的语法结构广受开发者欢迎。虽然 Go 不是传统意义上的面向对象语言,它却以独特的方式支持面向对象编程的核心概念,其中结构体扮演了非常关键的角色…

解决Servlet报404未找到

一、检查project struture 打开Project Struture 检查jdk 检查Modules的depencies 如果缺少servlet的jar依赖,则可以先配置tomcat,然后执行如下图的添加依赖(这种方法不适用于maven构建的项目) 把Tomcat里的jar添加进来就可…

Sqlite3入门和c/c++下使用

1. SQLite3基本介绍 1.1 数据库的数据类型 1.2 基本语法 1. 创建数据表格 create table 表名(字段名 数据类型, 字段名 数据类型); create table student(id int, name varchar(256), address text, QQ char(32)); 2. 插入数据 insert into 表名 valu…

音频处理1_基本概念

AI变声和音乐创作的基础 声音本质上是人类可察觉范围内的气压周期性波动, 即声波 声波是一种连续信号,在任意时间内的声音信号有无数个取值。对于只能读取有限长数组计算机来说,我们需要将连续的声音信号转换为一个离散的序列,即数字化表示。…