来源:火炉课堂 | 元学习(meta-learning)到底是什么鬼?bilibili

文章目录

  • 1. 元学习概述
    • Meta 的含义
    • 从 Machine Learning 到 Meta-Learning
    • Single-Task Meta-Learning(单任务元学习)
    • Multi-Task Meta-Learning(多任务元学习)
  • 2. 元学习过程
  • 3. 元学习方法论
    • 3.1 Optimization-based Method
      • Learning to optimize
      • Learning to initialize
      • Learning to weight
      • Learning to reward
      • Learning to augment
      • Dataset distillation
      • Neural architecture search (NAS)
    • 3.2 Model-based Method
    • 3.3 Metric-based Method
      • Siamese networks
      • Matching networks
      • Prototypical networks
      • Relation networks
      • Graph networks
  • 4. 补充

1. 元学习概述

Meta 的含义

当 meta 作为一个单词讲,表示“自身”、“本身”。当 meta 作为前缀,组成 meta-X 时,表示 “beyond-X”、“after-X” 或者 “X about X”。比如 Metadata 表示描述其他数据的数据。Meta 的中文翻译是“元”。Meta-learning(元学习)表示 “beyond learning”、“above learning” 或 “learning about learning”,目前最常见的对 meta-learning 的解释是 “learning to learn”(去学习如何学习)。

从 Machine Learning 到 Meta-Learning

传统机器学习、深度学习、元学习之间的区别:

  • Machine Learning:model learning
  • Deep Learning:joint feature and model learning
  • Meta-Learning: joint feature, model and algorithm learning

传统的 Machine learning 使用手工设计的特征来学习模型,通过优化算法来学习模型的参数。手工特征比如用户性别、年龄等,常见机器学习模型包括决策树、SVM、KNN 等。

Deep learning 在传统 Machine learning 的基础上,不再使用手工设计的特征,而是用模型来学习特征。通过端到端的训练,可以同时学习到好的特征和模型(此时特征本身就是模型)。但深度学习的网络架构本身也是手工设计的,包括用什么算法(CNN还是RNN),网络有几层,学习率如何设置等。

深度学习手工设计的算法就是 Meta-learning 要进一步解决的问题。Meta-learning 首先要根据数据和任务去学习一个最优的算法,再用该算法在数据上得到最优的特征和模型。Meta-learning 就是将网络选择、参数选择、特征提取等一系列过程自动化,通过端到端的方式去学习。

在深度学习中,我们手工选择一个算法 FFF,通过优化参数 θ\thetaθ 最终得到模型 fθf_{\theta}fθ。传统机器学习 / 深度学习的目标是从 data 上学习一个最好的模型 fff,而算法 FFF 本身需要进行手工选择。

Single-Task Meta-Learning(单任务元学习)

根据 Meta-learning 中 learning to learn 的思想,我们需要先去学习 FFF,然后再进行常规的深度学习。此时,学习目标就转变为了从 task 中学习一个最好的算法 FFF。元学习算法 A(⋅)A(·)A() 根据训练数据和 task,获取一个最优的算法 FωF_{\omega}Fωω\omegaω 是算法中可学习的超参数(包括网络层数、学习率等),ω\omegaω 通常叫做 meta-knowledge。得到了最适合当前 task 的算法 FωF_{\omega}Fω 后,再次基于数据训练得到一个最优的模型 fθf_{\theta}fθ

Multi-Task Meta-Learning(多任务元学习)

当有多组 task 时,元学习算法 A(⋅)A(·)A() 会找到一个对多种 task 都有效的算法 FωF_{\omega}Fω。此时算法 FωF_{\omega}Fω 具有“分类的能力”,用算法 FωF_{\omega}Fω 去学习 new task 就会高效地获得针对 new task 的模型 fθf_{\theta}fθ

Single-Task Meta-Learning 和 Multi-Task Meta-Learning 处理的实际上是不同的问题。

  • Single-Task Meta-Learning 的目标是学到 最适合当前 task 的算法 FωF_{\omega}Fω
  • Multi-Task Meta-Learning 的目标是学到 适合所有 task 的算法 FωF_{\omega}Fω,并且能够处理新的 task。

另外注意 Multi-task meta-learning 和 Multi-task learning 的区别,Multi-task learning 是机器学习中的一个传统范式,其目标只是能够处理多种 task,但并不要求能够处理新的 task。

2. 元学习过程

模型 fθf_{\theta}fθ 学习流程:

传统 Machine Learning 学习模型参数 θ\thetaθ 的基本流程:

  1. 随机初始化模型
  2. 定义 loss function,根据输入 data 的预测结果和标签计算 loss
  3. 通过 gradient descent 对模型进行优化

Machine Learning 希望模型 fθf_{\theta}fθ 能够在已见 data 上的效果好,以后也能在未见 data 上的表现好。而 Meta-Learning 学习算法参数 ω\omegaω 的过程不是在 data 层面进行优化,而是在 task 层面进行优化。Meta-Learning 希望算法在已见 task 上的效果好,以后也能在未见 task 上的效果好。

算法 FωF_{\omega}Fω 学习流程

根据训练数据(Task 1, Task 2, … Task n)和元学习算法 A(⋅)A(·)A() 可以得到一个初始化的算法 FωF_{\omega}Fω,用算法 FωF_{\omega}Fω 在每个 task 的 Testing samples 上去做 evaluation,评估 FωF_{\omega}Fω 好坏。注意不能在 Training samples 上去评估 FωF_{\omega}Fω 的好坏,因为 FωF_{\omega}Fω 就是从 Training samples 得来的,否则相当于用训练数据去评估模型,结果肯定是好的。

通过 Testing samples,可以算出每个 task 上的 loss:l1l^1l1, l2l^2l2, … lnl^nln,将所有 loss 求和就得到了最终的 Total loss。Total loss 就反应了当前 FωF_{\omega}Fω 好不好,如果 FωF_{\omega}Fω 不好,那么通过 FωF_{\omega}Fω 得到的模型 fθf_{\theta}fθ 一般来说也不会好。

注意,Machine Learning 的 loss 是在 training examples 上去做,而 Meta-Learning 的 loss 是在 task 的 testing examples 上去做。但是,实践中的 Meta-Learning 并不是将测试数据用于训练,而是像 Machine Learning 一样将训练集划分为训练和验证两部分,其中用于训练的部分叫做 Support set(支撑集),用于验证的部分叫做 Query set(查询集)。其中 Support set 用于优化模型参数 θ\thetaθ,Query set 用于优化算法参数 ω\omegaω。类似地,对于测试数据也同样分为 Support set 和 Query set,其中 Support set 的标签在测试过程中是可见的,而 Query set 的标签是未知的。

在元学习中,训练和测试通常称作元训练 Meta-training 和元测试 Meta-testing。在元训练过程中并不生成最终的模型 fff,只是生成最优的算法 FFF。算法 FωF_{\omega}Fω 的参数 ω\omegaω 称作元知识 meta-knowledge,元知识可以包括:初始参数,超参数,模型架构,损失函数等。

Meta-training 可以表示为两层的优化过程:外层学习算法参数 ω\omegaω,内层学习模型参数 θ\thetaθ。给出当前学到的 ω\omegaωθ\thetaθ,内层循环基于训练集的 support set 最小化损失函数 LtaskL^{task}Ltask 可以得到更新后的 θ∗\theta^*θ。外层循环将 θ∗\theta^*θ 拿到训练集的 query set 上去验证效果,如果效果不好说明当前的算法参数 ω\omegaω 不好,通过损失函数 LmetaL^{meta}Lmeta 更新,得到新的算法参数 ω∗\omega^*ω

Meta-testing 可以表示为(new task jjj):元测试时已经学到了最好的算法参数 ω∗\omega^*ω,此时将算法 FωF_{\omega}Fω 拿到测试集的 support set 上训练,学习模型参数 θ\thetaθ,最后学到针对测试集 support set 最优的模型参数 θ∗\theta^*θ

3. 元学习方法论

3.1 Optimization-based Method

基于优化的方法将 meta-knowledge ω\omegaω 和优化过程联系在一起。

Learning to optimize

将优化器从手工选择(SGD,Adam…)变为可学习的 meta-knowledge:

M. Andrychowicz, M. Denil, S. G. Colmenarejo, and M. W. Hoffman, “Learning to learn by gradient descent by gradient descent,” in NIPS, 2016, pp. 1–17.

S. Ravi and H. Larochelle, “Optimization as a Model for Few-Shot Learning,” in ICLR, 2017, pp. 1–11.

将学习率变为可学习的 meta-knowledge:

Z. Li, F. Zhou, F. Chen, and H. Li, “Meta-SGD : Learning to Learn Quickly for Few-Shot Learning,” in arXiv, 2017.

Learning to initialize

MAML 将模型初始参数变为可学习的 meta-knowledge:此时可学习参数 ω\omegaω = 模型参数 θ\thetaθ。MAML 的基本思想是将模型参数 θ\thetaθ 在 support set 中的每个 task 上训练一次,得到更新后的参数 θi′\theta_i'θi,然后将 θi′\theta_i'θi 在 query set 上进行验证,如果效果好说明初始化参数 θ\thetaθ 好。将所有 task 的 loss 累加起来,作为更新 θ\thetaθ 的总损失函数。 因此,该方法是模型无关的方法,对任何模型都可以使用 MAML。

C. Finn, P. Abbeel, and S. Levine, “Model-agnostic meta-learning for fast adaptation of deep networks,” in ICML, 2017, vol. 3, pp. 1856–1868.

改进一阶 FOMAML:

A. Nichol, J. Achiam, and J. Schulman, “On first-order meta-learning algorithms,” arXiv, pp. 1–15, 2018.

Learning to weight

学习权重,比如对 loss function 中不同的样本赋予不同的权重,给很难的样本分较大的权重。

Focal loss 就是为难样本加权的 loss function,这里就是将如何加权变成可学习的 meta-knowledge。

J. Shu et al., “Meta-Weight-Net: Learning an Explicit Mapping For Sample Weighting,” in NIPS, 2019, pp. 1–12.

Learning to reward

学习 loss function

S. Bechtle, “Meta Learning via Learned Loss,” in arXiv.

Learning to augment

学习数据增强,将数据增强策略作为 meta-knowledge 去学习。

Y. Li, G. Hu, Y. Wang, T. Hospedales, N. M. Robertson, and Y. Yang, “DADA: Differentiable Automatic Data Augmentation,” in arXiv, 2020, pp. 1–16.

Dataset distillation

将训练数据集中的 support data 作为 meta-knowledge。

在前面的 bi-level 优化方法中,都是用同样的 support data 来优化模型参数 θ\thetaθ。而数据蒸馏的基本思想是,算法的效果不好,不一定是算法的问题,也有可能是给的训练数据不好。因此,数据蒸馏方法希望得到一个最好的数据集来训练模型。

T. Wang, J.-Y. Zhu, A. Torralba, and A. A. Efros, “Dataset Distillation,” in CoRR, 2018, pp. 1–14.

Neural architecture search (NAS)

模型架构搜索是个很大的领域。

难点:前面的优化方法都是可微的,ω\omegaω 可以通过 gradient descent 进行更新。而模型架构是不可微的,很难通过 gradient descent 方法进行优化。

通常是利用强化学习、进化计算等方法做 NAS。

Zoph, Barret, and Quoc V. Le. “Neural architecture search with reinforcement learning.” arXiv preprint arXiv:1611.01578 (2016).

3.2 Model-based Method

基于模型的方法基于 meta-knowledge ω\omegaω 直接生成模型,而不是算法。

A. Santoro, M. Botvinick, T. Lillicrap, G. Deepmind, and W. G. Com, “Meta-Learning with Memory-Augmented Neural Networks,” in ICML, 2016, vol. 48.

T. Munkhdalai and H. Yu, “Meta Networks,” in ICML, 2017.

J. Requeima, J. Gordon, S. Nowozin, and R. E. Turner, “Conditional Neural Adaptive Processes,” in NIPS, 2019.

3.3 Metric-based Method

基于度量的方法不需要模型做预测,其只需要提特征,而下游任务本身不需要模型。最经典的例子就是 KNN,KNN 属于 lazy learning 方法,KNN 没有训练的过程。

Siamese networks

孪生网络,support 和 query 用同一个 embedding network

Matching networks

support 和 query 用不同的 embedding network

Prototypical networks

将 K shot 做均值,作为一个 prototype

Relation networks

用同一个 embedding network,在计算 relation score 时改变了方式

Graph networks

将 embedding 继续放到 GNN 里

4. 补充

AutoML 和 Meta-learning 的区别:

原始数据直接送到 AutoML,AutoML 会自动处理数据、选择合适的算法、模型架构、调参、优化,最后输出一个模型直接拿来做预测即可。AutoML 用于傻瓜式深度学习,其内部并不像 Meta-learning 全部都通过学习来选择,而是包含了一些手工设计的部分。因此 Meta-learning 可以看作是 AutoML 的特例,也可以作为 AutoML 的一种实现手段。总之,Meta-learning is about algorithm learning, rather than algorithm tuning。

Meta Learning 元学习相关推荐

  1. 理解Meta Learning 元学习,这篇文章就够了!

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 AI编辑:我是小将 本文作者:谢杨易 1 什么是meta lear ...

  2. 8.7 Meta learning元学习全面理解、MAML、Reptile

    文章目录 1.介绍 为什么需要元学习? few-shot learning reinforcement learning 2.概念 3. Meta learning 三个步骤 定义一组learning ...

  3. Meta Learning(元学习)详解

    元学习 概述 基本概念 基本分类 基本流程 模型结构 概述 元学习(Meta Learing)的提出是针对传统神经网络 模型的泛化性能不足.对信种类任务适应性较差的特点.主要表现为通过少量的计算和新训 ...

  4. 机器学习15 -- Meta Learning 元学习

    1 什么是meta learning 一般的机器学习任务是,通过训练数据得到一个模型,然后在测试数据上进行验证.一般来说我们仅关注模型在该任务上的表现.而meta learning则探讨解决另一个问题 ...

  5. 顶会速递 | ICLR 2020录用论文之元学习篇

    抽空为大家整理了人工智能顶会ICLR 2020录用的Meta learning 元学习相关的最新论文,感兴趣的朋友们赶紧Mark读起来吧! [1]. Meta-Q-Learning 链接 | http ...

  6. 机器学习笔记—13(李宏毅版)神经网络压缩与元学习

    神经网络压缩 一直使用云端的话,速度太慢了.并且使用云端不够私密.要在设备上直接进行智能计算,就需要神经网络压缩. network pruning,训练一个大的神经网络-->然后评估每个参数或神 ...

  7. 百家争鸣的Meta Learning/Learning to learn

    1 前言 Meta Learning 元学习或者叫做 Learning to Learn 学会学习 已经成为继Reinforcement Learning 增强学习之后又一个重要的研究分支(以后仅称为 ...

  8. 【李宏毅】元学习(Meta learning)的概念与步骤

    [李宏毅]元学习(Meta learning)的概念与步骤 1 概念 2 元学习步骤 2.1 定义一组学习算法 2.2 评价一个学习算法 F F F 的好坏 只讲了元学习概念和步骤,简单做了解,稍微复 ...

  9. 斯坦福大学#深度多任务学习与元学习#视频及讲义下载

    #Stanford CS330 2019秋# #多任务学习# #元学习# CS 330: Deep Multi-Task and Meta Learning 深度学习在图像分类.语音识别.游戏等监督学 ...

最新文章

  1. android adb shell常用命令(四)
  2. 定了!2022考研时间公布!
  3. java数组 方法_Java数组的十大方法
  4. linux部署多个jar 会宕机_我常用的自动化部署技巧,贼好用,推荐给大家!
  5. matlab在遥感数字图像处理方面的应用
  6. Atitit ACID解决方案2PC(两阶段提交)  跨越多个数据库实例的ACID保证
  7. 推荐系统实践(四)----基于标签的推荐算法
  8. 非常好的Oracle基础教程
  9. windows实用工具集
  10. R语言混合线性模型包代码演示
  11. 针对自动识别大麦网滑块验证码,提出解决方案,并进行分析、总结
  12. python数据分析电影论文_以腾讯5000部电影为例,告诉你Python数据分析该怎么做...
  13. python 蒙特卡罗法求π值
  14. Chef入门详解 Chef安装 Chef使用
  15. 中国机器视觉市场研究报告
  16. 卡西欧学生用计算机怎么玩,你真的会用计算器么?来玩转卡西欧计算器吧
  17. C51单片机基础之串口编程实战
  18. 好玩!开源 Switch 模拟器!
  19. 旁站及C段收集与利用方式
  20. 匈牙利算法的基本原理与Python实现

热门文章

  1. 笑傲江湖java_笑傲江湖葵花劫_JAVA游戏免费版下载_7723手机游戏[www.7723.cn]
  2. 告别单打独斗,美国网件Orbi多路由系统告诉你什么叫走到哪都有网
  3. CAD误删Fonts文件夹/找不到字体
  4. Netfilter日志记录器
  5. Github爆火!暗黑破坏2经典游戏开源,重温经典!
  6. Android在线预览音乐、视频、pdf、word、Excel
  7. Practical Black-Box Attacks against Machine Learning
  8. 菜鸟站长之家给大家讲讲WordPress百度云cdn加速教程方法,并且免费版支持 HTTPS了
  9. PHP是脚本语言 因此不能通过浏览器运行,SQL_基于ASP技术的Web数据库应用开发
  10. 一文详解Mysql锁事务隔离级别