各种Sequence Self-Attention变形 (加速矩阵运算 且保证全局特征)

news2024/11/26 5:53:16

  • 人工设计Self-attention的N*N矩阵
    • 1. Local Attention/Truncated Attention
    • 2. Stride Attention
    • 3. Global Attention
  • 人工设计Self Attention的使用与选择
    • 1.LongFomer
    • 2.Big Bird
  • 自动设计Self Attention的N*N矩阵
    • 1. Reformer
    • 2.Sinkborn Sorting Network
  • 不需要N*N大小的矩阵
    • 1.Linformer和Comperssed Attention
  • 从Attention本质改进矩阵运算
  • 颠覆性Attention计算方式
  • 处理Sequence不用Attention

在这里插入图片描述

人工设计Self-attention的N*N矩阵

Self-attention处理的是一个sequence序列,它也叫xxFormer系列。
在这里插入图片描述

Self-Attention往往只是整个网络的一部分,当输入序列长度非常大时,网络的主要计算量将会取决于Self-Attention的N*N矩阵乘法QxK。所以对其改进常常在CV领域人为设计矩阵计算, 加快Self Attention的矩阵运算
在这里插入图片描述

1. Local Attention/Truncated Attention

计算方法:只计算矩阵中蓝色部分值,其余灰色的不用计算(填0)
问题:相当于只关联sequence中相邻的token,失去了Attention的全局性,和CNN的效果就比较相似了,只有局部感受野。
在这里插入图片描述

2. Stride Attention

计算方法:只计算矩阵中青色部分值,其余灰色的不用计算(填0)
问题:相当于关联sequence中间隔stride步长的token,增加了Local Attention的感受野大小,类似于空洞卷积,但依然无法关注到全局的token信息。
在这里插入图片描述

3. Global Attention

计算方法:只计算矩阵中橙色部分值(对应两个sepcial tokens与所有tokens进行交互),其余灰色的不用计算(填0)
两种类型:①直接选取原sequence中的几个token做sepcial token。②额外补充两个tokne做sepcial token(如CLS token)。
意义:将sepcial token与其余所有tokens进行交互,既在矩阵运算方面减少了计算量,有保证了sepcial token包含全局sequence token信息。
在这里插入图片描述

人工设计Self Attention的使用与选择

不同的Self Attention各有所长,可以使用Mutile-Head Attention,在不同的head使用不同的Self Attention

1.LongFomer

三个Head:Local Attention+Stride Attention+Global Attention
在这里插入图片描述

2.Big Bird

四个Head:Random Attention+Local Attention+Stride Attention+Global Attention
在这里插入图片描述

自动设计Self Attention的N*N矩阵

引入类似模型加速的思想,小值(不重要的值)对结果的影响较小,把小值设0,加速模型运算。
在这里插入图片描述

1. Reformer

小值:不是同一类的token运算的值
计算方法:
Step1:先将Q和K放在一起进行聚类,相似的token会被分为同一个类。
Step2:在QxK矩阵运算中,只有同一个类的token才会被计算,其他的位置直接填0。
意义:聚类计算,虽然在聚类的过程中是由机器完成的,但同类计算这个规则是由人为规定的,还不是完全的自动设计(即完全自动learn要计算那些值)
在这里插入图片描述
在这里插入图片描述

2.Sinkborn Sorting Network

设置一个前置Network,学习QxK矩阵中那些值需要计算,这个Network是可以和整个网络一起训练的。
意义:实现了自动设计N*N矩阵的运算。
在这里插入图片描述

不需要N*N大小的矩阵

在这里插入图片描述

1.Linformer和Comperssed Attention

计算方法:从N个key中选出/算出K个代表,同样value也选出K个代表,与query进行计算,只需要计算KxN的矩阵。
为什么不让query也选出K个代表计算?
因为如果query也减少,那么输出的sequence的长度将小于N个,对于某些任务,Self Attention不应改变输入sequence的长度。
在这里插入图片描述
选出/算出,减少key的方法:
Comperssed Attention:用卷积减少key。
Linformer:将N个key进行线性结合(乘NxK的矩阵)
在这里插入图片描述

从Attention本质改进矩阵运算

如果忽略softmax,Attention的本质就是QKV矩阵乘法
在这里插入图片描述
QKV三矩阵运算的先后顺序不同,计算量不同。
计算量:(VK)Q < V(KQ)
在这里插入图片描述
V(KQ)的乘法次数:(d+d’)x N平方 -》 N平方数量级
在这里插入图片描述
(VK)Q的乘法次数:2d’dN -》 N数量级
在这里插入图片描述
原先V(KQ)含softmax的计算过程:
在这里插入图片描述
简化后(VK)Q含softmax的过程:
在这里插入图片描述
在这里插入图片描述

下面不同论文均使用(VK)Q的计算方法,只是映射函数fai不同:
在这里插入图片描述
在这里插入图片描述

颠覆性Attention计算方式

Attention更核心的本质是输入一个sequence,输出对应sequence。
Synthesizer不需要QK,只需V,把之前QK生成的attention矩阵变成network的参数进行训练,再与V相乘。
在这里插入图片描述

处理Sequence不用Attention

在这里插入图片描述

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

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

相关文章

【python】图片转字符画 cv2+pygame实现

网上看到一些字符画,非常羡慕,想要用python写一个类似的东西,突然想到字符画不就是把图片分割为像素块再进行替换嘛 恰好之前稍稍入门了python的opencv库,可以对图片进行处理。 处理图片的思想为:对一个区域的像素进行参考值计算,用具有相似参考值的字符进行替代,因此除…

打工人必学的法律知识(七)——《中华人民共和国劳动合同法实施条例》

目录 来源 第一章 总 则 第二章 劳动合同的订立 第三章 劳动合同的解除和终止 第四章 劳务派遣特别规定 第五章 法津责任 第六章 附 则 来源 《中华人民共和国劳动合同法实施条例》 第一章 总 则 第一条 为了贯彻实施《中华人民共和国劳动合同法》&#xff08;以下简称…

mybatis说明

目录 1.说明 2.配置文件 3.映射器 4.select标签 5.insert标签 6.update标签 7.delete标签 8.resultMap的特别说明 9.注解 10.关联(级联)查询 11.动态sql 12.mybatis分页 13缓存 1.说明 MyBatis 是一个开源、轻量级的数据持久化框架&#xff0c;是 JDBC 和 Hiberna…

Redis学习笔记:数据结构和命令

本文是自己的学习笔记。主要参考资料如下&#xff1a; 马士兵 4、Redis的五大数据类型1.1、String1.1.1、String 类型的命令1.1.2、存储对象1.2、List1.2.1、List基本命令1.2.2、List高级命令1.3、Set1.3.1、Set基本命令1.4、HashMap1.4.1、HashMap基本命令1.5、ZSet&#xff0…

【数据结构】7.4 散列表的查找

文章目录7.4.1 散列表的基本概念7.4.2 散列函数的构造散列函数的构造方法7.4.3 处理冲突的方法1. 开地址法1.1 线性探测法1.2 二次探测法2. 链地址法7.4.4 散列表的查找散列表的查找效率分析总结7.4.1 散列表的基本概念 基本思想&#xff1a;根据要存储的关键字的值&#xff0…

计算机网络-杂项

目录 1、蜂窝移动网络 2、TCP和UDP 3、5层架构 4、在浏览器中输入url地址显示主页的过程 5、TCP的基本操作 6、三次握手&#xff0c;四次挥手 6.1、三次握手&#xff1a;双方保证自己和对方都能接收和发送数据。 6.2、三次握手中&#xff0c;为什么客户机最后还要再向服…

【计算机网络】应用层体系

我们知道现代常用的计算机网络模型为5层模型&#xff0c;其中应用层是直接与我们平时常见的软件对接的最高层&#xff0c;所以先来学习应用层就显得很有必要了。其中在应用层我们需要学习网络应用程序的实现、原理并且了解网络应用程序所需要的网络服务、客户和服务器、进程和运…

DW 2023年1月Free Excel 第七次打卡 动态函数

第七章 Excel函数-动态函数 数据下载地址与参考链接&#xff1a;https://d9ty988ekq.feishu.cn/docx/Wdqld1mVroyTJmxicTTcrfXYnDd 1.FILTER函数 在工作中&#xff0c;根据指定的条件&#xff0c;将符合条件的所有记录从数据源表格式查找过来&#xff0c;一是可以用高级筛选。…

两个实用的shell命令:sed和awk用法

&#x1f34e;作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;Linux系统编程 本文目录 sed的用法 sed常用场景 awk的用法 awk常用场景 我们先来看一下力扣上的shell题库中的一题&#xff1a; 实现这个功能一般来说我们会想到tail和head命令来指定打印前几行或者后几…

string的模拟实现(下)

目录 string的模拟实现下 析构函数&#xff1a; 完善函数 空对象的构造函数&#xff1a; 头插函数的一些修正&#xff1a; 构造函数的完善&#xff1a; 实现append 插入函数&#xff1a; 插入函数(字符串&#xff09; erase删除函数&#xff1a; 实现find函数&#…

【读论文】Spiking-YOLO Spiking Neural Network for Energy-Efficient Object Detection

AAAI-20 摘要 本文提出两个新方法为深度SNN提供快速、准确的信息传递&#xff1a;通道归一化和具有不平衡阈值的带符号神经元&#xff1b;本文也提出了一个基于脉冲的目标检测模型&#xff1a;Spiking-YOLO&#xff0c;并且在non-trivial datasets, PASCALVOC 和 MS COCO数据…

指针与数组

目录指针运算&#xff08;补&#xff09;指针指针指针的关系运算&#xff08;补&#xff09;指针与数组数组名二级指针指针数组指针运算&#xff08;补&#xff09; 指针指针 上一篇博客我们介绍了指针运算中的三种常见运算&#xff1a;指针整数&#xff0c;指针关系运算&…

23.1.27打卡 Codeforces Round #846 (Div. 2) A~D

https://codeforces.com/contest/1780A题给你一个长度为n的数组, 问你是否能找出三个数字, 使得这三个数字之和为奇数简单的小学数学奇偶奇偶偶偶所以我们只要找到三个奇数或者两个偶数一个奇数就好了/* ⣿⣿⣿⣿⣿⣿⡷⣯⢿⣿⣷⣻⢯⣿⡽⣻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿…

简单复现 残差网络、Googlenet、mobilenet、SqueezeNet、ShuffleNet

1.残差网络 1&#xff09;网络结构 当对x求偏导的时候&#xff0c;F&#xff08;x&#xff09;对x求偏导的值很小的时候&#xff0c;对整体求x的偏导会接近于1 这样解决了梯度消失问题&#xff0c;我们可以对离输入很近的层进行很好的更新。 要注意的是F&#xff08;x&#…

【REACT-redux】

1. redux介绍 1.1 描述 Redux最主要是用作应用状态的管理。简言之&#xff0c;Redux用一个单独的常量状态树&#xff08;state对象&#xff09;保存这一整个应用的状态&#xff0c;这个对象不能直接被改变。当一些数据变化了&#xff0c;一个新的对象就会被创建&#xff08;使…

JDK SPI 和 Dubbo SPI

SPI &#xff08;Service Provider Interface&#xff09;&#xff0c;简单翻译就是服务提供接口&#xff0c;这里的“服务”泛指任何一个可以提供服务的功能、模块、应用或系统&#xff0c;会预留一些口子或者扩展点&#xff0c;只要按照既定的规范去开发&#xff0c;就可以动…

MES和金蝶云星空接口打通对接实战

四化智造MES&#xff08;WEB&#xff09;和金蝶云星空接口打通对接实战数据源平台:四化智造MES&#xff08;WEB&#xff09;MES建立统一平台上通过物料防错防错、流程防错、生产统计、异常处理、信息采集和全流程追溯等精益生产和精细化管理&#xff0c;帮助企业合理安排生产排…

机器视觉_HALCON_HDevelop用户指南_2.Getting Started

文章目录前言二、Getting Started2.1. 运行HDevelop2.2. 运行示例程序前言 标题本来想用“开始使用”或“快速上手”&#xff0c;不过感觉怪怪的&#xff0c;干脆就叫Getting Started吧&#xff0c;因为许多开发手册&#xff0c;开始上手的那节就叫这个名字。 本文是接上一篇…

【人工智能原理自学】LSTM网络:自然语言处理实践

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文讲解LSTM网络&#xff1a;自然语言处理实践&#xff0c;一起卷起来叭&#xff01; 目录一、“RNN”二、编程实验一、“RNN” 上节课我们利用词嵌入把句子转化为词向量序列…

手把手本地搭建服务器笔记1

需要的下载的东西&#xff1a; vmware (百度网盘)银河麒麟镜像xshell,xftp安装vmware&#xff1a; 下载的包里有密钥&#xff0c;安装的时候就直接把密钥扔里面就好了 镜像处理&#xff1a; vmware左上角文件-新建虚拟机-典型&#xff0c;下一步 -安装程序光盘映像文件&am…