每周论文15

本周论文:

  1. Selective Kernel Networks
  2. Attentional pooling for action recognition

1️⃣[Selective Kernel Networks]

通过对不同kernel size的feature map之间进行信息筛选获得更为鲁棒的表示,能够对不同的感受野进行整合,实现动态调整感受野。其思路还挺有意思的。

Introduction将该模型与视觉神经的理论结合在一起,也即,对于人类而言,在看不同尺寸不同远近的物体时,视觉皮层神经元感受野大小是会根据刺激来进行调节的,但一般而言在CNN中卷积核的大小是固定的。该模型正是从这一现象中获得灵感。

整个模型一共分为三个步骤:split,fuse,select

split生成多个不同kernel size的feature map,也即对应不同的感受野大小;fuse将不同feature map结合起来,获得一个全局的综合的向量表示;select根据不同的weight选择不同感受野的feature map。

以上图为例。

SK-Net

第一步split

给定输入$\mathbf{X} \in \mathbb{R}^{H^{\prime} \times W^{\prime} \times C^{\prime}}$,通过不同的kernel size的CNN的卷积获得不同的feature map,上图是$3\times 3$与$5\times 5$的卷积核。卷积可以是传统的convolution卷积,也可以是空洞卷积(dilated convolution),或者深度卷积(depthwise convolution)。则有:
$\widetilde{\mathcal{F}} : \mathbf{X} \rightarrow \widetilde{\mathbf{U}} \in \mathbb{R}^{H \times W \times C}$ 与 $\widehat{\mathcal{F}} : \mathbf{X} \rightarrow \widehat{\mathbf{U}} \in \mathbb{R}^{H \times W \times C}$,其中$\widetilde{\mathcal{F}},\widehat{\mathcal{F}}$是卷积变换。

第二步fuse

直接将不同的feature map结合起来以获得全局信息,用以之后的动态调整。这里采用简单的求和以及global average pooling以获得channel-wise的信息$\mathbf{s} \in \mathbb{R}^{C}$:

在获得$\mathbf{s}$后再通过MLP获得$\mathbf{z}$:

其中$\mathcal{B}$是batch normalization;$\delta$是Relu。

第三步select

使用soft attention去选择不同kernel size的feature map并结合在一起。也即:

其中$\mathbf{A}_{c}$是对应$\widetilde{\mathbf{U}}$第$c$个channel的参数,$\mathbf{B}_{c}$是对应$\widehat{\mathbf{U}}$第$c$个channel的参数。$\mathbf{A}, \mathbf{B} \in \mathbb{R}^{C \times d}$,那么$a_{c},b_{c}$就对应不同feature map的weight。

因此,最终的feature map $\mathbf{V}$:

对比&思考

与SE-Net

SE-Net是通过不同channel之间的交互,使得channel获得全局的感受野,使用的是对channel的放缩(详见上一篇论文笔记);而SK-Net是不同的感受野之间的同一channel在通过全局信息的指导下以soft-attention的形式加权平均,这就和论文中提到的人类视觉对不同物体进行动态调整感受野的思路一致。

与dynamic convolution

在论文[PAY LESS ATTENTION WITH LIGHTWEIGHT AND DYNAMIC CONVOLUTIONS]中,研究人员提出动态感受野的convolution,通过利用当前词预测一个卷积窗口,增加了模型的灵活性,并在机器翻译上取得了很好的结果。

虽然目的与本篇论文一致,但思路是完全不同的。一个是通过预测;另一个是在全局信息的指导下进行加权。在我的理解看来,或许本篇论文的思路更加合理一些,第一,在有了全局信息的指导下能够更好的进行加权,而通过预测,似乎有些盲目,可能需要更多的数据才能学得更好;第二,dynamic convolution论文中也提到了,如果不使用如深度可分离卷积等轻量级卷积方法,dynamic convolution不大现实(A dynamic version of standard convolutions would be impractical for current GPUs due to their large memory requirements),而SK-Net则不会有这个问题。

其他思考

从另一个角度去思考,SK-Net通过人工定义好的几种不同大小的卷积,相当于在模型中引入更强的先验(inductive bias),也即假设了数据不会超过这几种大小的卷积的处理范围,这或许比不引入先验,完全靠数据去学某种特定pattern的dynamic convolution对小数据集更友好,因此可以不需要更多的数据来使得模型表现良好。类似的理解可以在CNN/RNN与Transformer的对比中看见,因为CNN/RNN引入了较强的local bias,因此对于小数据集更友好,但同时其上限或许不如Transformer高;而Transformer一开始就是全局感受野,使得需要更多数据来帮助模型学到某种特定pattern(如某种local bias),但当数据充足时,Transformer的上限更高,近期非常火的pretrained model GPT/GPT-2.0/Bert似乎也印证了这点。


2️⃣[Attentional pooling for action recognition]

提出一种基于attention的pooling策略,采用低秩近似的方法,使得模型能够在计算量不增加很多的情况下达到更好的效果。可以将该方法理解成对二阶pooling的低秩近似。

方法

一阶pooling

记$X \in R^{n \times f}$为被pooling的层,其中n为空间位置的个数,如$16\times 16$,$f$为channel个数。标准的sum/max pooling将该矩阵缩减为$R^{f \times 1}$,然后使用全连接的权重$\mathbf{w} \in R^{f \times 1}$获得一个分类的分数。这里假设的是二分类,但可以很容易推广为多分类。

上述操作形式化可以写成:

其中$\mathbf{1}$为全1向量,$\mathbf{x}=\mathbf{1}^{T} X \in R^{1 \times f}$就是通过sum pooling后的feature。

二阶pooling

构建二阶feature $X^{T} X \in R^{f \times f}$,在获得二阶feature后,通常或向量化该矩阵,再送入全连接以做分类。也即我们会学习一个$f\times f$的全连接权重向量。若保持二阶feature与对应的全连接权重向量的形式为矩阵,矩阵相乘,其中的迹实际上就是这两个向量化后的矩阵所做内积获得的分数。形式化可以写成:

这可以用迹的定义去证明:示意图

低秩二阶pooling

现尝试使用低秩去近似该二阶pooling,也即对$W$近似,将$W$写成两个向量的乘积,也即:

将上式代入二阶pooling,可获得:

第二行使用的是迹的定理:$\operatorname{Tr}(A B C)=\operatorname{Tr}(C A B)$
第三行使用的是标量的迹等于标量本身。
最后一行表明整个流程:给定一个feature map $X$,首先计算一个对所有空间位置的attentional map:$\mathbf{h}= {X \mathbf{b} \in R^{n \times 1}}$;然后根据该attentional map计算加权平均的feature:$\mathbf{x}=X^{T} \mathbf{h} \in R^{f \times 1}$。该feature再通过线性层获得最终的分数。

实际上上式还有其他理解的角度:

第一行表明attentional map也可以通过$X \mathbf{a} \in R^{n \times 1}$来计算,$\mathbf{b}$来做classifier。
第二行表明,该式子本质上是对称的,可以看成两个attentional heapmap的内积

下图是整个流程:

Top-down attention

现将二分类推广为多分类:

也即将$W$替换成类相关的参数,仿照上面的推导,可以推出每个类都有特定的$\boldsymbol{a}_{k}$与$\boldsymbol{b}_{k}$。

但在这里通过固定其中一个参数为与类无关的参数,也即$\boldsymbol{b}_{k}=\boldsymbol{b}$。实际上就等价于一个是类相关的top-down attention;另一个是类无关的bottom-up attention。一个获得类特定的特征;另一个获得全局通用的特征。

因此最终低秩attention model为:

Average-pooling Revisited

当然在给定了上述一系列的推导,我们对average-pooling重新进行形式化:

将$\mathbf{w}$替换成类相关的$\mathbf{w}_{k}$,实际上就是将二分类推广为多分类。但该形式赋予了average-pooling新的理解。

当然,我们还可以将rank-1推广为rank-k,实验证明对于大数据集使用大的秩会更好。

对比

与Self-attentive的联系

论文[A STRUCTURED SELF-ATTENTIVE SENTENCE EMBEDDING]就提出了利用可学习的head对feature进行attention加权平均的方法,并且将一个head推广到多个head。
实际上在$\mathbf{h}= {X \mathbf{b} \in R^{n \times 1}}$我们就可以看出,$\mathbf{b}$在这里扮演的角色就是self-attentive的head的角色。对于秩为1的近似,就是head为1的情况,若将秩为1推广为秩为k,也即等价于在Self-attentive中多个head的情况。

本文巧妙的地方在于head有两个作用,一种是top-down的head,获得的是类相关的feature;另一个是bottom-up的feature,获得的是通用的feature。并且本文通过巧妙的数学推导来获得新的解释,本来仅仅是二阶feature过一个全连接,但通过公式推导赋予了attention的解释,这点让人眼前一亮。