【论文精读】On the Relationship Between Self-Attention and Convolutional Layers

【论文精读】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:=XWqryWkeyX

  • XRT×Din :输入矩阵。T 个tokens,每个tokens都是 Din 维的向量

  • WqryRDin×Dk, Wkey RDin×Dk , Wval  RDin ×Dout :分别表示query,key和value的矩阵。


有时,我们需要给输入加上位置编码

A:=(X+P)WqryWkey(X+P)

  • PRT×Din :位置编码

有时,我们需要多头自注意力机制

MHSA(X):=concath[Nh][Self-Attentionh(X)]Wout +bout 

  • 在多头自注意力机制中,有Nh个头,每个头的输出是Dh维的向量,最终,NhDh维的向量被映射到Dout 维的输出向量上。
  • Wout RNhDh×Dout , bout RDout :映射矩阵和偏置
  • concath[Nh][Self-Attentionh(X)]:将Nh个头的输出拼接在一起。每个头的输出维度是 T×Dh,拼接后的总输出大小会变为 T×(NhDh)

2.2 Attention for images

一个“像素”的含义:例如在下图中,一个vector就是一个像素

image-20241025134531822

给定图像向量 XRW×H×Din ,其中宽度为 W,高度为 H ,通道数为 Din 。对于其中的像素 (i,j),卷积层的输出为

Conv(X)i,j,::=(δ1,δ2)ΔKXi+δ1,j+δ2,:Wδ1,δ2,:,:+b

其中 WK×K×Din ×Dout 大小的权重,bRDout  是偏置,

集合Δ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 

  • q:query的像素
  • k:key的像素

2.3 Positional encoding for images

有两种位置编码,分别是绝对位置编码和相对位置编码。

  • 绝对位置编码:每个像素 p都对应着一个位置编码 Pp, :  ,绝对位置编码的注意力分数如下:

    Aq,kabs=(Xq,:+Pq,:)WqryWkey(Xk,:+Pk,:)=Xq,:WqryWkeyxk,:+Xq,:WqryWkeyPk,:+Pq,:WqryWkeyXk,:+Pq,:WqryWkeyPk,:


  • 相对位置编码:只算query像素和key像素之间的位置差δ:=kq,每个δ都有对应一个位置编码rδ。相对位置编码的注意力分数如下:

    Aq,krel:=Xq,:WqryWkeyXk,:+Xq,:WqryW^keyrδ+uWkeyXk,:+vW^keyrδ

    • uv :是需要学习的两个向量,每个头都对应着一组 uv
    • rδRDpDp维的相对位置编码,所有的头共享一个rδ
    • WkeyW^keyWkey是输入的权重,W^key是相对位置编码的权重

3. 理论证明

结论:

Nh 个头、每个头的输出是 Dh维、 最终的输出是 Dout  维、相对位置编码维度Dp3的多头自注意力层,可以表示任意 卷积核大小是Nh×Nh、输出通道数是min(Dh,Dout )的卷积层。

image-20241025140750549

  • 引理1概述:对于大小为 K×K 的卷积核,其偏移位置可以表示为ΔK= {K/2,,K/2}2 。如果我们让每个头只关注卷积核中的一个偏移位置,那么K2个头就可以模拟整个卷积核。

  • 引理2概述:存在这样的相对位置编码,使得每个头只关注卷积核中的一个偏移位置。

    论文中,相对位置编码可以自己构造,也可以用模型来学习。

    自己构造的相对位置编码叫做quadratic encoding,其中

    v(h):=α(h)(1,2Δ1(h),2Δ2(h))rδ:=(δ2,δ1,δ2)Wqry=Wkey :=0Wkey^:=I

    参数 Δ(h)=(Δ1(h),Δ2(h)) 表示每个头应该关注哪个偏移位置,参数 α(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 个头,且 DhDout 。令 f:[Nh]ΔK 是一个双射。假设对于每个头来说,都有

softmax(Aq,:(h))k={1 if f(h)=qk0 otherwise. 

那么,对卷积核大小为 K×K ,输出通道数为 Dout  的任意卷积层,存在{Wval (h)}h[Nh] ,使得 MHSA(X)=Conv(X)对任意 XRW×H×Din成立。

image-20241025141703456

  • 如何理解 softmax(Aq,:(h))k={1 if f(h)=qk0 otherwise. 

    前面我们说过,要让每个头只关注卷积核中的一个偏移位置。因此,我们可以构建一个映射f,规定哪个头关注哪个偏移位置。例如,f(1)表示第1个头应该关注哪个偏移位置,f(2)表示第2个头应该关注哪个偏移位置。

    对于第1个头来说,当query像素q和key像素k的相对偏移为f(1)时,qk的相关性概率为1;当qk的相对偏移不是f(1)时,相关性概率为0。

    将上面的过程用公式表示出来,就是

    softmax(Aq,:(h))k={1 if f(h)=qk0 otherwise. 


  • 引理1的证明:

    我们将多头自注意力的公式表示为以下形式:

    MHSA(X)=bout +h[Nh]softmax(A(h))XWval (h)Wout [(h1)Dh+1:hDh+1]W(h)

    可以将Wval (h)Wout [(h1)Dh+1:hDh+1]合并为W(h).

    对于像素q来说,公式变为

    MHSA(X)q,:=h[Nh](ksoftmax(Aq,:(h))kXk,:)W(h)+bout 

    由于引理1中的条件, 对于第h个头 ,当且仅当kq的相对偏移为f(h)时,相关性概率为 1,因此有

MHSA(X)q=h[Nh]Xqf(h),:W(h)+bout 

卷积层的公式为

Conv(X)i,j,::=(δ1,δ2)ΔKXi+δ1,j+δ2,:Wδ1,δ2,:,:+b

此时若K=Nhq=(i,j)bout =b

则有

MHSA(X)q=Conv(X)q

其中W(h)Wδ1,δ2,:,:一一对应。


  • DhDout :对于被self-attention表示的卷积,其输出通道是min(Dh,Dout )。因此,我们可以令Dh=Dout ,来防止Dh或者Dout的浪费。

引理2:存在一种相对编码方案 {rδRDp}δZ2 ,其中维度 Dp3 ,以及一组参数Wqry ,Wkey ,W^key ,u ,其中 DpDk ,使得对于任意 ΔΔK ,都存在向量 v ( v 取决于Δ) 可以满足条件 softmax(Aq,:(h))k={1 if qk=Δ0 otherwise. 

image-20241025150321607

  • 引理2的证明:构造了一种维度Dp=3的相对位置编码

    我们令Wkey=Wqry=0W^key RDk×Dp 为单位矩阵。根据相对位置编码公式,有 Aq,k=vrδ ,其中 δ:=kq

    假设可以把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)keα((kq)Δ2+c)=limαeαδΔ2keα(kq)Δ2=11+limαkkeα(kq)Δ2=1

    对于 δΔ,有 limαsoftmax(Aq,:)k=0

    因此,当α时,恰好满足引理2中的条件。

    那么是否存在v, rδ,使得Aq,k=vrδ=α(δΔ2+c)呢?

    我们有α(δΔ2+c)=α(δ2+Δ22δ,Δ+c)

    现在我们令v=α(1,2Δ1,2Δ2) ,以及 rδ=(δ2,δ1,δ2), 那么

    Aq,k=vrδ=α(δ22Δ1δ12Δ2δ2)=α(δ22δ,Δ)=α(δΔ2Δ2)

    其中 常数c=Δ2

    至此,我们成功找到了v, rδ,使得Aq,k=vrδ=α(δΔ2+c)

  • α:理论上,α应该是无穷大。但在实际中,其他像素的注意力概率会随着α的增长以指数形式趋近于 0,因此,如果32位浮点数的下界是1045,那么只需要令α=46就能满足要求。

  • 根据上面所说,当Δ(h)一一对应于ΔK中的元素,且α(h)46时,注意力层可以完美模拟卷积层。那么,为什么将Δ(h)=(Δ1(h),Δ2(h))α(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的比较

image-20241025194527800

image-20241025200022044

fully attentional model比ResNet18慢,不知道是代码优化的问题还是架构的问题。作者相信通过优化,二者的性能差距可以被抹平。

4.2 Quadratic encoding

每个多头自注意力层有 9 个注意力头,每个头关注的中心位置初始化为Δ(h)N(0,2I2)

下图是第4层多头自注意力层中,每个头的Δ(h)结果(每种颜色代表一个头的Δ(h))。可以看到,9个头合在一起确实可以模拟卷积层。

image-20241025195735446

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

image-20241025195707941

4.3 Learned relative positional encoding

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

image-20241025203107242

可以发现

  • 有类似卷积的操作:第1,第2和第3层中的某些头关注单个像素,与引理 1 非常吻合。
  • 也可以执行卷积不能执行的操作:其他头会关注水平对称的模式,以及长距离像素间的相关性。

此外,作者还加入了基于内容的注意力机制(content-based attention)。当content-based attention与模型自主学习的相对位置编码结合后,相关性得分如下:

image-20241025203120371

可以发现:

  • 有类似卷积的操作:即使加入了content-based attention,2,3层中的某些头也只是利用相对位置来计算相关性,就像卷积核的感受野一样,利用相对位置计算。
  • 也可以执行卷积不能执行的操作:其他头使用了更多的基于内容的注意力。

5. 结论

  • 理论上:头部数量足够时,self-attention可以表示任意的卷积层。
  • 实验: fully attentonal model既可以学习像卷积层一样学习局部模式,也可以学习全局模式。因此fully attentonal model是一般化的CNN。
  • 未来工作方向:将CNN中的观点应用到transformer上。
posted @   Brain404  阅读(276)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示