Attentional Constellation Nets for Few-Shot Learning

https://openreview.net/pdf?id=vujTf_I8Kmc

https://github.com/wuwenshan/ConstellationNet

Attentional Constellation Nets for Few-Shot Learning,2021,ICLR

总结:本文将传统part-based模型中的constellation模型用于小样本学习中,解决小样本场景下样本稀少问题。文章的创新点在于如何将传统constellation模型融合到CNN中用于小样本学习。给我的启发:感觉和ICLR 2021另外一篇concept learner论文异曲同工,都是从更高层级的part of object入手,而非传统像素级别,让模型学习一些高层级的显性知识(这样模型泛化能力可能更强,有利于测试集上分类)。感觉这种part-based方向值得深入研究下。

1. 简介

1.1 摘要

The success of deep convolutional neural networks builds on top of the learningof effective convolution operations, capturing a hierarchy of structured featuresvia filtering, activation, and pooling. However, the explicit structured features, e.g. object parts, are not expressive in the existing CNN frameworks. In this paper,we tackle the few-shot learning problem and make an effort to enhance structured features by expanding CNNs with a constellation model, which performs cell feature clustering and encoding with a dense part representation; the relationships among the cell features are further modeled by an attention mechanism. With the additional constellation branch to increase the awareness of object parts, our method is able to attain the advantages of the CNNs while making the overall internal representations more robust in the few-shot learning setting. Our approach attains a significant improvement over the existing methods in few-shot learning on the CIFAR-FS, FC100, and mini-ImageNet benchmarks.

深度CNN的成功建立在有效卷积操作的学习上,通过过滤、激活、池化可以捕捉不同层次的结构特征。但是现有的CNN框架无法表达显示结构特征,比如object parts。本文,我们解决了小样本学习问题,并努力尝试通过将CNNs和constellation模型(用dense part表示对cell特征进行聚类和编码)相结合来强化结构特征,再进一步用注意力机制对不同cell feature之间的关系进行建模。在小样本设定下,通过额外的constellation分支来增加object parts的感知能力,我们的方法可以在保证CNNs优势的同时让整体内部表示更robust。和现有小样本学习方法相比,我们的方法在CIFAR-FS、FC100和mini-Imagenet三个数据集上性能有显著提升。

1.2本文工作

背景: 深度CNNs在计算机视觉的各种应用中取得了很大进展,通过可视化CNN内部结构,我们可以揭示学习到的卷积核对于物体类别的语义信息。在前几层显示bar/edge这类形状,中间层显示object parts,后面几层显示face/object这类形状。 In general, we consider the learned convolution kernels being somewhat implicit about the underlying objects since they represent projections/mappings for the input but without the explicit knowledge about the parts in terms of their numbers, distributions, and spatial configurations.这段英文大概就是说,传统CNNs是个黑盒模型,没有显性知识,单纯将一个样本通过一些列卷积操作映射成一个表示向量。

在CV领域,对于explict object representation也有很多相关研究比如deformable templates,pictorial structure、constellation model等等,这些模型可以称之为part-based 模型。这类模型有三个特点:(1)unsupervised learning;(2)explicit clustering;(3)对spatial configuration of the parts特征进行建模。和CNNs相比,这些方法都是带有显式的part-based representation。

动机: 在小样本学习场景下,CNNs的implicit 和part-based模型的explict feature representation能不能结合到一起呢?小样本场景下,CNNs可能由于没有足够训练样本导致无法学习到通用的表示,但是clustering and dictionary learning可以提供一种直接的数据抽象方法。

注:这里的“clustering and dictionary learning”应该就是part-based 模型里面的一些操作,感兴趣可自行了解。

本文工作: 作者提出了一个端到端的框架,通过无缝结合constellation模型和卷积操作,将implicit 和 explicit part-based 表示结合到一起,用于小样本分类任务。首先利用cell feature 聚类模型对潜在的object parts进行编码,生成一个dense distance map。然后利用自注意力机制对这些cell间关系进行建模。作者将它们的方法命名为ConstellationNet,通过大量实验证明了该方法的有效性。

2. 方法

constellation是2006年“ One-shot learning of object categories ”中提出来的概念,在一个混合模型中单独学习appearance和shape。本文作者以端到端的方式对constellation模型进行改进。模型框架如下图1所示:

在常规Conv层后面加了一个Constell层,其中包含cell feature clustering和cell relation modeling两个步骤。

2.1 Cell Feature Clustering

基于前人的一些工作,假设cell features表示为U={u1,u2,...,Un}\mathcal U={\mathbf {\{u_1,u_2,...,U_n\}}},其中n=BHWn=BHW,B表示batch size,H和W分别表示高和宽。k-means聚类的目标函数可以定义为:

minikmikuivk22 s.t. mik{0,1},kmik=1(3)\min \sum_{i} \sum_{k} m_{i k}\left\|\mathbf{u}_{i}-\mathbf{v}_{k}\right\|_{2}^{2} \quad \text { s.t. } \quad m_{i k} \in\{0,1\}, \quad \sum_{k} m_{i k}=1\tag 3

其中V={v1,v2,...,vK}\mathcal V=\{\mathbf{v_1,v_2,...,v_K}\}为聚类中心,mikm_{ik}表示ui\mathbf u_i是否被分配到vk\mathbf v_k着一簇。对于每一个cell ui\mathbf u_i,聚类后得到的assignment map mi=(mi1,mi2,...,mik)\mathbf m_i=(m_{i1},m_{i2},...,m_{ik}),可以作为part-based representation,为下一层卷积操作提供额外信息。

上面这种聚类方式存在两个弊端:

  1. CNNs通常采用SGD方式进行优化,前向传播过程中只有一个mini-batch样本参与进来,导致聚类中心无法囊括整个数据集的特征分布。
  2. 对于每个cell ui\mathbf u_i最终得到的map mi\mathbf m_i是离散的,能提供的信息有限。

因此,作者受其他工作的启发设计了一种mini-batch soft k-means聚类算法:

  • Initialization:随机初始化一个全局聚类中心V={v1,v2,...,vK}\mathcal V=\{\mathbf{v_1,v_2,...,v_K}\},定义counter s=(s1,s2,,sK)=0\mathbf{s}=\left(s_{1}, s_{2}, \ldots, s_{K}\right)=\mathbf{0}

  • Cluster Assignment:给定cell features U={u1,u2,,un}\mathcal{U}=\left\{\mathbf{u}_{1}, \mathbf{u}_{2}, \ldots, \mathbf{u}_{n}\right\},计算距离向量di=(di1,di2,diK)\mathbf{d}_{i}=\left(d_{i 1}, d_{i 2}, \ldots d_{i K}\right)表示ui\mathbf u_i和所有聚类中心之间的距离然后分别计算mikRm_{ik}\in\mathbb R和当前这一mini-batch下的聚类中心:

    dik=uivk22,mik=eβdikjeβdij,vk=imikuiimik(4)d_{i k}=\left\|\mathbf{u}_{i}-\mathbf{v}_{k}\right\|_{2}^{2}, \quad m_{i k}=\frac{e^{-\beta d_{i k}}}{\sum_{j} e^{-\beta d_{i j}}}, \quad \mathbf{v}_{k}^{\prime}=\frac{\sum_{i} m_{i k} \mathbf{u}_{i}}{\sum_{i} m_{i k}}\tag 4

  • Centroid Movement:执行一次count update δs=imi\delta\mathbf s=\sum_i\mathbf m_i,然后利用当前mini-batch下的聚类中心更新全局聚类中心:

    vk(1η)vk+ηvk,η=λsk+Δsk(5)\mathbf{v}_{k} \leftarrow(1-\eta) \mathbf{v}_{k}+\eta \mathbf{v}_{k}^{\prime}, \quad \eta=\frac{\lambda}{s_{k}+\Delta s_{k}}\tag 5

  • Counter Update:更新counter s\mathbf s,并reshaped distance向量{di}\{\mathbf d_i\}

    ss+Δs(6)\mathrm{s} \leftarrow \mathrm{s}+\Delta \mathrm{s}\tag 6

通过不断更新全局聚类中心,上述算法可以解决mini-batch下数据量有限的问题。需要注意的是,每个batch中的距离向量{di}\mathbf \{d_i\}会被reshape到一个distance map DRB×H×H×W×K\mathbf D\in\mathbb R^{B\times H\times H\times W\times K}。每个距离向量di\mathbf d_i可以被看做codebook学习中的一个learned cell code,反映了part representation。

2.2 Cell Relation And Spatial Configuration Modeling

本文作者采用自注意力机制,构建不同part-based表示之间的空间关系。首先按照“ End-to-end object detection with transformers”中的方式,给距离map D\mathbf D加上positional encoding PRB×H×W×C\mathbf P\in\mathbb R^{B\times H\times W\times C},然后直接展开得到FI\mathbf {F_I}。同时直接将D\mathbf D展开得到FI\mathbf {F_I'}

FI=SpatialFlatten(D+P)RB×HW×K,FI=SpatialFlatten(D)RB×HW×K(7)\mathbf {F_I}=\text{SpatialFlatten}(\mathbf D+\mathbf P)\in\mathbb R^{B\times HW\times K},\mathbf{F_I'}=\text{SpatialFlatten}(\mathbf D)\in\mathbb R^{B\times HW\times K}\tag 7

然后将FI\mathbf{F_I}FI\mathbf{F_I'}作为{Fq,Fk,Fv}RB×HW×K\left\{\mathbf{F}^{q}, \mathbf{F}^{k}, \mathbf{F}^{v}\right\} \subset \mathbb{R}^{B \times H W \times K},对应权重分别为{Wq,Wk,Wv}RK×K\left\{\mathbf{W}^{q}, \mathbf{W}^{k}, \mathbf{W}^{v}\right\} \subset \mathbb{R}^{K \times K},最终计输出FA\mathbf{F_A}

[Fq,Fk,Fv]=[FIWq,FIWk,FIWv](8){\left[\mathbf{F}^{q}, \mathbf{F}^{k}, \mathbf{F}^{v}\right]=\left[\mathbf{F}_{\mathbf{I}} \mathbf{W}^{q}, \mathbf{F}_{\mathbf{I}} \mathbf{W}^{k}, \mathbf{F}_{\mathrm{I}}^{\prime} \mathbf{W}^{v}\right]} \tag 8

FA=Att(Fq,Fk,Fv)=softmax(Fq(Fk)K)Fv(9)\mathbf{F}_{\mathrm{A}}=\operatorname{Att}\left(\mathbf{F}^{q}, \mathbf{F}^{k}, \mathbf{F}^{v}\right)=\operatorname{softmax}\left(\frac{\mathbf{F}^{q}\left(\mathbf{F}^{k}\right)^{\top}}{\sqrt{K}}\right) \mathbf{F}^{v}\tag 9

在实际应用中采用多头注意力机制,然后通过权重参数W\mathbf W整合所有头的输出:

FMHA = MultiHeadAtt (Fq,Fk,Fv)=[F1,,FJ]W,Fj=Att(Fjq,Fjk,Fjv)0(1)\mathbf{F}_{\text {MHA }}=\text { MultiHeadAtt }\left(\mathbf{F}^{q}, \mathbf{F}^{k}, \mathbf{F}^{v}\right)=\left[\mathbf{F}_{1}, \ldots, \mathbf{F}_{J}\right] \mathbf{W}, \quad \mathbf{F}_{j}=\operatorname{Att}\left(\mathbf{F}_{j}^{q}, \mathbf{F}_{j}^{k}, \mathbf{F}_{j}^{v}\right)\tag 10

3. 实验

一、对比

二、各个模块间消融

三、超参消融

四、可视化

可以看到,在early layers中的聚类反映的是简单的low-level形状,而在high layers中反映的更多的是复杂结构。上图第二行,为第四层学习到的两个聚类中心。

上图左边反映的是图片不同cell feature被分配的聚类中心,可以看到对于相同类别的一组照片,不同照片的相同不为分配的聚类中心是相似的。

上图右边是cell relation模型中注意力矩阵热图,可以看到采用多头注意力机制可以提取整个目标的特征,这对最终分类是很有帮助的。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信