元学习详解 (上)万字中文综述

Posted 繁凡さん

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了元学习详解 (上)万字中文综述相关的知识,希望对你有一定的参考价值。

《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列)

3043331995@qq.com

https://fanfansann.blog.csdn.net/

https://github.com/fanfansann/fanfan-deep-learning-note

作者:繁凡

version 1.0  2022-1-20

 

声明:

1)《繁凡的深度学习笔记》是我自学完成深度学习相关的教材、课程、论文、项目实战等内容之后,自我总结整理创作的学习笔记。写文章就图一乐,大家能看得开心,能学到些许知识,对我而言就已经足够了 ^q^ 。

2)因个人时间、能力和水平有限,本文并非由我个人完全原创,文章部分内容整理自互联网上的各种资源,引用内容标注在每章末的参考资料之中。

3)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除,非常感谢各位为知识传播做出的贡献!

4)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢。

5)本文由我个人( CSDN 博主 「繁凡さん」(博客) , 知乎答主 「繁凡」(专栏), Github 「fanfansann」(全部源码) , 微信公众号 「繁凡的小岛来信」(文章 P D F 下载))整理创作而成,且仅发布于这四个平台,仅做交流学习使用,无任何商业用途。

6)「我希望能够创作出一本清晰易懂、可爱有趣、内容详实的深度学习笔记,而不仅仅只是知识的简单堆砌。」

7)本文《繁凡的深度学习笔记》全汇总链接:《繁凡的深度学习笔记》前言、目录大纲 https://fanfansann.blog.csdn.net/article/details/121702108

8)本文的Github 地址:https://github.com/fanfansann/fanfan-deep-learning-note/ 孩子的第一个『Github』 !给我个 ⭐     Starred \\boxed⭐ \\,\\,\\,\\textStarred Starred 嘛!谢谢!!o(〃^▽^〃)o

9)此属 version 1.0 ,若有错误,还需继续修正与增删,还望大家多多指点。本文会随着我的深入学习不断地进行完善更新,Github 中的 P D F 版也会尽量每月进行一次更新,所以建议点赞收藏分享加关注,以便经常过来回看!

如果觉得还不错或者能对你有一点点帮助的话,请帮我给本篇文章点个赞,你的支持是我创作的最大动力!^0^

受篇幅所限(CSDN有字数限制),本文《元学习详解》分为上下两篇,这里是上篇。

文章目录


一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (下)万字中文综述(待更)

    15.5 基于度量的方法
      15.5.1 Convolutional Siamese Neural Network
      15.5.2 Matching Networks
         15.5.2.1 Simple Embedding
         15.5.2.2 Full Context Embeddings
      15.5.3 Relation Network
      15.5.4 Prototypical Networks
    15.6 基于模型的方法
      15.6.1 Memory-Augmented Neural Networks
         15.6.1.1 MANN for Meta-Learning
         15.6.1.2 Addressing Mechanism for Meta-Learning
      15.6.2 Meta Networks
         15.6.2.1 Fast Weights
         15.6.2.2 Model Components
         15.6.2.3 训练过程
    15.7 元学习应用
      15.7.1 计算机视觉和图形
      15.7.2 元强化学习和机器人技术
      15.7.3 环境学习与模拟现实
      15.7.4 神经架构搜索(NAS)
      15.7.5 贝叶斯元学习
      15.7.6 无监督元学习和元学习无监督学习
      15.7.7 主动学习
      15.7.8 持续、在线和适应性学习
      15.7.9 领域适应和领域概括
      15.7.10 超参数优化
      15.7.11 新颖且生物学上可信的学习者
      15.7.12 语言和言语
      15.7.13 元学习促进社会福利
      15.7.14 抽象和合成推理
      15.7.15 系统
    15.8 未来展望
    15.9 参考资料

一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

  元学习的诞生可以追溯到八十年代,当时的深度学习还没有如今这般火热, Jürgen Schmidhuber 在 1987 年的论文《 Evolutionary principles in self-referential learning》 [1] 一文中宣告了一种全新的机器学习方法的诞生:元学习。后来, Tom Schaul、 Jürgen Schmidhuber 两人在 2010 年的论文《Meta learning》 [2] 中更是确定了元学习的复兴。时间进入 2012 年,随着 Hinton 深度学习崭露头角,元学习与强化学习更是借着深度学习的大潮,在各个领域扩展到了极致(例如人脸识别领域等,均可用元学习来加以强化 cross domain 的性能)。

15.1 元学习 (Meta Learing):Learning To Learn

  在现有的机器学习中,我们往往会使用某个场景的大量数据来训练模型,训练出的模型仅适用于这一个场景。当场景发生改变时,我们就需要重新设计模型重新训练参数。但是对于人类而言,一个小朋友成长的过程中会见过许多物体的照片,某一天,在小朋友认识小鸟以后,当小朋友第一次看到了几张狗勾的照片,就可以很好地对狗勾和小鸟进行区分。学会骑自行车的人可以很快甚至自学学会如何骑电动车…… 那么有没有可能让机器学习模型也具有相似的性质呢?如何才能让模型仅仅用少量的数据就学会新的概念和技能呢?换句话说,如何让模型能够自己学会如何学习呢?这就是元学习要解决的问题。

  元学习(Meta Learning),含义为学会学习,即 learn to learn ,带着学会人类的“学习能力”的期望而诞生的新型机器学习方法。Meta Learning 希望使得模型获取“学会学习”的能力,也可以理解为学会自己调参的能力。在接触到没见过的任务或者迁移到新环境中时,可以根据之前学习到的经验知识和少量的新样本的已有“知识”的基础上快速学习如何应对。元学习能解决的任务可以是任意一类定义好的机器学习任务,如监督学习,强化学习等。例如:

  • 让 Alphago 迅速学会下象棋;
  • 让一个猫猫图片分类器,在仅看过少量狗勾的图片以后,迅速具有分类猫狗图片的能力;

  我们期望好的元学习模型能够具备强大的适应能力泛化能力。在模型进行测试之前,模型会先经过一个自适应环节(Adaptation Process),即根据少量样本学习任务。经过自适应后,模型即可完成新的任务。自适应本质上来说就是一个短暂的学习过程,这就是为什么元学习也被称作“学会”学习。

需要注意的是,虽然元学习同样有“预训练”的思想,但是元学习的内核会有别于迁移学习(Transfer Learning),我们将在下文进行详细探讨。

元学习目前有三种常见的实现方法:

  1. 训练以快速学习为目标的模型(基于优化的方法);
  2. 学习有效的距离度量方式(基于度量的方法);
  3. 使用带有显式或隐式记忆储存的(循环)神经网络(基于模型的方法)。

为了让大家更容易理解,我们尝试通过对比已经熟知的机器学习与元学习这两个概念的要素来加深理解:

方法目的输入函数输出训练流程
Machine Learing通过训练数据,学习输入 x x x 与输出 y y y 之间的映射,找到函数 f f f x x x f f f y y y1. 初始化 f f f​ 参数
2. 输入训练数据 < x , y > <x,y> <x,y>
3. 计算损失函数,优化 f f f​ 参数
4. 最终得到 y = f ( x ) y=f(x) y=f(x)
Meta Learing通过大量训练任务 T T T​ 以及每个训练任务对应的训练数据 D D D​,找到函数 F F F​, F F F​ 可以输出一个可用于新任务的函数 f f f大量训练任务 T T T 及其对应的训练数据 D D D F F F f f f1. 初始化 F F F 参数
2. 输入大量训练任务 T T T 及其对应的训练数据 D D D
3. 得到 f = F ∗ f=F^* f=F
4. 在新任务中 y = f ( x ) y=f(x) y=f(x)

  我们知道在机器学习中,训练单位是一条数据,通过数据来对模型进行参数优化。数据分为训练集、测试集和验证集。而在元学习中,训练单位分层,第一层训练单位是任务,即训练元学习需要准备许多不同的任务来进行学习,第二层训练单位才是每个任务所对应的数据。 二者的目的都是找一个 Function \\textFunction Function,只是两个 Function \\textFunction Function 的功能和目的均不相同。机器学习中的 Function \\textFunction Function 直接作用于数据的特征与标签,寻找特征与标签之间的关联。而元学习中的 Function \\textFunction Function 是用于寻找适用于新任务的 Function : f \\textFunction:f Function:f f f f 才会作用于具体任务的本身,也即训练模型自己学习、自己解决问题。


图 15.1 火热的元学习

15.2 元学习名词解释

典型的元学习技术包括以下几个概念:

  • Task: 元学习通常将训练数据切分成一个个小的数据子集来训练 meta-learner。“task”的意思与多任务学习的“task”不同,是指元学习训练所使用的数据子集。
  • Support set & query set: 每个 task 分成 support set 和 query set 两个子集。Support set 对应于算法中的内部更新,query set 对应于算法中的外部更新。
  • Way: 是 class(类别)的别称。
  • Shot: 指的是每个类别的样本数量。例如:1-shot 指的并不是一共只有一个数据样本,而是每个类有 1 个样本。

图15.2 中展示了一个典型的 K-shot 的元学习方法的一般套路,其训练阶段的数据和测试阶段的数据包含不同的类别,而训练的每个 task 又被切分成 support set 和 query set 。并且在测试的时候,元学习同样是在 task 上面测,每个 task 测出的准确率,汇总求和后求整体的均值。


图 15.2 一个典型的元学习将数据切分成 task 训练,而每个 task 包含的 5 个分类不同,1-shot 是指每个分类只有一个样本。

15.3 元学习问题定义

15.3.1 元学习形式化

           \\,\\,\\,\\,\\,\\,\\,\\,\\,\\, 元学习本身很难定义,它已经以各种不一致的方式被广泛使用,甚至在当前的神经网络文献中也是如此。因此这里引用最新元学习综述 Meta-Learning in Neural Networks: A Survey [19] 的定义,介绍一种特定的定义和关键术语,旨在帮助理解大量文献。

❑ ❑ 传统的机器学习

           \\,\\,\\,\\,\\,\\,\\,\\,\\,\\, 我们知道在传统的监督机器学习中,有训练数据集 D = ( x 1 , y 1 ) , … , ( x N , y N ) \\mathcal D = \\(x_1, y_1),…,(x_N, y_N)\\ D=(x1,y1)(xN,yN),如 (输入图像,输出标签) 对。我们可以训练一个预测模型 y ^ = f θ ( x ) \\haty=f_\\theta \\left ( x \\right ) y^=fθ(x) 参数化 θ θ θ ,通过求解:
θ ∗ = arg ⁡ min ⁡ θ L ( D ; θ , ω ) \\theta^*=\\arg \\min _\\theta \\mathcalL(\\mathcalD ; \\theta, \\omega) θ=argθminL(D;θ,ω)
其中 L \\mathcal L L 是用于测量真实标签与 f θ ( ⋅ ) f_\\theta(\\cdot) fθ() 预测的标签之间的误差的损失函数。 通过评估具有已知标签的多个测试点来测量泛化能力。传统的机器学习假设是这种优化是针对每个问题 D \\mathcal D D 从头开始执行的; 并且 ω \\omega ω 是预先指定的。 然而, ω \\omega ω 的规范会极大地影响性能指标,如准确性或数据效率。元学习试图通过学习学习算法本身来改进这些指标,而不是假设它是预先指定和固定的。 这通常是通过重新审视上述第一个假设并从任务分布中学习而不是从头开始来实现的。

❑ ❑ 元学习:任务分配观 我们前面说过元学习旨在通过学习“如何学习”来提高效果。具体来说,元学习的普遍思想是学习一种通用的学习算法,它可以跨任务进行泛化,理想情况下可以使每个新任务都比上一个任务学习得更好。我们在这里先简单地将任务 T \\mathcal T T​ 定义为数据集 D \\mathcal D D​ 和损失函数 L \\mathcal L L​: T = D , L \\mathcal T = \\\\mathcal D,\\mathcal L\\ T=D,L​,数据集中包括特征向量 x x x​ 和标签 y y y​ ,任务分布表示为 p ( T ) p(\\mathcalT) p(T)​ 。则学习如何学习的学习目标可以表示为:
min ⁡ ω E T ∼ p ( T ) L ( D ; ω ) \\min _\\omega \\underset\\mathcalT \\sim p(\\mathcalT)\\mathbbE \\mathcalL(\\mathcalD ; \\omega) ωminTp(T)EL(D;ω)
其中 L ( D ; ω ) \\mathcal L(\\mathcal D;\\omega) L(D;ω) 为用于测量在数据集 D \\mathcal D D 上使用 ω \\omega ω 训练的模型的性能的损失函数。“如何学习”的知识(参数) ω ω ω 通常被称作跨任务知识 (across-task knowledge) 或元知识 (meta-knowledge)。 简而言之,我们希望能够学到一个通用的参数 meta-knowledge: ω \\omega ω,使得不同的 task 的 L \\mathcal L L 损失函数都越小越好。

           \\,\\,\\,\\,\\,\\,\\,\\,\\,\\, 为了在实际中解决这个问题,我们通常假设访问一组从 p ( T ) p(\\mathcalT) p(T) 中抽取的源任务,并用这些源任务学习 ω ω ω

           \\,\\,\\,\\,\\,\\,\\,\\,\\,\\, 类似于传统的机器学习,meta learning 同样分为 Meta-train 和 Meta-test 两个阶段。形式上,我们将 Meta-train 阶段使用的使用的 M M M 个源任务 (source tasks) 集表示为 D source = ( D source  train  , D source  val 

以上是关于元学习详解 (上)万字中文综述的主要内容,如果未能解决你的问题,请参考以下文章

元学习详解 (上)万字中文综述

元学习详解 (上)万字中文综述

万字长文综述目标检测领域,你要的都在这里

万字解读:预训练模型最新综述!

港中文最新《多模态元学习》综述

小曾带你深入浅出机器学习(小白入门必备,近3万字带你了解机器学习)