点击上方“视学算法”,选择加"星标"或“置顶

重磅干货,第一时间送达

丰色 发自 凹非寺
量子位 | 公众号 QbitAI

尽管Transformer已经开始在诸多视觉任务上“大展身手”,但还有一个问题。

那就是在处理大图像上计算比较费劲。

比如面对一个1080p的图时,它会有超过60%的计算量都耗费在了创建和应用注意矩阵上。

究其原因,主要是因为自注意力头的数量是token的平方,而token的数量又与图形大小呈二次方的关系。

那能怎么办呢?

好消息是——

现在Meta捣鼓出了一种多头注意力操作方法,可以做到足足比标准注意力快197倍

而且在提高计算速度的同时,它也不会牺牲准确率,有时甚至还能将准确率提高1-2个点。

具体怎么回事儿?

思路来源一个“矛盾点”

这个方法名叫Hydra Attention,主要针对Vision Transformer。

(“Hydra”有“九头蛇”之义,来自希腊神话。)

Hydra Attention的思路源于线性注意力中的一种有点矛盾的点:

使用标准的多头自注意力,再向模型中添加更多头可以保持计算量不变。

而在线性注意力中改变操作顺序后,增加更多的头实际上还会降低层的计算成本。

于是,作者通过将模型中的注意力头数量设置成特征(feature),创建出一个token和feature的计算都是线性的注意力模块,从而把上述特性发挥到极致。

具体来说:

当标准自注意力头是token数的平方(O(T2D))时,通过使用可分解核(decomposable kernel),我们重新安排操作顺序,让注意力头的数量变为特征D的平方。

然后再使用Hydra Trick,最大化注意力头H的数量,让H=D,最终就可以化为一个在空间和时间上的O(TD)简化操作了。

其中,Hydra Trick的依据见下图:

作者在ImageNet-1k上训练了具有不同头数的DeiT-B模型,包括使用标准自注意力(蓝线,基于softmax)和使用多头线性注意(红线,基于余弦相似性)的。

前者在H>96、后者在H<3时出现内存不足的情况。

当他们往模型中添加更多的头时,Softmax注意力模型的准确性似乎会崩溃,而多头线性注意力仍可以保持一致,因此就有了上述操作。

(需要注意的是,H必须除以D=768。)

速度快197倍,准确率还能更上层楼

来看看Hydra Attention交出的成绩单。

可以看到,Hydra注意力比标准注意力快197倍(T=197)。

随着图像大小的增加,它显著提高了模型的FLOP数,在创建和应用注意力矩阵所占的计算量上也始终只有0.02%

除此之外,作者发现,使用不同的内核,Hydra Attention还能让模型的准确率提高大约两个百分点。

或者用Hydra Attention替换特定的注意力层,也能将模型的精度在ImageNet上提高1%或者与基线维持不变。


当然,最多可替换8层。

另外,作者表示,这个方法应该可以扩展到NLP领域,不过他们还没试。

作者介绍

这篇成果已入选ECCV 2022 Workshop

作者一共5位,分别来自Meta AI和佐治亚理工学院。

其中华人3名,分别是:

Cheng-Yang Fu,本硕毕业于清华大学,博士毕业于美国北卡罗来纳大学教堂山分校,现在是Meta计算机视觉方面的研究科学家。

Xiaoliang Dai,本科毕业于北大,博士毕业于普林斯顿大学,同就职于Meta。

Peizhao Zhang,本硕毕业于中山大学,博士于美国德克萨斯A&M大学,已在Meta工作五年。

论文地址:
https://arxiv.org/abs/2209.07484

参考链接:
https://www.reddit.com/r/MachineLearning/comments/xgqwvu/r_hydra_attention_efficient_attention_with_many/

点个在看 paper不断!

比标准Attention快197倍!Meta推出多头注意力机制“九头蛇”相关推荐

  1. Attention,Multi-head Attention--注意力,多头注意力详解

    Attention 首先谈一谈attention. 注意力函数其实就是把一个query,一个key-value的集合映射成一个输出.其中query,key,value,output(Attention ...

  2. 2021CVPR-Coordinate Attention for Efficient Mobile Network Design 坐标注意力机制

    前言 了解了SE和CBAM之后,Coordinate Attention(坐标注意)指出了前两者的一些缺点,并做出了一些改进,该篇论文发表于2021年CVPR Abstract 最近关于mobile ...

  3. 小米加入 AI 研究大家庭!联合西工大推出基于注意力机制的普通话语音识别算法...

    雷锋网(公众号:雷锋网) AI 科技评论按:小米近期发布了自己的 AI 音箱,加入了智能家居的战局.正当我们觉得小米会不会只是蹭"人工智能"热点的时候,小米的这篇论文证明了自己真的 ...

  4. Transformer、多头注意力机制学习笔记:Attention is All You Need.

    文章目录 相关参考连接: https://blog.csdn.net/hpulfc/article/details/80448570 https://blog.csdn.net/weixin_4239 ...

  5. 通过7个版本的attention的变形,搞懂transformer多头注意力机制

    --1-- Transformer模型架构 Transformer 由两个独立的模块组成,即Encoder和Decoder Encoder 编码器是一个堆叠N个相同的层.每层由两个子层组成,第一个是多 ...

  6. 基于Transformer的文本情感分析编程实践(Encoder编码器-Decoder解码器框架 + Attention注意力机制 + Positional Encoding位置编码)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  7. Transformer新内核Synthesizer:低复杂度的attention代替点乘式的注意力机制

    论文链接:https://arxiv.org/pdf/2005.00743.pdf 参考文档:https://mp.weixin.qq.com/s/e2Cor8amz7GiFfBGdLXULg 导读 ...

  8. 图片的描述生成任务、使用迁移学习实现图片的描述生成过程、CNN编码器+RNN解码器(GRU)的模型架构、BahdanauAttention注意力机制、解码器端的Attention注意力机制

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  9. Transformer:注意力机制(attention)和自注意力机制(self-attention)的学习总结

    目录 前言 1. 注意力机制 1.1非自主提示和自主提示 1.2 查询,键和值 1.3 注意力机制的公式 1.3.1 平均汇聚 1.3.2 非参数的注意力汇聚(Nadaraya-Watson核回归) ...

最新文章

  1. tensorflow学习(6.Alexnet实现及猫狗分类)
  2. C语言函数中的参数有const的问题
  3. Grove——.NET中的ORM实现
  4. 扫雷游戏网页版_做游戏,单人行动可行吗(3.让我试试扫雷)
  5. .net core 24
  6. 基于CNN+MFCC的语音情感识别
  7. jetson tx2/nano上yolov4测试
  8. 离散数学复习二:空集、补集、德摩根定律、异或、广义交和广义并
  9. Java导出word模板
  10. 最新ubuntu搭建公网个人邮件服务器(基于postfix,dovecot,mysql)
  11. Win7下安装ubuntu14.10系统
  12. R语言与多元线性回归方程及各种检验
  13. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——2.2 令牌和数据类型...
  14. javaweb开发和j2ee区别
  15. Mobile net系列总结(V1、V2、V3)
  16. FastDFS+Nginx安装配置
  17. 累涨超200%成华尔街新宠 Fastly借边缘云有望冲上“云”霄?
  18. Jest测试框架入门之匹配器与测试异步代码
  19. Others9_无线路由器说说2.4G和5G Wi-Fi的区别
  20. sizeof运算符详细总结

热门文章

  1. iOS进度条 自定义圆角 UIProgressView
  2. 南方科技大学计算机学科评估,全国第四轮学科评估结果公布 我校7个学科进入B类...
  3. cmd查看CPU信息
  4. 加法的横式竖式教案c语言,列加法竖式教案
  5. 从IT研发人员离职工作交接想到的
  6. 整数分解成若干项之和(DFS)拓展延伸
  7. 3D设计软件快速建模你会用吗?全新设计方式等你来体验!
  8. CodeForces 103B Cthulhu
  9. lambda表达式,embed = lambda x, eo=embedder_obj : eo.embed(x)解读
  10. 【解决方法】hexo g 报错 OperationalError: EPERM: operation not permitted, unlink ...