6

比标准Attention快197倍!Meta推出多头注意力机制"九头蛇" | 量子位

 1 year ago
source link: https://www.qbitai.com/2022/09/37931.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

head.jpg丰色 2022-09-19 13:05:25 来源:量子位

思路来自线性注意力的一个“矛盾点”

丰色 发自 凹非寺

量子位 | 公众号 QbitAI

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

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

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

8990953e862a4f71a8ff9dddc97b4e65~noop.image?_iz=58558&from=article.pc_detail&x-expires=1664168539&x-signature=dB2X0RXBJ3elmHeKuroUd%2BezttY%3D

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

那能怎么办呢?

好消息是——

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

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

3f5bbd8e267a4fed884a1b0c68ce1769~noop.image?_iz=58558&from=article.pc_detail&x-expires=1664168539&x-signature=F06elCFpzQ7gGoTdmn%2FPEVuMyHI%3D

具体怎么回事儿?

思路来源一个“矛盾点”

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

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

dc991a93aa504272ae8045f18ea4c4aa~noop.image?_iz=58558&from=article.pc_detail&x-expires=1664168539&x-signature=%2BMhcyEpnW%2FbzgnF0A%2Fsy6SKXSj8%3D

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

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

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

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

具体来说:

63357682ff714ce0987a28e4a48f27e2~noop.image?_iz=58558&from=article.pc_detail&x-expires=1664168539&x-signature=9yAYfF8q2FqJTU2gG6ZgHZ9reHQ%3D

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

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

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

6b519532c90841589ee03b760c870123~noop.image?_iz=58558&from=article.pc_detail&x-expires=1664168539&x-signature=KPxpPJerr7lDFLczJ%2FCqu3CBgQY%3D

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

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

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

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

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

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

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

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

79a786c06d064adfbdf38d04d9d0b299~noop.image?_iz=58558&from=article.pc_detail&x-expires=1664168539&x-signature=4zDUR0kvbiQa5%2FXBvzgPZZAVzmA%3D

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

721ba611fdee4cd480607f058c069811~noop.image?_iz=58558&from=article.pc_detail&x-expires=1664168539&x-signature=rMav3SdlBs3Kobooy7FO4PoL1ic%3D

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

5219507cd080418db76a921e87b777df~noop.image?_iz=58558&from=article.pc_detail&x-expires=1664168539&x-signature=sCWPR%2Bng6KqA%2BHCASSR2nMV1SDQ%3D
777bea982c4f4a8dbeaf75bdf352c949~noop.image?_iz=58558&from=article.pc_detail&x-expires=1664168539&x-signature=DsAiFLK31gWFS%2Fa%2FUqP3jJEOhlo%3D

当然,最多可替换8层。

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

d087e35e98444f81ae2ed8470a7eeadc~noop.image?_iz=58558&from=article.pc_detail&x-expires=1664168539&x-signature=OmA19dirCkrkkzIhdRmCYrg%2FzwI%3D

这篇成果已入选ECCV 2022 Workshop

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

371c2fbe5dc641bc9081fa1024e95940~noop.image?_iz=58558&from=article.pc_detail&x-expires=1664168539&x-signature=hO71ew0TlMAnfsZ4b%2Fuvu%2FxK9Ic%3D

其中华人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/

版权所有,未经授权不得以任何形式转载及使用,违者必究。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK