A = 1 d Q [ softmax ( K ⊤ ) V ] + E V A = \frac{1}{\sqrt{d}} Q [\text{softmax}(K^{\top})V] + EV A=d1Q[softmax(K⊤)V]+EV
在设计思路上延续了 Linear Attention的形式,几种不同的Attention可以参考我之前的文章:Vision Transformer之LambdaNetworks。
线性注意力:Softmax 应用于 KV 之间要被消去的维度,即序列索引的维度。这里的运算形式可以看做是 KV 就是对 Q 进行 global data-dependent linear transformation 的权重(空间共享的通道变换)。这种设计在没有位置编码的情况下,考虑到 Transformer 仅由线性层和自注意力组成,一个 token 的输出依赖于相应的输入,而没有考虑到其局部附近特征的任何差异,该属性不利语义分割等任务(例如,天空和具有相同外观属性的蓝色斑块可能被划分为同一类别),所以有必要引入位置信息。
模型整体使用了卷积位置编码和卷积相对位置编码。其中卷积位置编码与原始的CPE一致。但是卷积相对位置编码就是作者们自己的设计了。
这里的核心是相对位置嵌入 E V ∈ R N × C EV \in \mathbb{R}^{N \times C} EV∈RN×C。独立计算的时候,时空复杂度均为序列长度的平方级别。
对于图像而言有:
E V i , j , c v = ∑ ∣ k − i ∣ < M 2 , ∣ l − j ∣ < M 2 ∑ c q ( Q i , j , c q P k , l , c q ) V k , l , c v = ∑ c q Q i , j , c q ∑ ∣ k − i ∣ < M 2 , ∣ l − j ∣ < M 2 ( P k , l , c q V k , l , c v ) EV_{i,j,c_v} = \sum_{|k-i| < \frac{M}{2}, |l-j| < \frac{M}{2}} \sum_{c_q} (Q_{i,j,c_q} P_{k,l,c_q}) V_{k,l,c_v} \\ = \sum_{c_q} Q_{i,j,c_q} \sum_{|k-i| < \frac{M}{2}, |l-j| < \frac{M}{2}} (P_{k,l,c_q} V_{k,l,c_v}) EVi,j,cv=∣k−i∣<2M,∣l−j∣<2M∑cq∑(Qi,j,cqPk,l,cq)Vk,l,cv=cq∑Qi,j,cq∣k−i∣<2M,∣l−j∣<2M∑(Pk,l,cqVk,l,cv)
所以为了降低计算复杂度,这里将 Q、P 和 V 的每个通道独立作为一个 head 进行处理,即这里的处理就没有了通道维度的索引,变为:
E V i , j c = ∑ ∣ k − i ∣ < M 2 , ∣ l − j ∣ < M 2 ( Q i , j c P k , l c ) V k , l c = Q i , j c ∑ ∣ k − i ∣ < M 2 , ∣ l − j ∣ < M 2 ( P k , l c V k , l c ) EV^c_{i,j} = \sum_{|k-i| < \frac{M}{2}, |l-j| < \frac{M}{2}} (Q^c_{i,j} P^c_{k,l}) V^c_{k,l}\\ = Q^c_{i,j} \sum_{|k-i| < \frac{M}{2}, |l-j| < \frac{M}{2}} (P^c_{k,l} V^c_{k,l}) EVi,jc=∣k−i∣<2M,∣l−j∣<2M∑(Qi,jcPk,lc)Vk,lc=Qi,jc∣k−i∣<2M,∣l−j∣<2M∑(Pk,lcVk,lc)
而后面这个形式可以通过深度分离卷积来实现,窗口的相对位置编码即为卷积的权重,V 即为被卷积的特征。输出结果与 Q 直接相乘即可。
基于以上推导,深度卷积可以看做是相对位置编码的一种特殊情况。
分类 | 密集预测 |
---|---|