论文阅读笔记《Low-Shot Learning with Imprinted Weights》

核心思想

  本文提出一种基于特征提取+线性分类器的小样本学习算法(imprinting)。首先作者提出一个观点,他说其实许多基于特征提取+线性分类器的小样本分类算法和基于度量学习(特征提取+最近邻分类器)的算法在本质上是一样的,如下式所示
论文阅读笔记《Low-Shot Learning with Imprinted Weights》
式中xx表示样本特征,p(x)p(x)表示样本xx对应的类别表征,我们最小化二者之间的距离(基于度量学习),就相当于最大化二者之间的内积(基于特征提取+线性分类器)。既然如此,作者认为就不需要再通过SGD的方式来训练线性分类器的权重了,我们直接用训练样本得到的特征向量来作为该类别对应的权重就可以了。在分类时只需要计算输入样本的特征向量与各个类别对应权重向量之间的内积,再利用softmax函数计算分类概率即可。算法的实现方式如下图所示
论文阅读笔记《Low-Shot Learning with Imprinted Weights》
  整个网络包含两个部分:特征提取器和分类器。输入图像xx经过深层卷积神经网络后得到对应的特征向量ϕ(x)\phi(x),然后再利用L2规范化层,将其统一到单位长度。在大规模数据集上做预训练的过程中,每个类别的样本对应的特征向量ϕ(x)\phi(x),都被作为该类别的权重向量wiw_i储存到权重矩阵WW中,如果一个类别有多个样本,那么就取特征向量的平均值作为该类别对应的权重向量。在小样本数据集做微调训练时,新的类别对应的特征向量被作为权重向量,继续添加到权重矩阵W+W_+中,作者称这个过程叫做Imprinting。
  测试时只需要计算测试样本对应的特征向量ϕ(x)\phi(x)和每个权重向量wiw_i之间的余弦相似性,因为余弦相似性被归一化到[1,1][-1, 1]之间了,所以如果类别种类多,直接做softmax,得到的概率会很低,无法得到独热向量。为了解决这个问题,作者增加了一个放缩系数ss,则分类概率的计算方式如下
论文阅读笔记《Low-Shot Learning with Imprinted Weights》

实现过程

网络结构

  特征提取网络采用InceptionV1结构

创新点

  • 提出一种Imprinting的小样本分类方法,利用样本的特征向量直接作为分类器中的权重向量
  • 增加了规范化层和放缩系数

算法评价

  第一次看这篇文章时,我认为这不就是基于外部记忆的方法吗?将每个类别的表征向量保存到矩阵中,分类时再去计算测试样本与各个表征向量之间的相似性。但其实本文中的权重矩阵WW和基于外部记忆算法中的记忆矩阵MM还是有一定区别的,记忆矩阵MM中向量的更新是按照一定的规则,根据样本的特征向量来更新的,而本文中的权重矩阵WW是通过SGD的方式来更新的,也就是说权重矩阵WW还是属于模型内部的一部分,而不是一个独立的外部模块。

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