论文阅读笔记《TapNet: Neural Network Augmented with Task-Adaptive Projection for Few-Shot Learning》
核心思想
本文提出一种基于度量学习的小样本学习算法(TapNet),其特点是设计了一个与任务相关的分类空间,在该空间内进行距离度量,而且每个类别的参考向量是通过学习更新得到的,而不是根据训练样本的特征向量计算得到的,这与PN和MN算法有明显的不同。整个算法的处理过程如下图所示。
与所有的采用Episode训练方式的算法一样,训练集包含支持集和查询集两部分。整个网络分成三个部分:特征提取网络,每个类别参考向量的集合和映射矩阵,用于将特征向量映射到一个与任务相关的分类空间。其中是一个由参考向量构成的矩阵,每一个行向量对应一个类别。输入图像经过特征提取网络得到特征向量,该类别对应的参考向量为,与其他的度量学习算法直接计算与之间距离的方式不同,本文首先利用一个映射矩阵,将其投影到一个与任务相关的分类空间中,得到和,再度量二者之间的欧氏距离,并利用softmax函数将其转化为分类概率,如下式:
然后利用分类损失对特征提取网络和参考向量的集合进行更新,将更新后的和用于下一个Episode的训练中。测试时,训练得到的和是固定的,但映射矩阵会根据任务进行自适应调整,然后根据距离度量结果进行类别预测。
最后介绍一下映射矩阵是怎样构建的,该矩阵的目的是希望将特征向量,和参考向量映射到一个分类空间中,而且在这个空间里特征向量与对应类别的参考向量之间的距离尽可能的小,而与其他类别的参考向量之间的距离尽可能的大。作者利用一个简单的不需要训练的线性映射就解决了该问题,首先在考虑到其他类别参考向量的影响后,得到一个修正后的类别对应的参考向量,计算过程如下
然后,用表示类别的样本特征向量的平均值,就可以计算与的偏差值,计算过程如下
那么映射矩阵的目标就是让将映射后的偏差值为0,即。换句话说就是偏差的一个线性零解(linear nulling)
式中表示的列数,求解上述问题的一个方法就是计算的奇异值分解:
式中是一个对角矩阵,且除了对角线上的前个值之外其他的值均为0,因此只要取右奇异值矩阵的从第列到第列共个列向量,其构成的矩阵就是所求。并且只要偏差的长度,映射矩阵就一定存在。
实现过程
网络结构
特征提取网络采用ResNet-12结构。
损失函数
损失是根据距离度量结果计算的,计算方法如下
训练策略
整个网络的训练策略如下图所示
创新点
- 利用映射矩阵将特征向量和参考向量映射到一个与任务相关的分类空间中,其能够根据任务中包含的样本类别进行自适应的调整、
- 参考向量利用分类损失进行更新,而与输入样本无直接关系
算法评价
本文算是对度量学习的进一步探索吧,与PN,MN相比他的变化主要有两点,第一不是直接在特征空间中进行距离度量,而是设计了一个与任务相关的分类空间,三种算法的对比如下
其次,每个类别对应的参考向量,并不是PN算法中通过求平均值的方法进行计算,而是由一个初始值通过逐步迭代更新的方式来计算,文中并没有介绍初始值选择的方式,可能是一个随机初始化的方式。此外作者也在文中提到,本文的方法其实与基于外部记忆的MANN算法有些相似,本文中映射矩阵其实就扮演了MANN中外部记忆矩阵的角色。
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。