论文:https://arxiv.org/abs/2303.08810
一、介绍
1、要解决的问题:transformers可以捕捉长期依赖,但是它具有很高的计算复杂性,并占用大量内存。
2、之前研究者解决这个问题的做法,一般都是稀疏注意力:
1)基于手动设计的稀疏模式:在局部窗口或空洞窗口的限制注意力
2)使得稀疏性可以自适应于数据

上面这些方法使用不同的策略融合或者选择和查询无关的键值token,这些token对所有查询共享。但是根据VIT和DETR的可视化结果,不同语义区域的查询对应不同的键值对。
3、所以作者的方法是动态的、查询相关的query-aware,找到最有相关性的键值对。
本文的想法:主要想法是先在区域级别粗略的过滤掉和查询不相关的键值对,这样留下一小部分topk选好的区域routed regions,然后在这些区域上使用细粒度token到token的细粒度注意力机制。
二、方法:
1、Bi-Level Routing Attention

1)输入图片HxWxC,分成SxS个区域,reshape到,然后求出Q,K,V

2)求相关区域
每个区域的,求区域之间的相似性矩阵,文中称为通过矩阵相乘得到的region-to-region affinity graph:
,衡量了两个区域之间的语义相关性大小。然后选出topk个区域
,I的第i行是最相关的k个区域的索引。
3)Token-to-token attention
为了能在GPU并行计算,先把K和V聚集在一起,然后再计算注意力:

4)分析得到的提出的BRA(Bi-Level Routing Attention)复杂度,而一般的注意力复杂度为
。
2、BiFormer

BRA作为基础模块,采用四层金字塔结构。
patch merging module用来减少空间分辨率同时增加通道数。