人类是天生的快速学习者。我们通常只需几个例子就能掌握一个新概念——比如给孩子看一张斑马的图片,他们以后即使在完全不同的场景中也能认出斑马。相比之下,深度学习模型虽然在许多基准测试中表现超越人类,却出了名地 “数据饥渴” 。 它们通常需要成千上万甚至数百万个样本才能达到相似的准确率水平。这一差距揭示了人工智能的一个基本挑战: 我们怎样才能构建能够从有限数据中快速高效学习的模型?

这正是元学习 (meta-learning) , 也称“学习如何学习 (learning to learn) ”要解决的问题。元学习不是在单一数据集上针对一个特定任务训练模型,而是在一系列任务的分布上训练模型。目标不是精通单一任务,而是学会如何高效地学习这些任务——发展出可在面对新任务时迅速适应的内部表示。

在众多元学习算法中,最具影响力的之一是模型无关元学习 (Model-Agnostic Meta-Learning, MAML) 。 MAML 寻求一种参数初始化,使得在新任务上的微调既快速又高效。然而,完整的 MAML 算法需要计算二阶导数——一个计算昂贵、技术复杂的过程。

在论文 *《关于一阶元学习算法》 (On First-Order Meta-Learning Algorithms) * (Nichol, Achiam, Schulman,OpenAI,2018) 中,作者们提出了一种更简单、更高效的替代方法: 仅依赖标准梯度的一阶方法。他们分析了一个简化的变体——*一阶 MAML (FOMAML) *,并提出了一种新的算法 Reptile 。 本文将深入探讨他们的工作,展示这些一阶方法如何取得令人瞩目的成果,并揭示它们对学习本质的深刻洞见。


寻找一个良好的起点: MAML

在深入了解 Reptile 之前,先让我们回顾 MAML 的理念——它是多个元学习方法的基础。

MAML 的核心目标是找到一组初始参数 \( \phi \),能让模型在从给定分布中抽样的任何任务上快速学习。可以想象一系列任务,例如不同类别组合的图像分类任务。MAML 优化的目标是使得在每个抽样任务上经过几步梯度更新后,期望损失最小化。

MAML 的目标是找到参数 φ,使其在新任务 τ 上经过 k 次更新后的期望损失最小化。

元学习的目标是最小化从分布中抽样的任务在 \( k \) 次更新后的期望损失。

MAML 的过程通过巧妙的设计来促进泛化 。 对每个抽样任务,算法从任务数据中抽取一个训练集 (A) 和一个测试集 (B) 。网络在 A 上执行若干内循环梯度步骤,然后在 B 上计算元损失。从本质上看,每个任务都包含一个微型的交叉验证过程。

MAML 的目标经过修改以优化泛化能力,使用训练集 A 进行内部更新,测试集 B 用于外部损失计算。

MAML 通过将任务数据划分为训练集 (A) 和测试集 (B),从设计上鼓励模型泛化。

为了优化这个目标,MAML 需要对整个内循环训练过程进行求导。这涉及计算二阶导数——具体来说,是更新算子的雅可比矩阵和海森矩阵。

完整的 MAML 梯度计算涉及更新算子 U’ 的雅可比矩阵,这会导致二阶导数的产生。

完整的 MAML 依赖昂贵的高阶导数,使其功能强大但计算量巨大。

一阶简化: FOMAML

FOMAML 的近似版本通过忽略二阶导数来简化计算——将雅可比矩阵 \( U'_{\tau,A}(\phi) \) 近似为单位矩阵。实际操作流程非常简单:

  1. 从初始化 \( \phi \) 开始;
  2. 在训练数据 A 上执行 \( k \) 次梯度更新,得到 \( \tilde{\phi} = U_{\tau,A}(\phi) \);
  3. 使用 \( \tilde{\phi} \) 计算在测试集 B 上的损失梯度;
  4. 用该梯度更新初始化参数 \( \phi \)。

虽然只是近似,FOMAML 在诸如 Mini-ImageNet 等基准上表现却几乎与完整的 MAML 相当。这个令人惊讶的结果促使研究者进一步探索一阶方法的潜力。


Reptile 登场: 最简的元学习算法

本文的主角 Reptile 将简单性推至极致。这是一个纯一阶元学习算法,看起来很像标准的多任务训练,但其中包含一个微妙的“秘诀”,让它表现出真正的元学习行为。

以下是完整的 Reptile 算法:

Reptile 算法的串行版本伪代码。

Reptile 在抽样任务上重复执行内部优化,并将初始化参数推进到任务优化后的权重方向。

我们来分解一下步骤:

  1. 初始化模型参数 \( \phi \);
  2. 对每个元迭代重复以下步骤:
  • 抽样一个任务 \( \tau \);
  • 从 \( \phi \) 开始,使用 SGD 或 Adam 在该任务上训练 \( k \) 次梯度更新,得到权重 \( \tilde{\phi} \);
  • 更新 \( \phi \leftarrow \phi + \epsilon(\tilde{\phi} - \phi) \),其中 \( \epsilon \) 是元学习步长。

就是这样。Reptile 不需要在任务中划分训练集/测试集,而是直接将 \( \phi \) 向在抽样任务上部分优化后得到的参数靠近。

该方法也可以通过在每次迭代中抽样多个任务并平均它们的更新来实现并行化:

Reptile 算法的批量更新规则。

批量版 Reptile 通过平均多个任务的权重变化来更新共享初始化。

乍看之下,Reptile 与联合训练 (joint training) 十分相似,即单个模型同时在所有任务上训练。事实上,当仅进行一次内部更新 (\( k=1 \)) 时,Reptile 与联合训练完全等价。

当 k=1 时,Reptile 的梯度等同于任务期望损失的梯度,这也就是联合训练。

当仅执行一个内部步骤时,Reptile 等价于跨任务的标准联合优化。

然而,当 \( k > 1 \) 时,情况就大不一样了。多个内部梯度更新能够捕捉每个任务损失面的曲率,从而在不显式计算的情况下引入隐式高阶信息。正是这种“二阶行为的影子”让 Reptile 成为一个真正的元学习算法。


视觉示例: 少样本正弦波回归

为了更直观地理解,我们来看一个简单的示例: 一维正弦波回归。每个任务对应一个随机振幅和相位的正弦波。模型只看 10 个采样点,需要重建整条曲线。

这一设置非常适合元学习,因为所有可能的正弦波 (随机相位) 的平均值是一条平坦曲线 \( f(x)=0 \)。传统的联合训练只会学到这种平凡的零输出。

而元学习则找到一个接近零的初始化,但该初始化编码了内部特征,使模型只需几步梯度更新就能快速适应任意正弦波。

图 1 显示,在训练前,模型输出为零。经过 MAML 或 Reptile 训练后,模型仅用 10 个采样点,在 32 次梯度更新后就能准确拟合新的正弦波。

经过 Reptile 或 MAML 训练后,网络仅需几次更新就能准确拟合新的正弦波,体现了快速适应能力。

在元训练前,随机初始化的网络即使训练 32 步也无法收敛。但经过 Reptile 或 MAML 训练后的初始化,只需相同的步数就能几乎完美地拟合。网络真正学会了如何学习正弦波。


Reptile 为何有效?两种互补视角

1. 隐含的二阶效应

第一个解释来自泰勒展开分析。尽管 Reptile 只用一阶梯度,其更新隐式包含一个二阶效应——与 MAML 的显式高阶项类似。

跨任务的期望梯度更新可分解为两部分:

AvgGrad 项的定义。

AvgGrad : 跨任务期望损失的梯度 (联合训练成分) 。

第二项如下:

AvgGradInner 项的定义与推导。

AvgGradInner : 元学习成分,用于最大化同一任务不同批次梯度方向的一致性。

AvgGradInner 项鼓励任务内泛化。如果同一任务的不同小批量梯度方向一致,那么从一个批量学习将改善其他批量的表现。Reptile、MAML 和 FOMAML 在其有效更新动态中都包含这一项。

MAML、FOMAML 和 Reptile 的期望梯度,显示它们都是 AvgGrad 和 AvgGradInner 项的组合。

三种一阶算法都在同时优化联合训练和任务内泛化两个目标。

虽然 MAML 明确强调二阶元学习项,但 Reptile 隐式地包含相同的效应,这也解释了它出色的性能。


2. 几何视角: 靠近所有任务解的点

第二个解释是几何直观的。每个任务 \( \tau \) 都对应一个解流形 \( \mathcal{W}_{\tau} \),即该任务所有最优参数构成的集合。元学习可以看作是寻找一个初始化 \( \phi \),使其在平均意义上靠近所有任务的解流形。

图 2 展示了寻找一个初始化参数 φ 的过程,该参数需要靠近不同任务 (W₁ 和 W₂) 的最优解流形。

元学习的目标是找到一个接近所有任务解流形的初始化。

形式上,目标是最小化到这些流形的期望平方距离:

最小化到解流形的期望平方距离的目标函数。

Reptile 间接最小化了初始化与各任务解流形之间的平均平方距离。

对该目标执行一次梯度下降步骤,会将 \( \phi \) 轻微地推向其在流形上的投影 \( P_{\mathcal{W}_{\tau}}(\phi) \):

在距离最小化目标上进行的一步随机梯度下降。

Reptile 通过部分任务优化来近似投影,从而实现几何上的更新。

由于 \( P_{\mathcal{W}_{\tau}}(\phi) \) 无法精确计算,Reptile 用执行若干步任务内的 SGD 得到的参数 \( \tilde{\phi} \) 来近似该投影,并将 \( \phi \) 向 \( \tilde{\phi} \) 方向移动。换言之,Reptile 执行的是对隐式“与任务最优解的距离”目标的随机梯度下降——这就是“学习如何学习”的几何解释。


实证验证: 实验与结果

作者在两个标准的少样本分类基准上评估了 Reptile、MAML 和 FOMAML: OmniglotMini-ImageNet 。 这两个数据集广泛用于测试算法在有限样本条件下的学习能力。

少样本分类性能

三种算法都表现强劲。根据数据集不同,Reptile 的性能有时优于其他算法。

表 1 显示了在 Mini-ImageNet 数据集上的少样本分类结果。Reptile 的表现略优于 MAML 和 FOMAML。

在 Mini-ImageNet 上,Reptile 的性能略高于 MAML 和 FOMAML。

表 2 显示了在 Omniglot 数据集上的少样本分类结果。MAML 表现最佳,但 Reptile 仍然具有竞争力。

在 Omniglot 上,MAML 表现略好,但 Reptile 仍相当具有竞争力。

所有方法在*直推式 (transductive) *设置下 (即同一任务的所有测试样本同时处理) 性能均提升,这表明共享的批归一化统计有助于整体表现。


消融实验: 是什么驱动了元学习?

论文进一步探讨了改变内循环梯度组合的影响。每个内循环从不同小批量计算梯度 \( g_1, g_2, g_3, g_4 \)。若使用它们的和类似 Reptile;只使用最后一个则类似 FOMAML。

图 3 显示了在 Omniglot 数据集上,不同内循环梯度组合的学习曲线。

结合更多内循环梯度能显著提升少样本学习性能。

结果表明:

  • 仅使用 \( g_1 \) (联合训练) 表现最差;
  • 使用 \( g_2 \) (FOMAML) 表现良好;
  • 随着内循环步数增加,叠加或平均多个梯度 (Reptile 风格) 表现最佳。

另一项研究考察了内循环中小批量之间的重叠效应 。 当 FOMAML 的元梯度来自与先前批量部分重叠的数据 (称为共享尾部 FOMAML) 时,性能下降。而 Reptile 与分离尾部 FOMAML (使用不相交数据集) 则保持稳定。

图 4b 显示了性能如何随内部批量大小的变化而变化。随着批量大小的增加,“共享尾部”的 FOMAML 性能下降,而 Reptile 和“分离尾部”的 FOMAML 保持稳健。

内循环批量重叠会降低 FOMAML 性能,而对 Reptile 影响不大,显示了其强健的任务抽样鲁棒性。


结论: 简单的力量

*《关于一阶元学习算法》*为基于梯度的元学习提供了有力的论证。通过提出 Reptile , 作者展示了仅需标准一阶更新的算法也能在少样本学习任务中取得最前沿的性能。

它成功的两个关键洞见是:

  1. 泰勒展开视角: 在每个任务上执行多步梯度更新,隐式地引入类似 MAML 的二阶效应,促进任务内泛化。
  2. 几何视角: Reptile 执行的是在各任务解流形间最小化距离的随机梯度下降。

更深层的启示是,即使是普通的随机梯度下降 (SGD) 也自然促进不同小批量之间的泛化。这解释了为何对高度预训练模型 (如在 ImageNet 上预训练的网络) 进行微调效果如此之好。通过不断适应各异的 mini-batch,SGD 本身就学会了快速适应

最终,Reptile 不仅是一个聪明的算法,更是一种洞察工具——揭示了我们日常使用的优化方法中隐藏的元学习特性。它提醒我们,有时最简单的技巧往往蕴藏着最强大的学习力量。