2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017-2019 NIPS2017-2019
《Low-Shot Learning with Imprinted Weights》论文精读
keras实现《Low-Shot Learning with Imprinted Weights》
摘要:人类的视觉可以在见过几个训练样本之后,立刻识别出新的类别。我们描述了如何从少量样本的训练中通过直接设置最后一层的权重为卷积神经网络分类器增加一个类似的能力。我们把这个过程叫做权值imprinting,就是通过对训练样本的激活值做一个合适的缩放,直接为新的类别设置合适的权重。Imprinting的操作为梯度下降训练提供了一个重要的补充,因为他可以提供一个直接的好的分类能力以及一个用于未来finetune的初始化值。我们展示了imprinting是如何和基于代理的嵌入关联起来的。然而,这个与为每个新的类别学习单个的imprinting权值向量是不同的,和典型的嵌入方法基于最近邻距离来训练样本不同的。我们的实验表明,使用imprinting权值的瓶颈要比使用最近邻实例的嵌入的方法表现要好。
1. 介绍
深度学习虽然通过几百万样本的训练时候,能够在一些大型的数据集上超越人类的表现,但是对小样本的扩展能力却有限,这就是小样本学习的问题。嵌入方法是一个天然适合的方法,新的类别可以通过将样本送入到CNN网络中,然后通过最近邻的方法得到结果。这个在语义的嵌入表示中已经实现了,倒数第二层的激活值可以看做是一个嵌入向量,这个和我们的这篇文章有一定的关系。CNN是获取好的性能的一个推荐的方法,而softmax的损失的训练要比嵌入的方法如triplet的方法要快。
在本文中,我们尝试将CNN分类器和嵌入方法的优点结合起来来处理小样本的学习问题,受到将嵌入当做是物体类别的代理的启发,我们认为在CNN分类器中,嵌入向量可以有效的和最后一层的权值相比。我们的方法,叫做imprinting,是将训练时样本得到的激活值进行合适的缩放,将其当做新的类别的权值向量,而其他的权值向量保持不变。这个还可以扩展成使用多个样本的激活值向量的平均值作为权值。通过我们的实验,我们发现这种方法要比最近邻的方法要更好。
我们考虑这样一个小样本学习的场景,我们有一个在大量样本上训练得到的初始的分类器,需要到新的类别上使用,每个类别只有很少的几张图片。目标是,希望能在这个组合起来的数据集上表现的很好。这个设置和人类的持续学习新的概念的识别场景一样。
已有的一些方法无法使用在一些有限资源的场景中,如移动设备。因为重新训练增加了类别的模型需要一段比较长的时间。而语义的嵌入方法能够立即记住新的样本,并且使用它们进行识别,不需要重新训练。但是,语义嵌入难以学习,因为需要计算量很大的难样本挖掘,在测试的时候也需要存储所有的嵌入向量进行最近邻的比较。
我们表明了imprinted权值可以在小样本的情况下通过新的样本进行即时的学习。更进一步,既然imprinting之后的模型的参数形式和之前是一样的,以后有了更多的样本还可以进行finetune。实验表明,imprinting的方法比随机初始化的方法提供一个更好的初始化值,而且最后finetune之后,也能得到更好的结果。
2. 相关的工作
度量学习 度量学习在识别新的人脸中应用很成功。主要思想是,对人脸图像进行映射,在映射后的空间中,相同的人的图像距离很近,而不同的人的图像距离很远。映射学习好之后,在测试阶段,使用最近邻的方法进行检索,识别训练中没有的人脸类别。
对比损失,最小化相同类别之间的样本的距离,同时将不同类别之间距离拉大。相比于最小化绝对距离,最近的方法集中在相对距离上。FaceNet优化triplet的损失,使用了在线难样本挖掘的方法来组成minibatch。Magnet损失通过对样本进行k-means聚类,通过类的中心来表达该类别,从而优化不同类别的分布。Lifted structure损失在一个minibatch中组成所有的成对样本的关系来代替triplet。N-pair损失需要每个batch中的样本来自于N个不同的类别。所有的这些方法都需要一些在线的或者离线的batch的生成过程。
Proxy-NCA损失通过将可训练的代理赋值给每个类别从而不需要batch的生成,加快了收敛。NormalFace也提出了相似的想法,使用的是特征向量的归一化。嵌入向量可以用来泛化表示没有见过的类别,但是在测试的时候需要存储所有的需要进行比较的向量。在我们的工作中,我们保留了原来的CNN的参数形式,表明了嵌入向量可以用来imprinting最后一层的权值。从结果看,我们的方法具有所有的CNN方法训练时的优点,在测试的时候,也不需要存储所有的嵌入向量。
单样本和少样本学习 单样本或者小样本学习指的是使用只有1个或很少的几个样本进行训练。连体网络通过两个网络提取特征,对特征进行相似度的得分计算。匹配学习了一个神经网络,可以将一个没有见过的类别映射到一个小的支持集中的图片,得到他的类别。原型网络使用几个新的样本的嵌入的均值作为原型。这些方法将小样本学习变成使用一个支持数据集对几个没有见过的类别进行分类。在测试的时候,测试图片和支持数据集必须同时提供。但是,这个方式和人类的学习方式是不一样的,人类是当遇到新的样本的时候不断的学习新的类别。相比之下,我们考虑另外的设定,我们聚焦于一个整体的表现,包括一个大量样本的数据集和一个新的类别的少样本的数据集。Hariharan和Girshick训练了一个多层的感知机,通过和已有的样本进行类比从单个样本中生成了额外的特征向量。他们的方法保留了最后的线性分类层,我们的方法可以直接的在新的类别上得到提升而不需要重新训练。还有和我们的工作类似的工作,从激活值中训练预测的参数。但是,我们的方法直接从激活值imprints权重,这个可以修改结构加入一个归一化层。
————————————————
版权声明:本文为CSDN博主「ronghuaiyang」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011984148/article/details/99439523