查看原文
其他

【源头活水】Meta-Transfer Learning for Few-Shot Learning



“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—Cauchy-Schwarz

地址:https://zhuanlan.zhihu.com/p/304301328

论文地址:https://arxiv.org/abs/1812.0239
论文解读:Meta Transfer Learning for Few Shot Learning(这篇写的很清楚)


01

摘要
元学习已经被few-shot learning 大量运用,key idea 是利用大量相似的few-shot 任务从而获得一个base-learner which 可以被应用到只有少量监督样本的任务中。在只有少量样本的情况下DNN容易过拟合,因此元学习通常使用SNNs(Shallow neural networks),同时effectiveness 受到限制。本文提出了一个新的算法MTL(meta-transfer learning),利用deep NN来做few-shot learning 任务。具体来说,meta 是指训练多个任务,然后学习 每个任务的DNN权重的scaling 和 shifting functions来实现transfer(网络的初始化方式)。另外,本文引入了hard task(HT)meta-batch 。本文实验在minniImageNet 和 Fewshot - CIFAR100(5-class, 1-shot) and (5-class, 5-shot) 的识别任务,实验结果证明,两个contribution都有利于快速收敛并可提高精度。

02

本文主要贡献
1. 提出了新的MTL算法,通过meta-transfer 学习大规模预训练的DNN参数来解决few-shot learning的问题
2. 本文提出了一个新的HT meta-batch 学习策略,从而加速网络的收敛速度和鲁棒性
3. 在miniImageNet 和 Fewshot-CIFAR100 (FC100)上进行大规模训练,验证效果。
注意:这篇文章里 meta-learner 指的是SS,base-learner 指的是classifier,另外还包含后期固定的feature extractor。

03

关于元学习【机器之心】
接:https://www.jiqizhixin.com/articles

训练元学习器需要一个学习器和一个训练器。学习器(模型)的目标是快速利用少量数据学习新任务。因此,学习器有时也被称为快速学习器(fast learner)。「任务」在这里是指任何监督学习问题,比如预测少量样本的类别。这个学习器可以用元学习器训练,从而能从大量其他类型的任务中学习。学习过程主要即元学习器不断向学习器展示成百上千种任务,最终学习器就会学得众多任务的知识。学习后,需要经过两个阶段:第一个阶段关注从每个任务中快速获取知识;在第二阶段(学习器)缓慢将信息从所有任务中取出并消化。
我们用一个实例来说明一下。例如,我们的目标是训练一个将图片分类到 4 个类别(猫、熊、鱼和鸟)的分类器,但是每个类别只有少量的带标签数据。为了实现这一目标,我们首先定义一个学习器,这个学习器的目标即预测二分类问题,且每个类别只有三个样本。我们然后定义一个元学习器,元学习器的工作是向学习器展示任意两个类别的样本组合,且每个类别只有三个样本。
和一般的深度学习将大量标注数据分为不同的 Batch 不一样,元学习的训练数据表现为集合(set)的形式。首先,我们需要一组样本,或者被称为「支持集」(support set),它由一些属于样本子集的图片构成。例如,在我们的例子中,支持集应该由三张猫和三张熊的图片组成。我们同时需要指定被分类图片,它们组成了一个「目标集」(target set)。在我们的例子中,目标集应该是一些猫或者熊的图片。支持集和目标集共同构成了一个训练 episode。元学习器学习各种各样的训练集,并将它们一个训练集一个训练集的展示给学习器。学习器的工作则是尝试将每一个训练集中的目标集图片正确的分类。
元学习的训练集示例。在例子中,需要对猫、熊、鱼和鸟一共 4 类图片进行分类,但每次构建训练集时,只使用这些分类的子集,并将训练集分为支持集和目标集。第一个训练集的支持集是猫和鱼的图片(3 张),目标集是鱼和猫各 1 张图片,它们都需要进行分类。第二个训练集中,使用猫和熊的图片作为支持集,目标集同样是猫和熊的图片。多种类的训练集组合(猫+鱼,猫+熊,熊+鱼)不仅可以使快速学习器学习每一个子集的分类,还可以使它抽取类别之间的共性和特性。
不向快速学习器一次性展示所有类别的原因是因为,当我们在少数几个类别中只展示一些图片时,我们希望模型能够正确的预测结果(在推断时)。另外,并不是所有的类别都会被用于训练集。在我们的例子中,我们可能只使用三类,并希望模型能够准确预测最后一个类别。元学习器可以实现这一点,因为它可以训练并泛化到其他数据集上。每次只给快速学习器展示一个训练集的数据,它只能获得所有类别中一个小子集。元学习器通过多次循环训练集,每次给快速学习器一个不同的子集。最后,快速学习器不仅可以快速给每个小子集分类,它也可以从所有类别中抽取他们的共性和各自的特性。


04

Introduction
人们希望可以减少训练所需的数据量。人类可以根据以往经验迅速掌握并运用新的概念,但是这对机器学习来说是很难的。在cifar-100数据集上,全监督学习可以实现75.7%的准确率,而1-shot learning 仅仅可以实现40.1%的准确率。
Few-shot learning methods 可以被简单的分类为两部分,数据扩充和基于任务的meta-learning。数据扩充是指增加可用数据的数量,并且对FSL 是useful。第一种是数据生成的方式,如利用高斯噪声,但是这种方式在few-shot上训练时表现不佳。另一种方法是合并来自不同任务的数据,但是由于不同任务之间的数据是有差异的,这种方法也无效。
另一种方式是meta-learning,元学习会积累从不同任务获得的学习经验,但base-learning 只针对于学习单一任务的数据分布。MAML是一个经典算法(论文解读 :https://zhuanlan.zhihu.com/p/66926599)
本文提出了meta-transfer learning(MTL)(可以整合迁移学习和元学习的优点)仅用少量数据就能快速适应新task的目的。为了达到这一目的,训练模型需要最大化新task的loss function的参数敏感度(maximizing the sensitivity of the loss functions of new tasks with respect to the parameters),当敏感度提高时,极小的参数(参数量)变化也可以对模型带来较大的改进。本文提出的算法可以适用于多个领域,包括少样本的回归、图像分类,以及增强学习,并且使用更少的参数量达到了当时(2017年)最先进的专注于少样本分类领域的网络的准确率。
相对于前人通过学习update function或learning rule的训练方法,MAML并不需要通过扩充模型的参数量或是限制模型结构(如限定RNN网络)等手段来提高准确率。MAML的设想是其可以被轻松地使用在全连接网络、卷积网络以及递归神经网络中,并且可以使用多种loss函数,在本文中,loss会根据解决问题的不同(回归、分类、增强学习)而改变。
limitation:
1. 需要大量的相似任务来进行meta-training
2. 为了避免over fitting,每一个task都是用shallow neural network进行训练的,因此不能用更powerful的网络来学习。(在mini-ImageNet上面,MAML是用一个4 CONV 的shallow CNN 来进行学习的)
contribution 1
本文提出了meta-transfer learning(MTL)(可以整合迁移学习和元学习的优点)
其中,transfer 意味着在大规模数据集上训练的DNN权重通过scaling 和shifting操作 转移到new task 上,meta 指的是这些操作可以看成是few-shot learning 上的超参数。大规模训练的DNN权值提供了良好的初始化,可以让meta-learning在较少的任务下迅速收敛。
contribution 2
结合 Curriculum learning 和 hard negative mining 提出了hard task (HT) meta-batch 。在传统的meta-learning学习任务里面,meta-batch 是随机抽取生成的。但是本文提出的HT meta-batch 算法会根据过去的失败任务,重新采样那些准确率比较低的sample,从而加强模型鲁棒性。
Curriculum learning: https://zhuanlan.zhihu.com/p/114825029
主张让模型先从容易的样本开始学习,并逐渐进阶到复杂的样本和知识。
hard negative mining: https://zhuanlan.zhihu.com/p/57440670
多找一些hard negative【那些容易被看成是正样本的样本】加入负样本集,进行训练,这样会比easy negative组成的负样本集效果更好。

05

Related Rork
Few-shot learning
Metric learning methods: 学习一个相似空间(例如matching net , protonets 等)
Memory network methods: 会储存学习到的经验然后应用到unseen tasks 上去
Gradient descent based methods:有一个meta-learner 然后适应特定的base-learner【给定一个初始化的参数,使得网络通过很少的样本微调就可以很快的梯度下降到最优点】
Transfer learning 迁移学习
迁移学习的思路是在大规模数据集训练的基础之上,通过微调的方式转移到新的任务。另一种流行的transfer 方式在预训练网络的基础之上再添加high-level 的functions。通过scaling and Shifting的方式进行迁移。在文章【Film: Visual reasoning with a general conditioning layer】中应用过。
这个scaling and Shifting(SS)的迁移方式可以参考https://www.jianshu.com/p/c6cc0f993434论文解读里的图。
Curriculum learning & Hard sample mining
Curriculum learning 需要对样本的难易程度进行评估(额外的网络),但是本文的MTL算法不需要任何附加的网络。Hard sample mining通过添加更加混乱的数据进行训练从而使得网络有更高的鲁棒性。


06

Preliminary
meta包含两个步骤,meta-train和meta-test,对于meta-training 和 meta-test phase的具体讲解。
meta-train 可以分为两个阶段,第一个阶段是base-learning,就是利用损失函数优化base-learner。阶段2是再测试数据集上的前馈传播,这部分的loss值会用来优化meta-learner的参数。
meta-test 将 train阶段训练的模型放到一个没有见过的任务中,经过少量样本的学习,用在unseen样本上的实验结果作为最终的测试指标。


07

Methodology
1. 在miniImageNet( 64-class, 600-shot)上训练DNN网络,然后固定低层次的网络作为特征提取器
2. 在元学习阶段,MTL通过scaling 和shifting的方式调整特征提取器的参数,从而使其可以快速适应到few-shot的任务中。在这个过程中,我们用了HT训练策略。
3. 进行测试阶段

DNN训练过程详解

这个阶段类似于经典的预训练过程,我们不考虑从其他数据集添加数据,并且是使用现阶段few-shot learning的数据集进行预训练,以miniImagenet为例,训练集包含64个类,每个类包含600个样本,则预训练一个64类的分类器。
在预训练阶段就是梯度下降的方式:
更新公式为:
Loss可以定义为:

注意,其中的 Θ 是指 特征提取器的参数,θ 是指分类器的参数
训练结束之后,特征提取部分的参数会被冻结,而分类器部分会被砍掉重新训练,因为针对的分类任务不同。

Meta-transfer learning (MTL)

从图中可以看出本文训练方式和迁移学习微调(FT)的区别,FT更新所有的参数,而SS时feature extraction 的参数不变。
SS operation ,给定一个task, task 里面训练数据的loss会被用来优化当前base-learner(其实是分类器):
注意θ是针对于当前任务的小分类器(例如五个类别分类器),θ‘ 是只用在current task上的参数。
SS参数的更新公式:
在这个步骤中,θ的更新公式为:

注意公式里的θ' 是base-learning 在task训练集上的最后一个epoch的参数。
以下是对SS的描述:
给定训练好的feature extractor(训练好的Θ),假设第l层含有K个神经元,那我们添加K对参数分别为weight和bias,则SS 可以表示为
SS 的优点:
1. 是由大规模训练的DNN 初始化参数,可以快速拟合
2. 没有改变DNN的权重,避免了catastrophic forgetting问题
3. 参数量少

Hard task (HT) meta-batch

HT meta-batch 训练的思想是摘选出训练失败的案例,然后利用他们来增加模型的鲁棒性。
针对于每一个小任务task, train(为了训练base-learner) 和 test(为了训练SS的参数,但同时也可以获得test上的准确率),然后把其中准确率最低的样本选取出来,得到当前任务中最难分类的class-m。
得到这m个类别之后,我们可以resample 出一个harder task
具体细节:
算法流程
Algorithm 1 summarizes the training process of two main stages: large-scale DNN training (line 1-5) and meta-transfer learning (line 6-22). HT meta-batch re-sampling and continuous training phases are shown in lines 16-20, for which the failure classes are returned by Algorithm 2, see line 14. Algorithm 2 presents the learning process on a single task that includes episode training (lines 2-5) and episode test, i.e. meta-level update (lines 6). In lines 7-11, the recognition rates of all test classes are computed and returned to Algorithm 1 (line 14) for hard task sampling

08

实验部分

数据集

miniImageNet:共有100个类别,每个类别有600张图片,100个类别分别划分为meta-train(64)、meta-validation(16)and meta-test(20)
Fewshot-CIFAR100 (FC100):共有100个类别,每个类别有600张图片,这100个类别的图片属于20个超类,meta-training有60个类(属于12个超类),meta-test 有20个类别(属于4个超类),meta-validation同test。
预训练:所有数据,10K iterations,5-class classification(1-shot 或者 10-shot),15 samples from samples
Network architecture:
feature extractor(4conv 或者 resnet-12)

实验结果

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存