天天看点

论文阅读笔记《Dense Classification and Implanting for Few-Shot Learning》

小样本学习&元学习经典论文整理||持续更新

核心思想

  本文是对基于度量学习的小样本学习算法进行改进。常见的度量学习算法通常利用一个嵌入式网络对图像进行特征提取,然后利用一个线性分类器进行分类。在训练过程中得到的线性分类器权重可以看作对应每个类别的权值(class weights),在测试时,就比较查询图像对应的特征值与每个类别权值之间的相似性,并以此进行分类预测。二维图像经过特征提取后得到的特征信息是高维的张量,因此通常需要压缩维度,以便于计算相似性。常见的压缩维度的方式有两种:压平(Flattening)或者池化(Pooling).

论文阅读笔记《Dense Classification and Implanting for Few-Shot Learning》

  图a所示的就是压平操作,就是将原本为 h × w × d h\times w\times d h×w×d维的张量,拉伸为 r × d r\times d r×d维的张量,其中 r = h w r=hw r=hw。这一方法具有较高的区分能力,但是不具备空间不变性。图b所示的是池化操作,利用全局平均池化将每个通道的特征图都压缩为一个值,得到一个长度为 d d d的特征向量 a a a。这一方式能够显著降低维度,并且具有空间不变性,但区分能力较差。本文提出一种称之为稠密分类(Dense classificatio)的方法,对于提取到的特征图 ϕ ( x ) \phi(x) ϕ(x)不进行维度压缩,而是对空间中的每一点对应的特征向量进行分类预测。具体而言,假设特征提取网络最后一层输出了维度为 h × w × d h\times w\times d h×w×d的张量 ϕ ( x ) \phi(x) ϕ(x),那可以将其拆分成 r = h w r=hw r=hw个长度为 d d d的特征向量 ϕ ( k ) ( x ) \phi ^{(k)}(x) ϕ(k)(x),然后分别计算类别权重与 ϕ ( k ) ( x ) \phi ^{(k)}(x) ϕ(k)(x)之间的距离,对每个空间上的点都进行类别预测,如下图所示。

论文阅读笔记《Dense Classification and Implanting for Few-Shot Learning》

  在元测试阶段,对于新类别的样本,通常是对已训练好的特征提取网络 ϕ θ \phi _{\theta} ϕθ​进行微调训练,以满足新类别样本特征表达的需要。在低层级的网络中特征信息的通用性较强,对于不同类别的样本都能提取到有用的信息,而随着网络的加深,在高层级的网络中,特征信息就具备较强的区分度,而不具备通用性了。因此本文提出一种称为“神经移植”(Neural Implants)的方法,针对高层级的特征提取网络进行改进,改进的结构如下图所示

论文阅读笔记《Dense Classification and Implanting for Few-Shot Learning》

  如图所示,低层级的特征提取网络保持不变,在高层级的卷积层上增加一个新的分支,与原有的卷积层构成一个平行的结构。冻结原本高层级网络的权重,使其不再更新,以保留对于原有类别的特征提取能力,然后对于新类别的样本,其特征信息会分别经过两个分支网络,并且将原本高层级网络提取的特征图,与新添加的网络提取的特征图级联起来,作为新添加网络分支下一层的输入。最后得到新类别样本对应的特征信息 ϕ θ , θ ′ ′ ( x ) \phi '_{\theta ,\theta'}(x) ϕθ,θ′′​(x)。这一方法既消除了使用深层网络出现过拟合的问题,又提高了特征提取网络对于新类别样本的表征能力。

实现过程

网络结构

  嵌入式特征提取网络采用ResNet-12

损失函数

  如上文所述,计算损失要对空间中的每个点分别计算再求和,如下式

论文阅读笔记《Dense Classification and Implanting for Few-Shot Learning》

其中

论文阅读笔记《Dense Classification and Implanting for Few-Shot Learning》
论文阅读笔记《Dense Classification and Implanting for Few-Shot Learning》

s τ s_{\tau} sτ​表示scaled cosine similarity,计算过程如下

论文阅读笔记《Dense Classification and Implanting for Few-Shot Learning》

其中, x ^ = x / ∥ x ∥ \hat{x}=x/\left \| x\right \| x^=x/∥x∥, ⟨ , ⟩ \left \langle, \right \rangle ⟨,⟩表示Frobenius内积, τ \tau τ表示放缩系数。

训练策略

  在元测试过程中,每次只选择一个样本作为查询样本,其余样本都作为支持集,类似《Few-Shot Learning with Localization in Realistic Settings》提出的留一交叉验证法

创新点

  • 提出了稠密分类的方法,对空间中的每个点都进行分类预测,并计算损失,提高了分类的细粒度
  • 提出了神经移植的方法,保留已训练好的网络参数,增加新的网络分支用于处理新的类别样本

算法评价

  作者针对原有的小样本学习算法提出两点改进:稠密分类与神经移植。首先要说明的是,这两点改进都是针对元测试阶段,也就是网络已经在一个数据集上训练好了,目前要针对新的类别,且每个类别仅包含少量样本的情况进行微调训练。稠密分类的思想与DN4算法中提到的局部描述子的概念非常相似,都是通过增加分类的细粒度,不在图片级别上进行类别预测,而在像素(或超像素)级别上进行类别预测,如果细粒度进一步提高到对原图中每个像素进行类别预测,那么就成为语义分割任务了。而神经移植的思想有点类似于迁移学习的一些方法,只不过是在保留原有网络的基础上,对网络结构进行了“拓宽”,但是新增加网络分支的参数初始化怎么处理呢?如果是从随机状态开始训练,少量的数据集是否足够呢?

如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。

论文阅读笔记《Dense Classification and Implanting for Few-Shot Learning》

继续阅读