一文看懂Meta Leaaring(元学习)

Posted 啊~小 l i

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文看懂Meta Leaaring(元学习)相关的知识,希望对你有一定的参考价值。

概念

Meta Learning(元学习)或者叫做 Learning to Learn(学会学习)已经成为继 Reinforcement Learning(增强学习)之后又一个重要的研究分支(以后仅称为 Meta Learning)。对于人工智能的理论研究,呈现出了Artificial Intelligence --> Machine Learning --> Deep Learning --> Deep Reinforcement Learning --> Deep Meta Learning这样的趋势。
meta-learning 也叫 learning to learn,就是学会学习,其实想法很早就有了,大概上世纪 90 年代,因为 人工智能要普世,学会学习是一个很有魅力的方向,以及主动学习终生学习等

分类

现在大致的元学习可以分为 4 类:

  • 基于优化的:其中最火的就是 MAML,还有之前的 Meta-LSTM 等等。
  • 基于度量的:包括原型网络,孪生网络,匹配网络,关系网络。
  • 基于模型的:利用 RNN 网络和外部存储来实现“记忆”
  • 基于 GNN

few-shot classification的目标是,在小规模的support set上“快速学习”(类似fine-tuning)后,能够减少在prediction set上的预测误差。 为了训练模型快速学习的能力,我们在训练的时候按照以下步骤:

  1. 采样一个标签的子集,
  2. 根据采样的标签子集,采样一个support set [Math Processing Error] 和一个training batch [Math Processing Error] 。 [Math Processing Error] 和 [Math Processing Error] 中的数据的标签都属于 [Math Processing Error] ,即 [Math Processing Error] .
    把support set作为模型的输入,进行“快速学习”。注意,不同的算法具有不同的学习策略,但总的来说,这一步不会永久性更新模型参数。
    把prediction set作为模型的输入,计算模型在 [Math Processing Error] 上的loss,根据这个loss进行反向传播更新模型参数。这一步与监督学习一致。

与传统机器学习的区别

  • 传统机器学习:首先拿一个训练集去训练模型,模型学习好之后,可以拿来做预测,测试集不会出现在训练集里面,但是测试集的类别会出现在训练集里面。
  • 元学习:Query Sample没有出现在训练集里面,但是support Set里面含有该名称的图片,通过Support Set对比Query Sample来实现分类


机器学习的方法可以简单理解为三步:

  • 找到一个f的集合 。
  • 找到一个判别f的方法(loss function)。
  • 在这个集合中寻找最好的f。

meta learning的方法也是三步:

  • 找到一个learning algorithm的集合。
  • 之后寻找到一个判别learning algorithm好坏的方法 。
  • 最后得到一个最好的learning algorithm做为F。

optimization based meta-learning

文章开头提到 meta-learning 的研究共有四个方向,第一个方向就是 optimization based meta-learning,而 MAML 是这个方向的开山之作,所以要想知道 MAML 是怎么做的,首先要知道这个方向是如何实现 metalearning 的。

思考一下,我们平时普通 learn 的模式是怎样训练模型的?以 DNN 网络模型为例,首先是搭建一个网络模型,接着对模型中每层的参数进行初始化,然后不断的进行“前向计算 loss -> 反向传播更新参数”的过程,直到 loss 收敛。这个过程中,模型初始时对当前数据是一无所知的,所以要通过随机初始化的方式对参数进行赋值,尽管用多种初始化方式,但总归都是随机的。那么有没有方法可以让模型从一个给定的位置开始训练呢,并且这个初始位置给的好的话,比如就在全局最优解附近,可能只需要迭代几次模型就收敛了。答案是肯定的,这个方向的 metaleaning 就是来做这个事情的。简单总结下就是 optimization based meta-learning 是通过之前大量的相似任务的学习,给网络模型学习到一组不错的/有潜力的/比较万金油的参数,使用这组参数作为初始值,在特定任务上进行训练,只需要微调几次就可以在当前的新任务上收敛了 ,这句话有几个值得注意的地方或者使用要求:

  • 相似任务:并不是随便找一个数据就可以拿来进行训练。
  • 共用一个网络模型:我们的最终目的是使用 DNN 模型在任务 A 上进行训练,为了避免随机初始化的方式,故而采用 meta learning 方式,对这个 DNN 模型先进行预训练,这个预训练的过程就是 meta 训练,其结果是得到- 一组不错的 DNN 参数,然后在任务A上进行微调。所以从始至终,就只有一个相同的 DNN 模型。
  • 特定任务:这个特定任务是我们实际关心的任务,也是 meta 的推理任务,所以要和 meta 训练阶段的大量任务具有一定的相似性,如果差异性太大,那么 meta 学到的这组参数可能不起作用甚至还不如随机初始化的参数。

未完结版。。。。

以上是关于一文看懂Meta Leaaring(元学习)的主要内容,如果未能解决你的问题,请参考以下文章

Meta-learning原来有这么多用途,一文汇总元学习在5个问题中的应用

Meta Learning(元学习)详解

Meta Learning(元学习)详解

Meta Learning(元学习)详解

卡耐基梅隆大学(CMU)元学习和元强化学习课程 | Elements of Meta-Learning

卡耐基梅隆大学(CMU)元学习和元强化学习课程 | Elements of Meta-Learning