OpenAI Reptile:可扩展的元学习算法

Reptile 的工作原理

Reptile 是一种一阶元学习算法,学习一个初始参数向量 $\Phi$,该向量可以高效地适应从分布中抽样的任何任务。该算法遵循以下特定的迭代过程:

  1. 任务采样:从任务分布中随机抽取一个任务 $T$。
  2. 内部循环优化:以当前参数 $\Phi$ 为起点,模型在任务 $T$ 上执行 $k$ 步随机梯度下降(SGD),得到新的参数 $W$。
  3. 元更新:使用公式 $\Phi \leftarrow \Phi + \epsilon (W - \Phi)$ 将初始参数 $\Phi$ 向 $W$ 移动,从而更新参数。

虽然该更新可以使用简单的 SGD 完成,但来源指出 $\Phi - W$ 可以视为梯度并整合到更复杂的优化器(如 Adam)中。

技术分析与泛化

Reptile 需要 $k > 1$ 步的 SGD 才能发挥作用。如果 $k = 1$,算法会退化为“联合训练”,在零样本学习不可行的情况下(例如输出标签被随机置换时)往往会失败。

通过泰勒级数近似分析更新,OpenAI 研究人员发现 Reptile 的更新最大化了同一任务不同小批量梯度之间的内积。该机制与提升泛化能力相关,并可能对理解 SGD 在元学习之外的一般性质产生启示。

性能与 MAML 的比较

在少样本分类基准测试中,特别是 Omniglot 和 Mini-ImageNet 数据集上,Reptile 展示了与模型无关元学习(MAML)相似的性能。然而,Reptile 具有若干优势:

  • 收敛速度:由于更新方差更低,Reptile 收敛到解的速度快于 MAML。
  • 算法关系:分析表明 Reptile 与 MAML 执行非常相似的更新,由相同的两项组成,只是权重不同。

方差降低与元梯度

OpenAI 对该算法的分析表明,使用不同组合的 SGD 梯度可以产生多种元学习算法。研究强调,包含更多梯度(例如 $g_2, g_3, \ldots, g_k$)能够通过降低方差实现更快的学习。

相反,仅使用第一梯度 $g_1$(相当于 $k = 1$)在零样本性能无法提升的任务上不会取得进展,这验证了理论预测:有效的元学习需要多步内部循环优化。

Sources