Attention Free Transformer(AFT)

news2024/11/23 2:17:51

Attention Free Transformer(AFT)

paper: An Attention Free Transformer

date: 2021-05

org: Apple

1 Motivation

原本基于dot product self attention Transformer的时间复杂度和空间复杂度都很高。提出了一个新的AFT层来降低transformer的计算量。

在这里插入图片描述

2 Method

2.1 Multi-Head Attention回顾

首先回顾一下经典的Multi-Head Attention(MHA),每一个head的计算如下

f i ( X ) = σ ( Q i ( K i ) T d k ) V i ,   s . t .   Q i = X W i Q , K i = X W i K , V i = X W i V , (1) f _ { i } ( X ) = \sigma ( \frac { Q _ { i } ( K _ { i } ) ^ { T } } { \sqrt { d _ { k } } } ) V _ { i } , \ \mathrm { s . t . } \ Q _ { i } = X W _ { i } ^ { Q } , K _ { i } = X W _ { i } ^ { K } , V _ { i } = X W _ { i } ^ { V } , \tag{1} fi(X)=σ(dk Qi(Ki)T)Vi, s.t. Qi=XWiQ,Ki=XWiK,Vi=XWiV,(1)

其中: W i Q    ∈    R d × d k , W i K    ∈    R d × d k , W i V    ∈    R d × d υ W _ { i } ^ { Q } \; \in \; R ^ { d \times d _ { k } } , W _ { i } ^ { K } \; \in \; R ^ { d \times d _ { k } } , W _ { i } ^ { V } \; \in \; R ^ { d \times d _ { \upsilon } } WiQRd×dk,WiKRd×dk,WiVRd×dυ σ \sigma σ是非线性函数,默认为 s o f t m a x softmax softmax。通常情况下 d v = d k , h = d d k d_v = d_k, h = \frac{d}{d_k} dv=dk,h=dkd。假定输入 X ∈ R T × d X \in \mathbb {R}^ {T \times d} XRT×d, 经过 f i f_i fi转化后的输出 f i ( X ) ∈ R T × d v f_i{(X)} \in \mathbb{R} ^{T \times d_v} fi(X)RT×dv。将所有head的结果拼接起来得到最后的输出 R T × d \mathbb{R} ^{T \times d} RT×d

单头Attention的时间复杂度计算:

  • Q K V QKV QKV 的计算,此处有3个矩阵乘法,计算量为 d × d k × T × 3 d \times d_k \times T \times 3 d×dk×T×3, 时间复杂度为: O ( 1 h T d 2 ) \mathcal{O}(\frac{1}{h}Td^2) O(h1Td2)
  • Q K T QK^T QKT的计算,计算量为: d k × T × T d_k \times T \times T dk×T×T, 时间复杂度为: O ( 1 h T 2 d ) \mathcal{O}(\frac{1}{h}T^2d) O(h1T2d)
  • scale 的计算量为: T × T T \times T T×T, 时间复杂度为: O ( T 2 ) \mathcal{O}(T^2) O(T2)
  • softmax的计算量为: T × T T \times T T×T, 时间复杂度为: O ( T 2 ) \mathcal{O}(T^2) O(T2)
  • 最后加权乘法计算量为 d k × T × T d_k \times T \times T dk×T×T,时间复杂度为: O ( 1 h T 2 d ) \mathcal{O}(\frac{1}{h}T^2d) O(h1T2d)

对于MHA,时间复杂度为 O ( T d 2 ) \mathcal{O}(Td^2) O(Td2)

2.2 Attention Free Transofrmer(AFT)

2.2.1 AFT full

第一步和MHA一样,输入 X X X经过三个linear transfer得到 Q K V QKV QKV,3个矩阵, 维度为 R T × d \mathbb{R}^{T \times d} RT×d。AFT引入了一个新的可训练参数矩阵 w ∈ R T × T w \in \mathbb{R}^{T \times T} wRT×T,论文将其称之为可学习的一对一位置偏置(learned pair-wise position biases)。

在这里插入图片描述

我们以 y t y_t yt 为视角看每一步的具体流程。

SETP1: w e i g h t e d ( K ( t ) ) \mathrm{weighted}(K^{(t)}) weighted(K(t))。从 w w w t = t t=t t=t的向量, 和 K K K做点乘后以列方向进行 s o f t m a x \mathrm{softmax} softmax。该步骤的计算复杂度为 O ( T × d ) \mathcal{O}(T \times d) O(T×d)

W e i g h t e d ( K ( t ) ) = exp ⁡ ( K + w t ) ∑ i = 1 T exp ⁡ ( k i + w t i ) (2) \mathrm{Weighted}(K^{(t)}) = \frac{\exp (K + w_t ) }{\sum_{i=1}^{T} \exp (k_i + w_{ti}) } \tag{2} Weighted(K(t))=i=1Texp(ki+wti)exp(K+wt)(2)

在这里插入图片描述

STEP2: 求 A t t e n t i o n ( t ) \mathrm{Attention}^{(t)} Attention(t)矩阵。将q_t用sigmoid变换后,点乘wighted(K)。该步骤的计算复杂度为 O ( T × d ) \mathcal{O}(T \times d) O(T×d)

A t t e n t i o n ( t ) = σ ( q t ) ⊙ W e i g h t e d ( K ( t ) ) = σ ( q t ) ⊙ exp ⁡ ( K + w t ) ∑ i = 1 T exp ⁡ ( k i + w t i ) (3) \mathrm{Attention^{(t)}} = \sigma(q_t) \odot \mathrm{Weighted}(K^{(t)})= \frac{\sigma(q_t) \odot \exp (K + w_t ) }{\sum_{i=1}^{T} \exp (k_i + w_{ti}) } \tag{3} Attention(t)=σ(qt)Weighted(K(t))=i=1Texp(ki+wti)σ(qt)exp(K+wt)(3)
在这里插入图片描述

STEP3: 计算 y t y_t yt。该步骤的计算复杂度为 O ( T × d ) \mathcal{O}(T \times d) O(T×d)

y t = ∑ i = 1 T ( A t t e n t i o n ( t ) i ⊙ v i ) = ∑ i = 1 T σ ( q t ) ⊙ exp ⁡ ( k i + w t ) ∑ i = 1 T exp ⁡ ( k i + w t i ) ⊙ v i (4) y_t = \sum_{i=1}^{T}(\mathrm{Attention^{(t)}}_i \odot v_i) = \sum_{i=1}^{T} \frac{\sigma(q_t) \odot \exp (k_i + w_t ) }{\sum_{i=1}^{T} \exp (k_i + w_{ti}) } \odot v_i \tag{4} yt=i=1T(Attention(t)ivi)=i=1Ti=1Texp(ki+wti)σ(qt)exp(ki+wt)vi(4)

在这里插入图片描述

对式(4)稍做变形,可得论文中的计算公式

y t = σ ( q t ) ⊙ ∑ i = 1 T exp ⁡ ( k i + w t ) ⊙ v i ∑ i = 1 T exp ⁡ ( k i + w t i ) (5) y_t = \sigma(q_t)\odot \frac{ \sum_{i=1}^{T}\exp (k_i + w_t ) \odot v_i}{\sum_{i=1}^{T} \exp (k_i + w_{ti}) } \tag{5} yt=σ(qt)i=1Texp(ki+wti)i=1Texp(ki+wt)vi(5)

将所有的步骤串起来的流程如下。可以看到AFT其实也用到了attention的思想。但AFT中的Attention Score的计算并没有用到矩阵乘法,只用到了向量点乘。虽整体的计算复杂度仍然是 O ( T 2 d ) \mathcal{O}(T^2d) O(T2d),但计算量已有所下降。

式(4)计算pipeline

在这里插入图片描述

式(5)计算pipeline

在这里插入图片描述

2.2.1 AFT local

在许多情况下,局部性是一个很重要的归纳偏置(inductive bias),而标准的Transformer的计算中没有引入局部信息。因此,作者提出AFT-local。其形式与AFT-Full一致。区别在于,引入了下式限制

w t , t ′ = { w t , t ′ , i f ∣ t − t ′ ∣ < s 0 , o t h e r w i s e . (6) w_{t, t'} = \begin{cases} w_{t, t'}, \quad \mathrm{if} |t - t'| < s \\ 0, \quad \mathrm{otherwise.}\end{cases} \tag{6} wt,t={wt,t,iftt<s0,otherwise.(6)

式中的 s s s就是定义的局部窗口大小(local window size)。它进一步降低了计算量。变换后的 w w w如下图所示(此时 s = 2 s=2 s=2, 黑色方块为0)。

在这里插入图片描述

2.2.2 AFT simple

AFT simple是AFT local当 s = 0 s = 0 s=0时的特殊形式。此时没有位置偏置。可将式5化简为,因为对不同的 t t t ∑ i = 1 T ( s o f t m a x ( K ) ⊙ V ) i \sum_{i=1}^{T} (\mathrm{softmax}(K) \odot V)_{i} i=1T(softmax(K)V)i都是相同的。AFT simple的时间复杂度为 O ( T d ) \mathcal{O}(Td) O(Td)

y t = σ ( q t ) ⊙ ∑ i = 1 T exp ⁡ ( k i ) ⊙ v i ∑ i = 1 T exp ⁡ ( k i ) = σ ( q t ) ⊙ ∑ i = 1 T ( s o f t m a x ( K ) ⊙ V ) i (6) y_t = \sigma(q_t)\odot \frac{ \sum_{i=1}^{T}\exp (k_i) \odot v_i}{\sum_{i=1}^{T} \exp (k_i) } = \sigma(q_t)\odot \sum_{i=1}^{T} (\mathrm{softmax}(K) \odot V)_{i}\tag{6} yt=σ(qt)i=1Texp(ki)i=1Texp(ki)vi=σ(qt)i=1T(softmax(K)V)i(6)

2.2.3 AFT conv

作者进一步将局部性的思想扩展到空间权重共享(如卷积),提出AFT-conv。具体来说,让 w t , t ′ w_{t,t'} wt,t的值仅依赖 t t t t ′ t' t的相对位置。为了考虑参数数量随着 h e a d head head数增加而增长的情况,作者采用了一个设计选择,将 K K K的维度与head数绑定在一起(MHA的思路)。这使得AFT-conv可以采用深度可分离卷积、全局池化和element-wise操作的实现方式。

可以看到与AFT simple相比,AFT conv引入了head思想,并通过1维卷积的计算结果引入局部信息。其形式与式(6)相比分子分母中新增了 c o n v 1 d ( exp ⁡ ( K j ) ⊙ V j ,    exp ⁡ ( w j )   − 1 ) \mathrm { c o n v 1 d } ( \exp ( K ^ { j } ) \odot V ^ { j } , \; \exp ( w ^ { j } ) \, - 1 ) conv1d(exp(Kj)Vj,exp(wj)1) c o n v 1 d ( exp ⁡ ( K j ) ,    exp ⁡ ( w j )    − 1 ) \mathrm { c o n v 1 d } ( \exp ( K ^ { j } ) , \; \exp ( w ^ { j } ) \; - 1 ) conv1d(exp(Kj),exp(wj)1)。(上标 j j j表示第 j j j个head)。此时的 w w w为conv1d的filter。

y t j = σ q ( q t j ) ⊙ c o n v 1 d ( exp ⁡ ( K j ) ⊙ V j ,    exp ⁡ ( w j )   − 1 ) + ∑ i = 1 T exp ⁡ ( k i j ) ⊙ v i j c o n v 1 d ( exp ⁡ ( K j ) ,    exp ⁡ ( w j )    − 1 ) + ∑ i = 1 T exp ⁡ ( k i j ) (7) y _ { t } ^ { j } = \sigma _ { q } ( q _ { t } ^ { j } ) \odot \frac { \mathrm { c o n v 1 d } ( \exp ( K ^ { j } ) \odot V ^ { j } , \; \exp ( w ^ { j } ) \, - 1 ) + \sum _ { i = 1 } ^ { T } \exp ( k _ { i } ^ { j } ) \odot v _ { i } ^ { j } } { \mathrm { c o n v 1 d } ( \exp ( K ^ { j } ) , \; \exp ( w ^ { j } ) \; - 1 ) + \sum _ { i = 1 } ^ { T } \exp ( k _ {i } ^ { j } ) } \tag{7} ytj=σq(qtj)conv1d(exp(Kj),exp(wj)1)+i=1Texp(kij)conv1d(exp(Kj)Vj,exp(wj)1)+i=1Texp(kij)vij(7)

从ViT可视化attention map中可以看出(横轴为head, 纵轴为layer)。原本的ViT(左边)的不同层,head的attention map的响应最大区域基本都是中心区域。而用了AFT-conv后,不同层、head的attention都有所不同,有助于模型捕获不同尺度的特征。

在这里插入图片描述

3 小结

本文提出了一种Dot Product Attention Free的Transformer,最多能将transofmer的时间复杂度从 O ( T 2 d ) \mathcal{O}(T^2d) O(T2d)降低到 O ( T d ) \mathcal{O}(Td) O(Td)(AFT-simple)。

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

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

相关文章

论一个优秀的日志采集系统是如何设计和实现数据处理的

作者 观测云 系统开发工程师 李国壮 前言 日志采集系统的执行过程&#xff0c;从 “定位日志” 开始&#xff0c;然后是 “数据采集和处理”&#xff0c;最后则是 “同步采集状态”。本文主要介绍第二项&#xff0c;即数据的采集和解析&#xff0c;其中包含了很多细节处理&am…

Windows10关闭自动更新

0 前言 从Windows Update服务、组策略、计划任务、注册表四个方面入手&#xff0c;目前我这边改完后是可以停止更新的&#xff0c;修改过程中也没遇到其他问题 1 禁用Windows Update服务 ① winR&#xff0c;输入services.msc打开服务 ② 双击打开Windows Update ③ 常规&a…

基于springboot+vue的药店管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

微信开放平台第三方开发,实现代小程序备案申请

大家好&#xff0c;我是小悟 微信小程序备案整体流程总共分为五个环节&#xff1a;备案信息填写、平台初审、工信部短信核验、通管局审核和备案成功。 服务商可以代小程序发起备案申请。在申请小程序备案之前&#xff0c;需要确保小程序基本信息已填写完成、小程序至少存在一个…

银河麒麟安装Docker-国产化-九五小庞

银河麒麟高级服务器操作系统 V10 是针对企业级关键业务&#xff0c;适应虚拟化、 云计算、大数据、工业互联网时代对主机系统可靠性、安全性、性能、扩展性和 实时性的需求&#xff0c;依据 CMMI 5 级标准研制的提供内生安全、云原生支持、国产 平台深入优化、高性能、易管理的…

vue基础知识十二:双向数据绑定是什么

一、什么是双向绑定 我们先从单向绑定切入单向绑定非常简单&#xff0c;就是把Model绑定到View&#xff0c;当我们用JavaScript代码更新Model时&#xff0c;View就会自动更新双向绑定就很容易联想到了&#xff0c;在单向绑定的基础上&#xff0c;用户更新了View&#xff0c;Mo…

【基于优化算法的光伏系统】基于光伏系统(由光伏、电池、转换器、PI 控制器、逆变器和充电控制器组成)的 Simulink 模型

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

BF算法(C++)简单讲解

BF算法匹配过程易理解&#xff0c;若匹配&#xff0c;子串和主串都往下移一位。不匹配时&#xff0c;主串回溯至本次匹配开始下标的下一位。例&#xff1a;图中第三趟匹配时&#xff0c;主串到第七位时与子串不匹配&#xff0c;这次匹配主串是从第三位开始的&#xff0c;所以下…

大数据技术准备

Hbase&#xff1a;HBase 底层原理详解&#xff08;深度好文&#xff0c;建议收藏&#xff09; - 腾讯云开发者社区-腾讯云 Hbase架构图 同一个列族如果有多个store&#xff0c;那么这些store在不同的region Hbase写流程&#xff08;读比写慢&#xff09; MemStore Flush Hbas…

有名管道实现简易版聊天功能

简单的代码&#xff0c;只能你写一句 我回一句 依次循环 //chat A#include<stdio.h> #include<unistd.h> #include <sys/types.h> #include <sys/stat.h> #include<fcntl.h> #include<string.h> #include<stdlib.h> int main() {//…

SocketTool V4.0 使用说明

TCP/UDP Socket 调 试 工 具 提 供 了 TCP Server,TCP Client,UDP Server,UDP Client,UDP Group 五种 Socket 调试方案。 下面是一份简要的使用流程&#xff1a; TCP 通信测试&#xff1a; 1) 创建 TCP Server 选中左方的 TCP Server, 然后点击 ”创建 ”按钮&#xff0c;软件弹…

临时工说: 云原生数据库别整新名词,bypass ,不就是旁路吗

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

有史以来最香的日志收集平台是怎样练成的

作者 观测云 系统开发工程师 李国壮 前言 日志采集&#xff08;logging&#xff09;是观测云 DataKit 重要的一项&#xff0c;它将主动采集或被动接收的日志数据加以处理&#xff0c;最终上传到观测云中心。 日志采集的执行过程可大致分为三段&#xff0c;分别是“定位日志”…

听GPT 讲Istio源代码--pilot

File: istio/operator/pkg/translate/translate.go 在Istio项目中&#xff0c;istio/operator/pkg/translate/translate.go文件的作用是处理Istio Operator的配置信息和Kubernetes的资源对象之间的翻译和转换。 首先&#xff0c;scope和componentToAutoScaleEnabledPath是用于记…

趣谈网络协议_1

趣谈网络协议_1 第1讲 | 为什么要学习网络协议&#xff1f;第4讲 | DHCP与PXE&#xff1a;IP是怎么来的&#xff0c;又是怎么没的&#xff1f;动态主机配置协议&#xff08;DHCP&#xff09; 第5讲 | 从物理层到MAC层&#xff1a;如何在宿舍里自己组网玩联机游戏&#xff1f;第…

WPF 如何让xmal的属性换行显示 格式化

WPF 如何让UI的xmal 按照下面的格式化显示 首先格式化显示在VS中的快捷键是 Ctrl &#xff2b;D 然后需要配置&#xff0c;工具 选项 -文本编辑器 -xmal -格式化-间距 更改成如下就可以了

分布式锁的三种实现方式!

分布式锁是一种用于保证分布式系统中多个进程或线程同步访问共享资源的技术。同时它又是面试中的常见问题&#xff0c;所以我们本文就重点来看分布式锁的具体实现&#xff08;含实现代码&#xff09;。 在分布式系统中&#xff0c;由于各个节点之间的网络通信延迟、故障等原因…

基于java求长方形的周长和面积详细方法

一、方法 要使用Java求长方形的周长和面积&#xff0c;可以通过定义长方形的长度和宽度&#xff0c;然后使用相应的公式进行计算。 首先&#xff0c;定义长方形的长度和宽度&#xff1a; double length 10.0; double width 5.0;然后&#xff0c;使用以下公式计算长方形的周…

RK3588 添加I2C模拟芯片CH423

一.简介 有时候会遇到IO不够用的情况&#xff0c;例如说驱动LED灯&#xff0c;那么有没有什么便宜的&#xff0c;容易买到的芯片&#xff1f;我这次就考虑使用WCH的CH423S&#xff0c;这是一个比较新的IO扩展芯片。 二.硬件原理图 使用gpio来模拟IIC&#xff0c;飞线处理&…

2020-2023中国高等级自动驾驶产业发展趋势研究-概念界定

1.1 概念界定 自动驾驶发展过程中&#xff0c;中国出现了诸多专注于研发L3级以上自动驾驶的公司&#xff0c;其在业界地位也越来越重要。本报告围绕“高等级自动驾驶” 展开&#xff0c;并聚焦于该技术2020-2023年在中国市场的变化趋势进行研究。 1.1.1 什么是自动驾驶 自动驾驶…