论文阅读笔记《Low-shot visual object recognition》
核心思想
本文也是研究了小样本的分类问题,采用的方案与先前介绍的基于元学习的和基于度量学习的算法都不同,更接近于迁移学习,但普通的迁移学习算法,还是需要依赖大量的图像进行训练,本文则是通过小样本训练就能实现较好的分类效果。整个网络分成特征提取器和分类器%W%两部分,数据集也分成两个部分,用于初始训练的和用于小样本学习的。首先,在上对整个网络进行初始训练,完成训练后,锁定特征提取器的权重参数,然后在和共同组成的数据集上再对分类器进行微调训练。到这里与常见的迁移学习并没有什么区别,但他是如何实现小样本学习的呢?作者提出一种想法,假设初始训练得到的分类器为,微调训练后得到的分类器为,作者希望应该与很相似,这样的话在上最优解也可以是上的最优解。换句话说作者希望是全局的最优解。那么如何找到全局最优解呢?作者指出对于分类器其损失函数是一个凸函数,因此在最优解处梯度应该为0,如果在处的梯度很大,那么该点距离最优解还很远。受这一思路的启发作者提出一种损失函数计算方式,称为平方梯度幅度损失(Squared gradient magnitude loss , SGM),计算方式如下
其中,第一项就是普通的多分类交叉熵损失函数,第二项则是一个正则化项,限制了在上的梯度值。经过简单的数学变换后可得
其中
权重越大,说明该样例误分类的可能越大,权重接近于0时,则表示分类是完美的。如果没有这个权重系数,那么就是一个单纯的L2正则化了。
实现过程
网络结构
作者也说明对网络没有特定要求,实验中采用了一个简化版的10层ResNet网络作为特征提取器,用逻辑回归(logistic regression)做分类器。
损失函数
如上文所述的SGM
训练策略
将1000个类别的ImageNet数据集分成包含389个类别的和611个类别的,先在上训练90个epochs,再在和采样,对分类器做小样本的训练。为了解决类别不平衡的问题(中又上千个样例,而仅有几个样例),作者采用对进行超采样的方式(先在所有数据集上进行平均采样,再在上进行第二次平均采样),并且对分类器的权重进行L2正则化。
创新点
- 设计了SGM损失函数,通过引入正则化的方式,实现了小样本分类任务
算法评价
作者将本文的算法与采用其他损失函数和正则化方式的算法进行了比较,试验结果表明,在样本数量较少的情况下(1-shot或者5-shot),该算法与L2正则化结果比较接近,但明显优于其他的算法,但当样本数量逐步增加后(20-shot)算法之间的差异就不再明显了。本文还是采用了相对传统的迁移学习思路,只不过通过正则化的方式,引导网络训练得到最优解。尽管作者反复强调,该算法只需要一半数量的训练集,就能达到其它算法同样的效果。但无论是从实验结果还是从算法思路上来看,都没有明显的创新,而且我认为这一思路不是解决小样本学习的根本途径。
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。