最近开始研究元学习,目前正在从2020年的两篇综述入手,争取对元学习的概念、研究现状等内容有一个初步的认识。这里,简单记录一下自己的阅读笔记,供大家参考学习,不足之处欢迎指正。
参考论文:
1. Huisman, Mike, Jan N. van Rijn, and Aske Plaat. "A Survey of Deep Meta-Learning." arXiv preprint arXiv: 2010.03522.
2. Hospedales, Timothy, et al. "Meta-learning in neural networks: A survey." arXiv preprint arXiv:2004.05439.
目录
3.1 Taxonomy1: Metric, Model, Optimization-based Methods
3.2 Taxonomy 2: Meta-Representation, Meta-Optimizer, Meta-Objective
1 为什么研究元学习?
虽然深度学习在很多领域都取得了非常大的成功,但是也具有非常明显的局限性:(1)训练深度学习模型往往需要大量的数据; (2)深度学习训练和计算需要大量的计算资源。这些因素导致深度学习在在数据很难获得,或者计算资源不足的场景下捉襟见肘。
近年来,虽然人工智能得到了快速的发展,但是仍与人类智能有着明显的差距,主要体现在:(1)人类能够基于先验知识或经验,快速的学习新的任务和领域知识,并不断强化自身的学习能力,而人工智能模型则很难实现“learning to learn";(2)此外,人类往往能够快速的、从少量样本中学习到新的知识并将其泛化到其它样本/领域,而人工智能模型则需要对大量的有监督样本进行学习才有可能保证其泛化性。
元学习(Meta learning,也叫Learning to learn)的目的就是为了解决这一问题,即:在学习的过程中不断强化模型的学习能力,以更好的的应对将来的任务。
A meta learning model gains experience over multiple learning episodes - often covering a distribution of related tasks - and uses the experience to improve its future learning performance. It aims to provide the next step of integrating joint feature, model, and algorithm learning.
2 什么是元学习?
Meta-learning: Learning to learn, in principle, it aims to learn meta-knowledge that can be used to learn new tasks more quickly.
元学习,也叫“Learning to learning”,即:学习元知识(meta-knowledge),使其能够快速的应用于新的task。在介绍元学习的具体内容之前,首先要理解两个概念:(1)什么是元知识;(2)什么是一个任务Task。
接下来,在介绍这两个概念之前,我们先回顾一下传统的机器学习过程。
2.1 回顾传统的机器学习
Contemporary machine learning is the process of improving model predictions over multiple data instances for a specific task.
传统的机器学习的主要目的是:针对一个特定任务,训练一个模型,使其对属于该任务的其他样本具有很高的准确性和泛化性。
2.1.1 公式化定义
给定一个任务,该任务对应的数据集为,在其上训练一个模型,参数为𝜃,满足:
。其中,为损失函数,度量真实标签与之间的距离。
,表示与决定“如何学习”相关的一些条件因素,即:how to learn。常用的包括:
- 模型初始参数
- 如何选择optimizer
- 如何选择损失函数…
训练结束后,再i使用一些从未出现过的数据作为测试集,测试模型的泛化能力。
在传统的机器学习中,优化过程通常是从i头开始学习,并且需要预先指定如何去学习("how to learn"),即。而与之相对的是,meta-learning的目标是learning "how to learn",即:学习到最好的,而不是预先指定。
到此,我们也了解了meta-knowledge和Task的基本概念,并对传统的机器学习和元学习,以及二者之间的差异有了初步的认识。
2.2 元学习的概念和定义
元学习的主要目的是:通过学习“how to learn”来提高模型性能。换句话说,即:学习到最优的元知识𝒘,使其能够学习到一个通用的学习器,该学习器能够更快、更好的泛化并应用到其他新的任务。
元学习的目标函数:设表示一组任务的概率分布,定义一个任务由一个数据集和一个损失函数组成,记为, 那么元学习的目标可以表示为:
其中,代表元知识,即"how to learn"。一个好的能够在inner-level快速的对一个新任务进行学习。
Machine Learning VS Meta Learning
|
2.3 元学习的流程和公式化定义
如下图所示,元学习包括两个阶段:Meta-training和Meta-testing。
- Meta-training阶段:主要目标是学习到一个最优的w*。为了实现这一目的,元学习假定我们可以获取一些任务,它们采样自任务分布,组成Source Dataset。如图中公式所示,Source Dataset由M个数据集组成,每个数据集对应于一个任务。
- 问题:那么,如何学习最优的w*呢?
- 答案:采用Bilevel Optimization对w*进行学习。具体如下图所示:
step1: 随机初始化w step2: while not done: (a) Sample a batch of training/source dataset (b) For in the batch (注释:inner-level/task-level) 基于w,在训练集上训练得到最优的 End For (c) 基于每个,在每个任务的测试集上进行测试,并基于这些结果此计算meta学习的损失(即:outer-level loss),然后更新w End while |
- Meta-testing阶段:该阶段主要目的是为了验证元知识的效果。类似地,在这个阶段,也从任务分布中采样Q个任务,构成Target Dataset。于是,在meta-testing阶段,我们可以基于Meta-training阶段求出的w*,为Target Dataset中的每个任务,在其训练集上进行训练,得到相应的最优的。然后,用这些模型在相应的测试集上的测试结果来评估meta-leaner的总体性能。
2.4 与相关研究领域对比
-
Meta learning vs Transfer learning:迁移学习将在一个Source Task上的获得学习经验(如:初始化参数,特征提取器等)迁移到另一个Target task, 以提高模型在Target Task上的学习性能(包括:速度,准确率等)。Meta Learning和Transfer Learning有一定联系,但是不完全相等。二者的主要区别在于看待问题的角度。迁移学习强调对某一具体任务进行学习;而元学习的主要目的是学习meta-knowledge,通过学习“how to learn”来提高模型性能,使其能够更快、更好的泛化并应用到其他的新任务。而与Meta Learning相比,迁移学习不一定总会具有meta-objective。
-
Meta learning vs Domain adaptation/Domain generalization:Source和Target任务可能存在Domain-Shift(即:二者的分布会存在差异),在迁移过程中会影响模型的性能。Domain adaptation是迁移学习的一个变体,用来减少将source任务中训练的模型迁移到target任务中,因为domain-shift所带来的影响。Domain generalization的目标是选择一个模型,该模型具有domain-shift不变性。二者与Meta-learning的区别都在于没有meta-objective。
-
Meta Learning vs continual/lifelong learning:持续学习/终身学习指的是从潜在的非平稳分布中提取一系列任务进行学习的能力,特别是在加速学习新任务和不忘记旧任务的同时进行学习。其强调的重点是使用一个模型,应对过去的和将来的所有任务。然而,大多数持续学习方法并不是元学习方法,因为没有明确的解决meta-objective。并且,元学习关注的是在学习的过程中不断强化学习的能力,它会为每个任务使用一个对应的模型。(源自李宏毅视频课中的解释)
-
Meta Learning vs Multi-task learning:多任务学习的目的是:联合训练一个模型,使其在多个固定任务上表现良好。而元学习的主要目的是训练一个模型,能够快速的学习新的任务。
-
Meta Learning vs Hyperparameter Optimization (HO):严格来说,超参数优化(hyperparameter optimization)侧重学习率、网络架构等参数的设计,HO属于meta-learning的一个应用场景。
-
Meta Learning vs Hierarchical Bayesian Models (HBM):从生成模型的角度,为meta-learning提供了一个看问题的角度
-
Meta Learning vs Auto ML:Auto ML涵盖了相当广泛的内容,只要是能够使得传统机器学习算法中手工操作的部分更自动化的方法都被包含在内,例如:数据准备和清洗工作,特征选择,算法选择,调参,架构选择等。因此,元学习属于AutoML的一个特例。
3 方法分类Taxonomy
两篇综述从不同的角度对现有的元学习方法进行分。
《A Survey of Deep Meta-Learning》将元学习方法分为三类,分别为:Metric-based Methods, Model-based Methods和Optimization-based Methods。
《Meta-learning in neural networks: A survey》将元学习问题拆解为三各部分,即:如何定义meta-representation;如何选择meta-optimizer;确定元学习的目标。并从这三个部分对不同的方法进行归类和整理。
下面将分别对两篇综述中定义的分类方法进行相应的介绍。
3.1 Taxonomy1: Metric, Model, Optimization-based Methods
如下图所示,《A Survey of Deep Meta-Learning》将元学习方法分为三类,分别为
- Metric-based methods:主要思想是学习一个相似性函数,为输入的两个数据x1和x2计算相似分数。其优点是简单有效,缺点是只能应用于有监督学习。主要代表方法有:Siamese Nets, Matching nets, Prototypical nets, Relation Nets, ARC, GNN.
- Model-based methods:也叫Black-box based methods. 其主要思想是维护一个针对任务的、有状态的内部表示,该任务可以按顺序方式捕获特定于某个具体任务的信息。其优点是比较灵活,但缺点是泛化能力较弱。主要代表方法有:Recurrent Meta-Learner, MANN, Meta Networks, SNAIL, CNPs, Neural Statistician.
- Optimization-based methods: 将内部任务视为优化问题,重点提取出提高优化性能所需的元知识w。其优点是鲁棒性和泛化能力较强,缺点是计算量较大。主要代表方法有:MAML, iMAML, Meta-SGD, Reptile, LEO, Online MAML, LLAMA, PLATIPUS, Bayesian MAML…
3.2 Taxonomy 2: Meta-Representation, Meta-Optimizer, Meta-Objective
《Meta-learning in neural networks: A survey》一文中将Meta-Learning问题拆解为三个基本问题:
- Meta-Representation("What?"):元学习过程中最重要的问题之一就是选择要学习的元知识(元表征)即:确定要学什么。
- Meta-Optimizer("How?"):确定好要学习的meta-knowledge之后,接下来应确定选择何种优化/学习算法对元知识进行学习,即:回答了元学习中的如何学习元知识的问题。
- Meta-Objective("Why?"):有了元知识的表征和学习方法后,接下来应该确定朝着怎样的目标去进行学习?即:回答了元学习中为什么要这样学习的问题。
围绕这三大基本问题,可以对近年来元学习领域出现了诸多研究成果进行分类。下图给出了元学习的研究框架:
3.2.1 Meta-Representation
- 参数初始化Parameter Initialization:学习一个好的初始化方法,使得针对新的任务T,使用该初始化方法进行学习只需要几个梯度运算步骤即可完成。此类方法存在的问题是:一组初始化参数是否具有足够的元知识表征能力,或者这些参数是否会受限于特定任务。
- 优化器Optimizer:深度学习模型通常可以由SGD、Adam等常用的optimizer进行优化,这些优化器是固定不变的。那么,能否从相关的任务中,自动地学习适合于本任务的优化器?这类表征的目的是通过训练一个函数来学习内部优化器,该函数在每次基础学习迭代中作为初始优化步骤的输入。
- 黑盒模型Black-Box Models: 假定待学习模型的参数是由另一个网络所学习而来的,例如CNN、RNN等。比较著名的工作有Memory-augmented neural networks等。
- 度量学习Metric-Learning/嵌入学习Embedding Functions:通过学习一个特征嵌入函数,使得在这个表征下,仅通过简单的相似度度量就可以进行分类。
- Modules:模块化的元学习假设ω是由与任务无关的知识定义的一组模块,inner-level的目标是学习一个θ,用θ对这些模块进行重组来解决对应的任务。
- 注意力模块Attention Modules
- 超参数Hyper-parameters
- 模型架构Architecture
- 损失Loss:通过自适应地学习损失函数来进行meta-learning。
- 数据增强Data Augmentation:用meta-learning来帮助学习数据增强策略
- 样本权重选择与课程学习Minibatch-selection, sample weights, and curriculum learning
- 数据集、标签与环境Datasets, Labels, and Environment:将support dataset本身作为meta-representation,进行学习。
3.2.2 Meta-Optimizer
有了元表征之后,下一步便是决定如何进行元优化。
- 基于梯度的Gradient:最常用的方法。这里的问题包括:如何在一个较长的计算图中实现有效的梯度回传;以及如何避免计算过程中的梯度衰减问题;如何应对base-learner的损失函数不可微的情况。
- 基于强化学习Reinforcement Learning:基于强化学习的方法可以应对base-learner的损失函数含有不可微的情况。由于强化学习计算量较大,因此这里的主要问题在于:如何在引入RL时,保证高效的学习过程。
- 进化算法Evolution:另一种非常有效的途径是进化算法,有别于深度学习,进化算法并没有BP的过程,同时也有自身的一些优点和缺点。
- 优点
- 可以优化任意类型的基础模型和元目标,不要求可微性。
- 不依赖于反向传播,避免了梯度衰减问题,并且减少了计算高阶梯度的计算代价。
- 高度并行,使元训练更容易扩展。
- 通过保持不同的解的种群,可以避免受到局部极小值的影响。
- 缺点:
- 随着可学习参数的增加,训练模型所需的总体规模迅速增加。
- 对突变策略(如噪声的大小和方向)敏感,因此可能需要进行细致的超参数优化。
- 拟合能力普遍弱于基于梯度的方法,特别是对于像CNNs这样的大模型。
- 优点
3.2.3 Meta-Objective
设定好元表征和元优化器后,最后一步便定义是元学习的学习目标,将内层学习和外层学习相关联起来。
- 多样本/小样本学习 Many/Few-Shot Episode Learning:取决于目标任务的设定,meta-objective可以有针对性地被设计为多样本还是小样本的学习模式。
- 快速的/渐进式的结果Fast Adaptation/Asymptotic Performance
- 多任务/单任务。
- 在线/离线。
- 另外的设计思路:有噪声样本的情况下如何学习,以及有domain-shift的情况下如何学习等。
4 元学习的应用
元学习很多场景下都有着广泛的应用。
- 计算机视觉Computer Vision:主要集中在小样本学习(Few-Shot Learning)问题上。包括:图像分类,目标检测,目标分割,图像生成,视频对其,密度估计,关键点预测等。
- 元强化学习和机器人Meta Reinforcement Learning and Robotics: 目的是解决在线单任务设置,在学习单任务时,损失函数、奖励、超参数、探索策略等元知识将和基本策略一起进行在线训练。
- 环境学习和仿真Environment Learning and Sim2Real:在模拟环境下训练一个能够推广到真实世界的模型是具有挑战性的,因为模拟环境和真实世界并不能完全匹配。
- 神经架构搜索Neural Architecture Search
- 贝叶斯元学习Bayesian Meta-Learning:通过贝叶斯层次模型来理解和解释元学习,使用贝叶斯推理进行学习,而不是直接对参数进行优化。
- 无监督元学习Unsupervised Meta-Learning/元学习无监督学习 Meta-Learning Unsupervised Learning
- 无监督元学习:外层循环的元目标是无监督的
- 元学习无监督学习:使用元学习来对无监督内层循环的任务进行学习
- 主动学习Active Learning:使用元学习来学习选择要进行标记的数据的策略
- 终生/在线/自适应学习Contiual, Online and Adaptive Learning:持续学习是指模仿人类学习的过程,对一些列的任务进行持续学习,并保证在可以更好地学习新的任务的同事,也不会忘记以前学过的任务,也不需要存储所有过去的数据来预演以防遗忘。
- 域迁移和域泛化Domain Adaptation, Domain Generalization
- 其他的应用:超参数优化,自然语言处理等等
元学习作为机器学习的一种学习方法,可以和绝大多数的机器学习问题和相关领域进行结合,碰撞出不一样的火花。
5 现有问题和挑战
- 泛化能力Meta-Generalization:
- 元学习器能够泛化到一个更广泛的任务族分布上去呢?
- 元学习器能够很好的从meta-training过程泛化到meta-testing阶段?
- 如果meta-testing阶段的任务集与meta-taining阶段的任务集来自于不同的分布,该如何保证泛化性能呢?
- 多模态的任务来源Multi-modality of task distributioon:现有的meta-learning方法假设训练和测试任务来自单一模态的数据,那么如何对多模态任务进行元学习呢
- 任务家族Task Family:如何将在一个任务族上学习到的元学习器应用于另外一个任务族呢?
- 计算复杂度ComputationCost:时间复杂度和空间复杂度
- 跨模态迁移和异构的任务:如何从一组任务中提取元知识,并将其扩展到另外一个 模态的数据集上呢?
6 总结
元学习在近些年来得到了长足的发展,但是仍有很多问题亟待解决,这两篇文献都是对现有方法进行了总结和分类,并为未来的研究指明了一个方向。
7 参考文章