ResT: An Efficient Transformer for Visual Recognition
-
REST:一种高效的视觉识别transformer
Abstract
本文提出了一种高效的多尺度视觉转换器REST,它可以作为图像识别的通用主干。与已有的利用标准变换器块来处理固定分辨率的原始图像的Transformer方法不同,本文的方法具有以下优点:(1)构建了一种内存高效的多头自关注算法,它通过简单的深度卷积来压缩内存,并在保持多头多样性的同时投影跨注意头维度的交互作用;(2)位置编码被构造为空间注意,更灵活,可以处理任意大小的输入图像,而不需要内插或微调;(3)不再在每个阶段开始时直接进行标记化tokenization,而是将补丁嵌入为在标记图上跨步的重叠卷积运算堆栈。
REST
Rethinking of Transformer Block
标准的transformer块由MSA和FFN组成,每个子层采用残差连接。
对于token输入: x∈Rn×dmx\in R^{n\times d_m}x∈Rn×dm,where,n表示空间维度,dmd_mdm表示通道维度
每个transformer的输出为:y=x’+FFN(LN(x’))y = x’ + FFN(LN(x’))y=x’+FFN(LN(x’)),and x’=x+MSA(LN(x))x’=x + MSA(LN(x))x’=x+MSA(LN(x))MSA
首先通过将三组投影映射于输入来获取Q,K,V。每个投影由将dmd_mdm维输入映射到dkd_kdk维空间的K的线性层(头部)组成,其中dk=dmkd_k = \frac{d_m}{k}dk=kdm是头部维度。MSA的计算代价为O(2dmn2+4dm2n)O(2d_mn^2+4d^2_mn)O(2dmn2+4dm2n)
MSA有两个缺点:MSA的计算量与dmd_mdm或n成平方关系,导致训练和推理的开销很大;MSA中的每个头部只负责嵌入维度的一个子集,这可能会影响网络的性能,特别是每个头部的token嵌入维度较小时。
为了压缩内存,将2D输入token x∈Rn×dmx\in R^{n\times d_m}x∈Rn×dm眼空间维度重塑为3D token x∧∈Rdm×h×w\overset{\wedge}{x}\in R^{d_m\times h \times w}x∧∈Rdm×h×w,然后送到深度卷积运算。启示
- 这种注意力的是由NLP引申过去的,那这种方法是不是可以用来解决NLP任务中token序列过长导致复杂度很高的问题呢,可以看看相关的论文降低MSA的复杂度是很有必要的。