从零开始,元学习入门

最近开始研究元学习,目前正在从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.

目录

1 为什么研究元学习? 

2 什么是元学习?

2.1 回顾传统的机器学习

2.1.1 公式化定义

2.2 元学习的概念和定义

2.3 元学习的流程和公式化定义

2.4 与相关研究领域对比

3 方法分类Taxonomy

3.1 Taxonomy1: Metric, Model, Optimization-based Methods

3.2 Taxonomy 2: Meta-Representation, Meta-Optimizer, Meta-Objective

3.2.1 Meta-Representation

3.2.2 Meta-Optimizer

3.2.3 Meta-Objective

4 元学习的应用

5 现有问题和挑战

6 总结

7 参考文章


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 公式化定义

给定一个任务,该任务对应的数据集为D = \left \{ (x_1, y_1),..., (x_N, y_N) \right \},在其上训练一个模型y=f_\theta (x),参数为𝜃,满足:

\theta^*=argmin_\theta L(D;\theta,w)。其中,L为损失函数,度量真实标签yf_\theta (\cdot)之间的距离。

w,表示与决定“如何学习”相关的一些条件因素,即:how to learn。常用的w包括:

  • 模型初始参数
  • 如何选择optimizer
  • 如何选择损失函数…

训练结束后,再i使用一些从未出现过的数据作为测试集,测试模型的泛化能力。

在传统的机器学习中,优化过程通常是从i头开始学习,并且需要预先指定如何去学习("how to learn"),即w。而与之相对的是,meta-learning的目标是learning "how to learn",即:学习到最好的w,而不是预先指定w

到此,我们也了解了meta-knowledge和Task的基本概念,并对传统的机器学习和元学习,以及二者之间的差异有了初步的认识。

2.2 元学习的概念和定义

元学习的主要目的是:通过学习“how to learn”来提高模型性能。换句话说,即:学习到最优的元知识𝒘,使其能够学习到一个通用的学习器,该学习器能够更快、更好的泛化并应用到其他新的任务。

元学习的目标函数:p(T)表示一组任务的概率分布,定义一个任务T由一个数据集和一个损失函数组成,记为T=\left \{ D, L \right \}𝑇=\left \{ 𝐷, 𝐿 \right \}, 那么元学习的目标可以表示为:

其中,w代表元知识,即"how to learn"。一个好的w能够在inner-level快速的对一个新任务进行学习。

Machine Learning VS Meta Learning

  • Machine learning only involves one task, while meta learning involves a group of tasks
  • 𝑤 should be pre-specified and fixed in machine learning, while meta-learning aims to learn “how to learn” in order to improve performance. 

2.3 元学习的流程和公式化定义

如下图所示,元学习包括两个阶段:Meta-training和Meta-testing。

  • Meta-training阶段:主要目标是学习到一个最优的w*。为了实现这一目的,元学习假定我们可以获取一些任务,它们采样自任务分布p(T),组成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 \small T_i in the batch                                       (注释:inner-level/task-level)

                                基于w,在训练集上训练得到最优的\small \theta^*_\left ( i \right )

                           End For

                     (c) 基于每个\small \theta^*_\left ( i \right ),在每个任务的测试集上进行测试,并基于这些结果此计算meta学习的损失(即:outer-level loss),然后更新w

           End while

  • Meta-testing阶段:该阶段主要目的是为了验证元知识的效果。类似地,在这个阶段,也从任务分布中采样Q个任务,构成Target Dataset。于是,在meta-testing阶段,我们可以基于Meta-training阶段求出的w*,为Target Dataset中的每个任务,在其训练集上进行训练,得到相应的最优的\small \theta^*_\left ( i \right )。然后,用这些模型在相应的测试集上的测试结果来评估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

设定好元表征和元优化器后,最后一步便定义是元学习的学习目标\small L_{meta},将内层学习和外层学习相关联起来。

  • 多样本/小样本学习 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 参考文章

 

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
U-net是一种常用的神经网络架构,用于图像分割任务。它的设计灵感来自于医学图像分割任务,其中需要将影像中的不同组织和器官分离出来。U-net具有类似于编码器-解码器的结构,可以有效地从输入图像中提取特征并生成分割结果。 以下是从零开始学习U-net的步骤: 1. 了解U-net的基本架构 U-net主要由编码器和解码器部分组成。编码器部分可以将输入图像转换为低维特征表示,而解码器部分可以将这些特征重构成与原始图像相同大小的分割结果。在这个过程中,U-net使用了跳跃连接来将编码器和解码器之间的特征相互联系起来,从而提高了分割结果的准确性。 2. 了解U-net的损失函数 U-net的损失函数通常使用交叉熵损失函数或Dice系数作为评估指标。交叉熵损失函数用于计算预测分割结果和真实分割结果之间的距离,而Dice系数则用于评估预测分割结果和真实分割结果的重叠程度。 3. 准备数据集 在开始训练U-net之前,需要准备一个图像分割数据集。这个数据集应该包含许多带有标签的图像,其中每个像素都被标记为属于哪一类。通常,数据集的大小越大,U-net的性能就越好。 4. 构建U-net模型 使用Python和Keras等深度学习框架,可以很容易地构建U-net模型。在编写代码时,需要定义模型的输入和输出大小,并设置模型的损失函数和优化器。 5. 训练模型 使用准备好的数据集来训练U-net模型。在训练过程中,需要使用适当的超参数和正则化技术来避免过拟合。同时,可以使用交叉验证技术来评估模型的性能,并对模型进行优化。 6. 测试模型 在训练完成后,可以使用测试集来测试U-net模型的性能。在测试过程中,需要将测试图像输入到模型中,并将输出与真实分割结果进行比较。如果模型的性能不够好,可以通过调整超参数或增加数据集来进行改进。 总之,学习U-net需要一定的深度学习基础和编程经验。通过以上步骤,可以逐步掌握U-net的基本知识和技能,并使用它来处理图像分割任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值