基于元学习处理小样本问题

元学习论文总结||小样本学习论文总结

2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017-2019 NIPS2017-2019


参考:当小样本遇上机器学习 fewshot learning

基于元学习处理小样本问题

元学习

通过大量的数据,现在的AI系统能从0开始学习一个复杂的技能。我们希望AI系统能获得多种技能并能适应各种环境,但针对每种技能都从0开始训练是无法承受的。因此,我们希望它能够从之前的经验快速地学习新的技能,而不是把新的任务孤立地考虑。这个方法,我们称为元学习(learning to learn,或meta learning), 使得我们的系统在它的整个生命周期中可以持续地学习各种各样的任务。(基于先验)

meta learning是机器学习的一个子领域,它自动学习一些应用于机器学习实验的元数据,主要目的是使用这些元数据来自动学习如何在解决不同类型的学习问题时变得灵活,从而提高现有的学习算法。灵活性是非常重要的,因为每个学习算法都是基于一组有关数据的假设,即它是归纳偏(bias)的。这意味着如果bias与学习问题中的数据相匹配,那么学习就会很好。学习算法在一个学习问题上表现得非常好,但在下一个学习问题上表现得非常糟糕。这对机器学习或数据挖掘技术的使用造成了很大的限制,因为学习问题与不同学习算法的有效性之间的关系尚不清楚。

通过使用不同类型的元数据,如学习问题的属性,算法属性(如性能测量)或从之前数据推导出的模式,可以选择、更改或组合不同的学习算法,以有效地解决给定的学习问题。(基于已经学到的元数据,快速解决新问题的能力

元学习一般有两级,第一级是快速地获得每个任务中的知识,第二级是较慢地提取所有任务中学到的信息。(?)下面从不同角度解释了元学习的方法

  • 通过知识诱导来表达每种学习方法如何在不同的学习问题上执行,从而发现元知识。元数据是由学习问题中的数据特征(一般的,统计的,信息论的......)以及学习算法的特征(类型,参数设置,性能测量...)形成的。然后,另一个学习算法学习数据特征如何与算法特征相关。给定一个新的学习问题,测量数据特征,并且可以预测不同学习算法的性能。因此,至少在诱导关系成立的情况下,可以选择最适合新问题的算法

  • stacking. 通过组合一些(不同的)学习算法,即堆叠泛化。元数据是由这些不同算法的预测而形成的。然后,另一个学习算法从这个元数据中学习,以预测哪些算法的组合会给出好的结果。在给定新的学习问题的情况下,所选择的一组算法的预测被组合(例如通过加权投票)以提供最终的预测。由于每种算法都被认为是在一个问题子集上工作,所以希望这种组合能够更加灵活,并且能够做出好的预测。

  • boosting(结合多次预测). 多次使用相同的算法,训练数据中的示例在每次运行中获得不同的权重。这产生了不同的预测,每个预测都集中于正确预测数据的一个子集,并且结合这些预测导致更好(但更昂贵)的结果。

  • 动态偏选择(Dynamic bias selection)通过改变学习算法的感应偏来匹配给定的问题。这通过改变学习算法的关键方面来完成,例如假设表示,启发式公式或参数。

  • learning to learn,研究如何随着时间的推移改进学习过程。元数据由关于以前的学习事件的知识组成,并被用于高效地开发新任务的有效假设。其目标是使用从一个领域获得的知识来帮助其他领域的学习。

 在meta learning中,我们在训练集训练一个训练过程(meta learner)来生产生一个分类器(learner)使得learner在测试集上获得高的精度。如下图(在数据训练集上训练一个分类器)


 下面介绍几个经典的解决fewshot的meta learning的方法。

递归记忆模型 (Memory-Augmented Neural Networks)

  • 论文:Meta-learning with memory-augmented neural networks

基于记忆的神经网络方法早在2001年被证明可以用于meta-learning。他们通过权重更新来调节bias,并且通过学习将表达快速缓存到记忆中来调节输出。然而,利用循环神经网络的内部记忆单元无法扩展到需要对大量新信息进行编码的新任务上。因此,我们需要让存储在记忆中的表达既要稳定又要是元素粒度访问的,前者是说当需要时就能可靠地访问,后者是说可选择性地访问相关的信息;另外,参数数量不能被内存的大小束缚。像神经图灵机(NTMs)和记忆网络就符合这种必要条件。

文章基于神经网络图灵机(NTMs)的思想,因为NTMs能通过外部存储(external memory)进行短时记忆,并能通过缓慢权值更新来进行长时记忆,NTMs可以学习将表达存入记忆的策略,并如何用这些表达来进行预测。由此,文章方法可以快速准确地预测那些只出现过一次的数据。文章基于LSTM等RNN的模型,将数据看成序列来训练,在测试时输入新的类的样本进行分类。具体地,网络的输入把上一次的y (label)也作为输入,并且添加了external memory存储上一次的x输入,这使得下一次输入后进行反向传播时,可以让y (label)和x建立联系,使得之后的x能够通过外部记忆获取相关图像进行比对来实现更好的预测这里的RNN就是meta-learner


优化器学习  (meta-learning LSTM)

  • 论文:Optimization as a model for few-shot learning

文章研究了在少量数据下,基于梯度的优化算法失败的原因,即无法直接用于meta learning。首先,这些梯度优化算法包括momentum, adagrad, adadelta, ADAM等,无法在几步内完成优化,特别是在非凸的问题上,多种超参的选取无法保证收敛的速度。其次,不同任务分别随机初始化会影响任务收敛到好的解上。虽然finetune这种迁移学习能缓解这个问题,但当新数据相对原始数据偏差比较大时,迁移学习的性能会大大下降。我们需要一个系统的通用初始化,使得训练从一个好的点开始,它和迁移学习不同的是,它能保证该初始化能让finetune从一个好的点开始

文章学习的是一个模型新参数的更新函数或更新规则。它不是在多轮的episodes学习一个单模型,而是在每个episode学习特定的模型。具体地,学习基于梯度下降的参数更新算法,采用LSTM表达meta learner,用其状态表达目标分类器的参数的更新,最终学会如何在新的分类任务上,对分类器网络(learner)进行初始化和参数更新!!!。这个优化算法同时考虑一个任务的短时知识和跨多个任务的长时知识。文章设定目标为通过少量的迭代步骤捕获优化算法的泛化能力,由此meta learner可以训练让learner在每个任务上收敛到一个好的解。另外,通过捕获所有任务之前共享的基础知识,进而更好地初始化learner。

基于梯度下降的参数更新公式如公式5所示,θt-1 是learner在第t-1次updates后的模型参数,αt 是学习率,Lt是损失函数。θt是learner的参数。

 (公式5)

 

  这个形式和lstm是一样的,如公式6,

 (公式6)

  状态Ct为模型参数。it是学习率,如公式7,学习率是当前参数、当前梯度、当前损失和上一次学习率的函数。由此,meta learner 可以精细地控制学习率,从而可以快速地学习而不会发散。

 (公式7)

  ft为忘记门,当learner陷入局部最优,需要大的改变才能逃脱的时候,即梯度为0但损失很大。我们需要忘记以前的值,因此ft 应该是这个信息的函数:

(公式8)

  c0是learner的初始化参数。好的初始值是让优化快速收敛的关键。

以训练miniImagenet数据集为例,训练过程中,我们从Dmeta-train的训练集(64个类,每类600个样本)中随机采样5个类,每个类5个样本,构成训练集,去学习learner;然后从Dmeta-train测集的样本(64个类,每类剩下的样本)中采样构成测试集,集合中每类有15个样本,用来获得learner的loss,去学习meta leaner。评估过程一样,我们从Dmeta-test的训练集(16个类,每类600个样本)中随机采样5个类,每个类5个样本,构成训练集,去学习learner;然后从Dmeta-test测集的样本(16个类,每类剩下的样本)中采样构成测试集,集合中每类有15个样本,用来获得learner的loss,去学习meta leaner。这两个过程分别如图13的虚线左侧和右侧。


图13

对meta-learner的训练过程进行可视化,把gate的值画出来,观察其在不同的数据之间是否存在变化。在1-shot上,meta learner学了10步,5-shot上学了5步。对于遗忘门,meta-leanrer采用一个简单的权值衰减策略,而且每层都比较一致。输入门在不同数据上的变化比较大,说明meta learner没有采用一个固定的优化策略,而且1-shot和5-shot的表现也不同,说明meta learner对两者采用了不同的方法。如图14:


图14


模型无关自适应(Model-Agnostic)[7]

  •  Model-agnostic meta-learning for fast adaptation of deep networks

meta learning 的目标是在各种不同的学习任务上学出一个模型,使得可以仅用少量的样本就能解决一些新的学习任务。这种任务的挑战是模型需要结合之前的经验和当前新任务的少量样本信息,并避免在新数据上过拟合。

文章提出的方法使得可以在小量样本上,用少量的迭代步骤就可以获得较好的泛化性能,而且模型是容易fine-tine的。而且这个方法无需关心模型的形式,也不需要为meta learning增加新的参数,直接用梯度下降来训练learner。文章的核心思想是学习模型的初始化参数使得在一步或几步迭代后在新任务上的精度最大化。它学的不是模型参数的更新函数或是规则,它不局限于参数的规模和模型架构(比如用RNN或siamese)。它本质上也是学习一个好的特征使得可以适合很多任务(包括分类、回归、增强学习),并通过fine-tune来获得好的效果。

文章提出的方法,可以学习任意标准模型的参数,并让该模型能快速适配。方法认为,一些中间表达更加适合迁移,比如神经网络的内部特征。因此面向泛化性的表达是有益的。因为我们会基于梯度下降策略在新的任务上进行finetune,所以目标是学习这样一个模型,它能对新的任务从之前任务上快速地进行梯度下降,而不会过拟合。事实上,是要找到一些对任务变化敏感的参数,使得当改变梯度方向,小的参数改动也会产生较大的loss,如图15。


图15

该方法的目标函数如公式9,即训练关于全局模型参数θ的具体任务参数θ‘,使其在从p(T )上采样的各个任务上误差最小。

 (公式9)

整个训练的流程如下伪代码,有内外两个循环,外循环是训练meta learner的参数θ,即一个全局的模型,内循环对每个采样任务分别做梯度下降,进而在全局模型上做梯度下降(a gradient through a gradient)。

 

  • 2
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值