Adapted Deep Embeddings
文章提出神经网络迁移学习的三条主线:权重迁移。深度度量学习。小样本学习。比较了三条主线的三个 SOTA 方案,探索了一种混合的自适应嵌入方法,用目标域的数据来 fine tune 嵌入模块。证明第2种方法也即深度度量学习方法的效果要好得多,可以作为知识域之间迁移和模型复用的起点。发现嵌入模块的损失函数中,histogram loss 具有最强的鲁棒性。
文章主要面对 k-shot 归纳迁移学习中的分类问题,按照迁移学习的思路有三种方法:深度度量学习,利用源域的数据训练一个可以提取特征的非线性嵌入模块,在该嵌入中同一类的实例可以很好地分在一起,不同类的实例彼此分开,同时 k 的大小并不能影响该类方法的性能。小样本学习,通常这里的 k 小于20,也大多都是采用嵌入的方法,例如元学习。权重迁移,也就是通常意义上的迁移学习,在源域进行预训练,在拿到目标域微调最后的分类层,这里的 k 通常在100和1000之间。尽管适用的 k 的范围不同,但基本都是采用了同一架构,基本的不同点在于损失函数和以及是否在源域进行 fine tune。
文章通过改变目标域每一类中实例的个数 k 和类的个数 n,对三个 SOTA 方案进行了实验。同时结合了三种 SOTA ,提出了一种混合方法。实验过程中得出了三个结论:
- 权重迁移对 k-shot 归纳迁移学习效果最差。
- 在现有的使用了嵌入模块的小样本学习和深度度量学习的方法中,histogram loss 作为损失函数对 k-shot 归纳迁移学习有最大的提升。这个损失函数来自深度度量学习,之前从来没有被拿来和小样本学习的损失函数做过比较。
- 提出了一个名为 adapted embeddings 模块的混合方法,将深度嵌入的损失函数与目标域的权值自适应相结合,超越了此前所有在 k-shot 归纳迁移学习任务上的小样本学习和深度度量学习方法。对 SOTA 方案平均降低了34%(!!!)的错误率,是具有开创性的方法。
三种 SOTA 方法以及 adapted embeddings
第一种,深度度量学习。一个 embedding(嵌入)是一种通过嵌入空间的度量属性获得改类结构的分布式表征。在深度度量学习中,训练一个可以将输入映射到嵌入空间的神经网络。针对这一方法提出了很多种嵌入函数,都是试图让同一类的实例在样本空间中尽可能的近,而不同类的尽量远离。由于在嵌入中类是远离的,度量学习通过将未标记实例映射到嵌入空间并考虑其与标记实例的接近程度来对其进行分类。采用 histogram loss(HISTLOSS)在本方法中,因为该方法是效果好并且只有一个超参数。这个损失函数包含两个相似性度量,分别为:
f(..) 代表的输入 i 的神经网络嵌入,s(..,..) 是特征级相似度度量(例如余弦相似度)。可以用直方图来估计 positive pairs 和 negative pairs 的相似性分布,如下图:
将直方图损失定义为 negative pairs 的相似度大于 positive pairs 的相似度的反向概率:
第二种,小样本学习。元学习是小样本的一种方法,它用一系列小的分类任务来训练网络,从而提高后续任务的学习效率。这里采用原型网络 prototypical network(PROTONET),是当时的 SOTA 方案。原型网络对每一类的都找到一个原型点,来表征这一类别:
对于每个 query,计算其与原型点的距离来计算其属于的类别:
第三种,权重迁移。有时预训练和迁移会同时进行,《How transferable are features in deep neural networks?》这篇文章中系统且详尽地介绍了权重迁移,用控制变量法逐层迁移并进行实验,迁移的目的是最大化条件似然(?):
得到的结论是迁移第一层到倒数第二层,并进行微调的效果最佳,作为 WEIGHTADAPT 方法。
第四种,也就是本文提出的方法 adapted embeddings。前面提到的两种 histogram loss 和 prototypical network,都是仅在源域调整参数,而目标域的 support 仅用来和 query 进行对照。而 adapted embeddings 则既在源域也在目标域调整模型参数,具体来说结合了嵌入模块和目标域利用 support set 进行参数调整。这个方法只被使用在 matching nets 过,但是效果不佳,结尾有一段分析其效果不好的原因。
比较实验
比较了 WEIGHTADAPT、HISTLOSS、PROTONET、ADAPTHISTLOSS、ADAPTPROTONET 和一个只在目标域训练的 BASELINE 在不同的 k 和 n 下,在 MNIST(手写字符,不关注),Isolet(Isolet包括字母表26个字母的发音数据,不关注),tinyImageNet(Imagenet的子集)和 Omniglot(手写字符,不关注)四个数据集下的精度。
此前的深度度量和小样本学习都是源域的类别远多于目标域的类别,而权重迁移的类别数很多相对较大并且源域和目标域的类别数量相同。因为复杂度的原因,在这里假设源域和目标域的类别数相同。类别数的多少同样是一个 trade-off,多的话容易得到好的训练结果,但测试变得困难,因此类别数的多少这个选择非常重要。并且采用了与之前深度度量和小样本学习不同的方法来评估模型的性能,之前的评估方法是采用单一的模型在源域训练、在目标域评估,这只能获得目标域的排名。这里将每一个模型复制好几个副本,每一个副本给予不同的样本类别数和 k,每次从源域和目标域的并集内取样(如下图,相当于从目标域分一点数据出来给源域,给模型做微调?再拆分的原因是原型网络 PROTONET 需要而
再拆分的原因是原型网络 ADAPTPROTONET 需要)。
将每一个模型复制十次,每个复制的模型包含对应抽样的数据,拿来比较的副本包含的抽样数据都是一样的。源域的验证集用来停止训练,为了适应目标域,目标域的验证集继续训练直到性能达到渐近线。由于目标域包含的 k 较小,验证集将具有较高的方差,并且权值从源域的转移会产生强烈的归纳偏差。
对每一个再分的数据集上的模型都使用相同的底层网络架构,除了 BASELINE 和 WEIGHTADAPT 含有另外的没有迁移权重的分类器,以及 HISTLOSS 和 ADAPTHISTLOSS 的嵌入采用 L2 正则化,含有200个直方图列。MNIST、Omniglot和 tinyImageNet 的嵌入维度为128维,而 Isolet 是64维,所有模型都采用 Adam 优化。
实验结果
在 MNIST 上的结果:
在 Isolet 上的结果:
在 Omniglot 上的结果:
在 tinyImageNet 上的结果:
该数据集是 ImageNet 的子集,包含200个类每类550张RGB三通道图片,图片大小为64*64。图中展示了5、10、50类物体的分类性能。WEIGHTADAPT 和 BASELINE 这两种方法的精度都不高,因为 k 值太小。在 k 大于1的情况下 ADAPTPROTONET 比 PROTONET 精度高,ADAPTHISTLOSS 比 HISTLOSS 精度高,k 为1时两种方法等价,因为测试集没有图片可以用来 adapt。ADAPTHISTLOSS 比 ADAPTPROTONET 精度高。PROTONET 在 k 大于50时精度很低,因为这是一个设计被用在 k 小于50情况下的模型,但 ADAPTPROTONET 在 k 大于50时的情况要比前者好 。不论 k 取多少,WEIGHTADAPT 的精度都比本文提出的 ADAPTHISTLOSS 和 ADAPTPROTONET 要低。ADAPTHISTLOSS 精度最高。
还有一段与 matching networks 的比较,等读完那篇论文回来看:
To our knowledge, Vinyals et al. [33] is the only previous work to explore adapted embedding methods, in the context of matching networks. Few details were provided about the effort and the results were ambiguous. Several possibilities might explain why we see consistent and impressive benefits of adaptation but Vinyals et al. did not. First, some algorithms appear to benefit more than others: for k ∈ {5, 10}, adapting HISTLOSS yields a greater benefit than adapting PROTONET. It’s possible that matching nets overfit when adapting, whereas HISTLOSS, which has a natural stopping criterion, does not. Second, the evaluation of matching nets focused on k = 1 and k = 5. For k = 1, adaptation provides no information about intraclass structure; it can only separate classes. (And for the embedding losses we studied, we cannot do that with k = 1.)
结论
构造可以被重复利用的模型,可以使用深度嵌入。结果表明,训练在嵌入损失的模型比训练在分类损失的模型要精确的多,并且会加快训练速度。对于 WEIGHTADAPT(砍掉最后的分类头,而将倒数第二层作为嵌入向量)模型做嵌入没有取得与 PROTONET 和 HISTLOSS 同样的精度的原因,文章的观点是:分类网络的隐藏层会摒弃类别间的联系,这对新类映射到嵌入网络是至关重要的,因此输出为 one-hot 的分类网络在迁移到目标域的表征能力较差。
权重迁移、小样本学习和深度度量学习都是 k-shot 归纳迁移学习的变体,但这三条研究线大多互不联系,文章认为是由于每种方法对 k 都有各自的适应的值,但是本文提出的方法 ADAPTHISTLOSS 在任意的类别数和k组合中精度都最高。
文章甚至希望通过本文的研究将三种方法统一起来。