Meta-learning, also known as “learning to learn”

元学习,也被称为“learning to learn”

旨在通过一些训练实例来设计能够快速学习新技能或适应新环境的模型。有三种常见的方法:

  1. 学习一个有效的距离度量(Metric-Based);
  2. 利用外部或内部记忆(基于模型)的(递归)网络(Model-Based);
  3. 明确优化模型参数,实现快速学习(optimization-Based)。

一个好的机器学习模型通常需要大量样本的训练。相比之下,人类学习新概念和新技能的速度和效率要快得多。只见过几次猫和鸟的孩子很快就能把它们区别开来。知道如何骑自行车的人可能会快速掌握骑摩托车的方式。是否有可能设计一个具有类似性质的机器学习模型——通过一些训练示例快速学习新概念和技能?这就是元学习的本质目的。

我们期望一个好的元学习模型能够很好地适应或概括在训练期间从未遇到过的新任务和新环境。适应过程,本质上是一个小型的学习过程,发生在测试期间,但对新任务的了解是有限的。最终,经过调整的模型可以完成新的任务。这就是为什么元学习也被称为学习的学习(learning to learn)。

元学习任务可以是任何定义明确的机器学习问题:监督学习(Supervised learning),强化学习(Reinforcement learning),等等。例如,以下是一些具体的元学习任务:

  • 在非猫图像上训练的分类器可以在看到一些猫的图片后判断给定的图像是否包含一只猫。
  • 游戏机器人能够快速掌握一款新游戏。
  • 在测试过程中,一个微型机器人在一个上坡的表面完成了所需的任务,即使它只是在一个平坦的表面环境中训练。

定义元学习问题

概览

一个好的元学习模型应该在各种学习任务上进行训练,并对任务的分配(包括潜在的不可见任务)进行优化以获得最佳性能。每个任务都与一个数据集$\mathcal{D}$相关联,该数据集包含特征向量和真实标签。最优模型参数为:

它看起来很像一个普通的学习任务,但一个数据集被认为是一个数据样本。

小样本学习是元学习在监督学习领域的一个实例。数据集$\mathcal{D}$通常分为两部分:用于学习的支持集$S$(Support Set)和用于训练或测试的预测集$Q$(Query Set),$\mathcal{D}=\langle S, Q\rangle$。我们通常考虑一个N-class K-shot分类任务: 支持集包含N个类,其中的每个类有K个样本。

Crepe Fig. 1. An example of 4-shot 2-class image classification.

测试与训练方式一致

数据集$\mathcal{D}$包含成对对特征向量和标签

$\mathcal{D} = {(\mathbf{x}_i, y_i)}$

每个标签属于一个已知标签集$\mathcal{L}$,带有参数$\theta$的分类器$f_\theta$会输出一个给定数据点$\mathbf{x}$属于类别$y$的概率$P_\theta(y\vert\mathbf{x})$

可优化参数应该在多批次训练(multiple training batches)$B$中最大化真实样本的概率,其中$B\subset \mathcal{D}$。

在小样本学习的目标是“快速学习”(fast learning)样本数量较少支持集,减少在未知标签中的预测误差。为了使训练过程模拟推理过程中发生的事情,我们想要“伪造”标签子集的数据集,以避免将所有标签暴露给模型,并相应地修改优化过程,以鼓励快速学习:

  1. 对标签集采样得到$L\subset \mathcal{L}$
  2. 对支持集采样得到$S^L \subset \mathcal{D}$并对数据集分批次$B^L \subset \mathcal{D}$。支持集和小批次数据集都仅仅包含有标签$y \in L$的数据点,$\forall (x, y) \in S^L, B^L$
  3. 支持集是模型输入的一部分
  4. 最终优化器使用小批次数据$B^L$计算损失值并通过反向传播更新模型参数,这与我们在监督学习中对做法相同。