【论文精读】On the Relationship Between Self-Attention and Convolutional Layers
作者: Jean-Baptiste Cordonnier, Andreas Loukas, Martin Jaggi
发表会议: ICLR 2020
论文地址: arXiv:1911.03584v2
1.Introduction
1.1 文章解决的问题
"Do self-attention layers process images in a similar manner to convolutional layers? "
self-attention层是否可以执行卷积层的操作?
1.2 作者给出的回答
- 理论角度:self-attention层可以表达任何卷积层。
- 实验角度:作者构造了一个
fully attentional model
,模型的主要部分是六层self-attention。结果表明,对于前几层self-attention,执行了与卷积层类似的操作。
2. Background
2.1 Multi-head self-attention layers
对于第t个query token,自注意力层的输出如下:
Self-Attention(X)t,::=softmax(At,:)XWval 其中,A:=XWqryW⊤keyX⊤
-
X∈RT×Din :输入矩阵。T 个tokens,每个tokens都是 Din 维的向量
-
Wqry∈RDin×Dk, Wkey ∈RDin×Dk , Wval ∈ RDin ×Dout :分别表示query,key和value的矩阵。
有时,我们需要给输入加上位置编码
A:=(X+P)WqryW⊤key(X+P)⊤
有时,我们需要多头自注意力机制
MHSA(X):=concath∈[Nh][Self-Attentionh(X)]Wout +bout
- 在多头自注意力机制中,有Nh个头,每个头的输出是Dh维的向量,最终,Nh个Dh维的向量被映射到Dout 维的输出向量上。
- Wout ∈RNhDh×Dout , bout ∈RDout :映射矩阵和偏置
- concath∈[Nh][Self-Attentionh(X)]:将Nh个头的输出拼接在一起。每个头的输出维度是 T×Dh,拼接后的总输出大小会变为 T×(Nh⋅Dh)。
2.2 Attention for images
一个“像素”的含义:例如在下图中,一个vector就是一个像素
给定图像向量 X∈RW×H×Din ,其中宽度为 W,高度为 H ,通道数为 Din 。对于其中的像素 (i,j),卷积层的输出为
Conv(X)i,j,::=∑(δ1,δ2)∈ΔKXi+δ1,j+δ2,:Wδ1,δ2,:,:+b
其中 W 是 K×K×Din ×Dout 大小的权重,b∈RDout 是偏置,
集合ΔK定义如下
ΔK:=[−⌊K2⌋,⋯,⌊K2⌋]×[−⌊K2⌋,⋯,⌊K2⌋]
包含了 K×K 卷积核中所有可能出现的偏移。
将一个像素看成一个token,就可以实现对图像的self-attention操作。
若 p=(i,j), 那么将Xi,j,: ,Ai,j,:,: 分别记作 Xp,: , Ap,:
Self-Attention(X)q,:=∑ksoftmax(Aq,:)kXk,:Wval
2.3 Positional encoding for images
有两种位置编码,分别是绝对位置编码和相对位置编码。
- 绝对位置编码:每个像素 p都对应着一个位置编码 Pp, : ,绝对位置编码的注意力分数如下:
Aabsq,k=(Xq,:+Pq,:)WqryW⊤key(Xk,:+Pk,:)⊤=Xq,:WqryW⊤keyx⊤k,:+Xq,:WqryW⊤keyP⊤k,:+Pq,:WqryW⊤keyXk,:+Pq,:WqryW⊤keyPk,:
-
相对位置编码:只算query像素和key像素之间的位置差δ:=k−q,每个δ都有对应一个位置编码rδ。相对位置编码的注意力分数如下:
Arelq,k:=X⊤q,:W⊤qryWkeyXk,:+X⊤q,:W⊤qryˆWkeyrδ+u⊤WkeyXk,:+v⊤ˆWkeyrδ
- u , v :是需要学习的两个向量,每个头都对应着一组 u , v
- rδ∈RDp:Dp维的相对位置编码,所有的头共享一个rδ
- Wkey,ˆWkey:Wkey是输入的权重,ˆWkey是相对位置编码的权重
3. 理论证明
结论:
Nh 个头、每个头的输出是 Dh维、 最终的输出是 Dout 维、相对位置编码维度Dp≥3的多头自注意力层,可以表示任意 卷积核大小是√Nh×√Nh、输出通道数是min(Dh,Dout )的卷积层。

- 引理1概述:对于大小为 K×K 的卷积核,其偏移位置可以表示为ΔK= {−⌊K/2⌋,…,⌊K/2⌋}2 。如果我们让每个头只关注卷积核中的一个偏移位置,那么K2个头就可以模拟整个卷积核。
-
引理2概述:存在这样的相对位置编码,使得每个头只关注卷积核中的一个偏移位置。
论文中,相对位置编码可以自己构造,也可以用模型来学习。
自己构造的相对位置编码叫做quadratic encoding
,其中
v(h):=−α(h)(1,−2Δ(h)1,−2Δ(h)2)rδ:=(∥δ∥2,δ1,δ2)Wqry=Wkey :=0ˆWkey:=I
参数 Δ(h)=(Δ(h)1,Δ(h)2) 表示每个头应该关注哪个偏移位置,参数 α(h) 表示除了应该关注的偏移位置之外,是否还要关注其他偏移位置,Δ(h),α(h)都是可学习的参数。同时, δ=(δ1,δ2) 表示query像素和key像素的相对偏移,是固定的。
建议看完引理1和引理2的证明之后再来回看引理1概述和引理2概述,会有不一样的理解
-
padding:self-attention 层默认使用SAME填充,即输入维度和输出维度相等。对于卷积,只需要令padding=⌊K/2⌋,其中卷积核大小为K×K,即可同样实现SAME填充。
-
stride:在self-attention层后面加上一个池化层,就可以模拟任何stride的卷积。
-
空洞卷积:人为的设置self-attention中每个注意力头的关注中心Δ(h),就可以模拟任何空洞卷积。
引理1:
考虑这样一个多头注意力层:有Nh=K2 个头,且 Dh≥Dout 。令 f:[Nh]→ΔK 是一个双射。假设对于每个头来说,都有
softmax(A(h)q,:)k={1 if f(h)=q−k0 otherwise.
那么,对卷积核大小为 K×K ,输出通道数为 Dout 的任意卷积层,存在{W(h)val }h∈[Nh] ,使得 MHSA(X)=Conv(X)对任意 X∈RW×H×Din成立。

-
如何理解 softmax(A(h)q,:)k={1 if f(h)=q−k0 otherwise. :
前面我们说过,要让每个头只关注卷积核中的一个偏移位置。因此,我们可以构建一个映射f,规定哪个头关注哪个偏移位置。例如,f(1)表示第1个头应该关注哪个偏移位置,f(2)表示第2个头应该关注哪个偏移位置。
对于第1个头来说,当query像素q和key像素k的相对偏移为f(1)时,q和k的相关性概率为1;当q和k的相对偏移不是f(1)时,相关性概率为0。
将上面的过程用公式表示出来,就是
softmax(A(h)q,:)k={1 if f(h)=q−k0 otherwise.
-
引理1的证明:
我们将多头自注意力的公式表示为以下形式:
MHSA(X)=bout +∑h∈[Nh]softmax(A(h))XW(h)val Wout [(h−1)Dh+1:hDh+1]W(h)
可以将W(h)val Wout [(h−1)Dh+1:hDh+1]合并为W(h).
对于像素q来说,公式变为
MHSA(X)q,:=∑h∈[Nh](∑ksoftmax(A(h)q,:)kXk,:)W(h)+bout
由于引理1中的条件, 对于第h个头 ,当且仅当k和q的相对偏移为f(h)时,相关性概率为 1,因此有
MHSA(X)q=∑h∈[Nh]Xq−f(h),:W(h)+bout
卷积层的公式为
Conv(X)i,j,::=∑(δ1,δ2)∈ΔKXi+δ1,j+δ2,:Wδ1,δ2,:,:+b
此时若K=√Nh,q=(i,j),bout =b,
则有
MHSA(X)q=Conv(X)q
其中W(h)和Wδ1,δ2,:,:一一对应。
- Dh 和 Dout :对于被self-attention表示的卷积,其输出通道是min(Dh,Dout )。因此,我们可以令Dh=Dout ,来防止Dh或者Dout的浪费。
引理2:存在一种相对编码方案 {rδ∈RDp}δ∈Z2 ,其中维度 Dp≥3 ,以及一组参数Wqry ,Wkey ,ˆWkey ,u ,其中 Dp≤Dk ,使得对于任意 Δ∈ΔK ,都存在向量 v ( v 取决于Δ) 可以满足条件 softmax(A(h)q,:)k={1 if q−k=Δ0 otherwise.

-
引理2的证明:构造了一种维度Dp=3的相对位置编码
我们令Wkey=Wqry=0 ,ˆWkey ∈RDk×Dp 为单位矩阵。根据相对位置编码公式,有 Aq,k=v⊤rδ ,其中 δ:=k−q。
假设可以把Aq,k写成如下形式:
Aq,k=−α(∥δ−Δ∥2+c)
其中 c为常数.
在上面的式子中,Aq,k的值主要取决于−αc,当 δ=Δ时,Aq,k=−αc。
因此,−αc可以理解为缩放Aq,Δ和其他注意力分数之间差距参数。
(Aq,Δ和其他注意力分数的差距为−α∥δ−Δ∥2,当−αc很大时,−α∥δ−Δ∥2占的比例很小,因此可以说,Aq,Δ和其他注意力分数的差距不大。 反之,−αc很小时,−α∥δ−Δ∥2占的比例很大,Aq,Δ和其他注意力分数的差距很大。)
当 δ=Δ时, 有
limα→∞softmax(Aq,:)k=limα→∞e−α(∥δ−Δ∥2+c)∑k′e−α(∥(k−q′)−Δ∥2+c)=limα→∞e−α∥δ−Δ∥2∑k′e−α∥(k−q′)−Δ∥2=11+limα→∞∑k′≠ke−α∥(k−q′)−Δ∥2=1
对于 δ≠Δ,有 limα→∞softmax(Aq,:)k=0。
因此,当α→∞时,恰好满足引理2中的条件。
那么是否存在v, rδ,使得Aq,k=v⊤rδ=−α(∥δ−Δ∥2+c)呢?
我们有−α(∥δ−Δ∥2+c)=−α(∥δ∥2+∥Δ∥2−2⟨δ,Δ⟩+c)。
现在我们令v=−α(1,−2Δ1,−2Δ2) ,以及 rδ=(∥δ∥2,δ1,δ2), 那么
Aq,k=v⊤rδ=−α(∥δ∥2−2Δ1δ1−2Δ2δ2)=−α(∥δ∥2−2⟨δ,Δ⟩)=−α(∥δ−Δ∥2−∥Δ∥2)
其中 常数c=−∥Δ∥2 。
至此,我们成功找到了v, rδ,使得Aq,k=v⊤rδ=α(∥δ−Δ∥2+c)。
-
α:理论上,α应该是无穷大。但在实际中,其他像素的注意力概率会随着α的增长以指数形式趋近于 0,因此,如果32位浮点数的下界是10−45,那么只需要令α=46就能满足要求。
-
根据上面所说,当Δ(h)一一对应于ΔK中的元素,且α(h)≥46时,注意力层可以完美模拟卷积层。那么,为什么将Δ(h)=(Δ(h)1,Δ(h)2)和α(h)设置成可学习的?
让模型自主学习,可以取得更好得泛化效果。在实验中可以看到,在自主学习Δ(h)和α(h)后,模型既可以执行卷积操作;又可以执行卷积所不能执行的操作,是对卷积层的一般化。
4. 实验
4.1 Implement details
fully attentional model
模型:
fully attentional model
包含 6 层多头自注意力层,每层有 9 个注意力头,模拟 3×3 卷积核的局部性。
- 每层使用二次位置编码或学习位置编码,以捕捉空间信息。
- 此外,模型在输入图像上进行 2×2 下采样,以减少计算量。
- 最后一层通过平均池化汇总特征,并送入线性分类器进行预测。
- 在部分实验中还加入了内容自适应注意力,使注意力得分根据像素内容进行自适应调整。
下面是fully attentional model
和CIFAR-10上与ResNet18的比较


fully attentional model
比ResNet18慢,不知道是代码优化的问题还是架构的问题。作者相信通过优化,二者的性能差距可以被抹平。
4.2 Quadratic encoding
每个多头自注意力层有 9 个注意力头,每个头关注的中心位置初始化为Δ(h)∼N(0,2I2)
下图是第4层多头自注意力层中,每个头的Δ(h)结果(每种颜色代表一个头的Δ(h))。可以看到,9个头合在一起确实可以模拟卷积层。

图4是训练结束之后,各个层中,每个头的Δ(h)。前几层中,注意力头倾向于关注局部模式,而更深的层则倾向于关注更大的模式。

4.3 Learned relative positional encoding
让模型自主学习相对位置编码时,query像素的相关性得分如下(红色越深代表得分越高)

可以发现
- 有类似卷积的操作:第1,第2和第3层中的某些头关注单个像素,与引理 1 非常吻合。
- 也可以执行卷积不能执行的操作:其他头会关注水平对称的模式,以及长距离像素间的相关性。
此外,作者还加入了基于内容的注意力机制(content-based attention)。当content-based attention与模型自主学习的相对位置编码结合后,相关性得分如下:

可以发现:
- 有类似卷积的操作:即使加入了content-based attention,2,3层中的某些头也只是利用相对位置来计算相关性,就像卷积核的感受野一样,利用相对位置计算。
- 也可以执行卷积不能执行的操作:其他头使用了更多的基于内容的注意力。
5. 结论
- 理论上:头部数量足够时,self-attention可以表示任意的卷积层。
- 实验:
fully attentonal model
既可以学习像卷积层一样学习局部模式,也可以学习全局模式。因此fully attentonal model
是一般化的CNN。
- 未来工作方向:将CNN中的观点应用到transformer上。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?