训练一个大型神经网络有时感觉像是在炼金术。除了设计网络架构本身,你还要面对一大堆超参数——学习率、正则化强度、优化器动量等等,数不胜数。找到合适的平衡点通常是一个痛苦的反复试验过程。
但如果我们能教会模型自动调整这些超参数呢?
这正是元学习 (meta-learning) 的目标——它是机器学习中一个专注于“学会学习”的分支。通过将超参数视为可学习的“元参数”,我们可以利用基于梯度的优化来自动发现最优设置,而不必手动搜索。然而,大多数现有的基于梯度的元学习方法计算代价高昂。它们依赖于二阶导数 , 这需要大量内存并显著减慢训练速度,从而使其在现代深度架构中不切实际。
在 NeurIPS 2021 上发表的论文 “EvoGrad: Efficient Gradient-Based Meta-Learning and Hyperparameter Optimization” 提出了一个令人惊讶的简单思路。作者 Ondrej Bohdal、Yongxin Yang 和 Timothy Hospedales 提出了一种名为 EvoGrad 的元学习方法,它借鉴了进化优化的思想,完全避开了二阶导数的计算。结果就是: 一种更快、更轻量、更易扩展的元学习方法。
在本文中,我们将剖析 EvoGrad 背后的核心直觉,逐步讲解其受进化启发的更新机制,并探讨其在不同实际机器学习挑战中的表现。
挑战: 作为双层优化博弈的元学习
元学习问题可以被表述为双层优化 (bilevel optimization) : 两个相互依赖、同时进行的循环。
- 内循环 (Inner Loop) — 标准的模型训练。给定一组超参数 \( \boldsymbol{\lambda} \),模型参数 \( \boldsymbol{\theta} \) 被优化以最小化训练损失 \( \ell_T \)。
- 外循环 (Outer Loop) — 元学习步骤。我们优化超参数本身,使得当训练完成后,模型在验证集上的损失 \( \ell_V \) 最小。
我们要寻找使模型完成学习后验证损失最小化的超参数 \( \boldsymbol{\lambda}^* \)。

图 1: 作为双层优化的元学习: 外循环 (元参数) 监督内循环 (模型参数) 的训练。
为了通过梯度下降更新这些超参数,我们需要计算超梯度 (hypergradient) ——验证损失相对于 \( \boldsymbol{\lambda} \) 的梯度:
[ \frac{\partial \ell_V^(\boldsymbol{\lambda})}{\partial \boldsymbol{\lambda}} = \frac{\partial \ell_V(\boldsymbol{\lambda}, \boldsymbol{\theta}^(\boldsymbol{\lambda}))}{\partial \boldsymbol{\lambda}}
- \frac{\partial \ell_V(\boldsymbol{\lambda}, \boldsymbol{\theta}^(\boldsymbol{\lambda}))}{\partial \boldsymbol{\theta}^(\boldsymbol{\lambda})} \frac{\partial \boldsymbol{\theta}^*(\boldsymbol{\lambda})}{\partial \boldsymbol{\lambda}} ]

图 2: 超梯度通过模型参数展开——它们是超参数影响验证损失的媒介。
瓶颈在于最后一项 \( \frac{\partial \boldsymbol{\theta}^*(\boldsymbol{\lambda})}{\partial \boldsymbol{\lambda}} \)。 由于 \( \boldsymbol{\theta}^* \) 是梯度优化的结果,计算该导数意味着要对一个优化步骤进行微分,这需要二阶导数 (如 Hessian) ,计算代价高昂,并且需要扩展的计算图。
传统方法——例如著名的 T1–T2 算法——必须在每次更新时计算这些高阶梯度。结果是巨大的内存消耗,让元学习难以扩展到大型模型。
EvoGrad 解决方案: 进化式的内循环步骤
EvoGrad 的作者提出了一个出人意料的有效变通: 如果我们用进化过程来估计超梯度,而不是通过梯度微分呢?
与其直接计算模型参数在梯度下降下的变化,EvoGrad 设计了一个受进化优化启发的假设性内循环——完全不需要梯度计算。

图 3: 单次 EvoGrad 更新。随机扰动的模型副本相互竞争,形成一个新的加权平均模型,用于估计超梯度。
单次 EvoGrad 更新过程如下:
1. 创建种群
从当前模型参数 \( \boldsymbol{\theta} \) 开始。生成一个包含 \( K \) 个扰动模型的小种群:
\[ \boldsymbol{\theta}_k = \boldsymbol{\theta} + \boldsymbol{\epsilon}_k, \quad \boldsymbol{\epsilon}_k \sim \mathcal{N}(0, \sigma^2 I) \]作者通常使用 K = 2 , 以保持计算开销最低。
2. 评估适应度
每个候选模型 \( \boldsymbol{\theta}_k \) 在训练集上进行评估,得到训练损失 \( \ell_k \)。损失越低,适应度越高。
3. 分配权重
通过对负损失进行 softmax 归一化,将这些损失转换为权重:
\[ w_1, w_2, \dots, w_K = \text{softmax}([-\ell_1, -\ell_2, \dots, -\ell_K]/\tau) \]其中 \( \tau \) 是温度参数,用于控制权重的分化程度。

图 4: 损失越低,权重越高——温度参数 τ 控制敏感度。
4. 形成假设更新
通过加权平均将候选模型组合成一个“后代”模型:
\[ \boldsymbol{\theta}^* = \sum_{k=1}^{K} w_k \boldsymbol{\theta}_k \]
图 5: 新的假设参数集 \( \boldsymbol{\theta}^* \) 是根据扰动模型的相对适应度加权组合得到的。
5. 计算超梯度
最后,在验证数据上评估验证损失 \( \ell_V = f(\mathcal{D}_V | \boldsymbol{\theta}^*) \),并计算其相对于超参数的梯度:
\[ \frac{\partial \ell_V}{\partial \boldsymbol{\lambda}} \]
图 6: EvoGrad 的超梯度——通过在进化“后代” \( \boldsymbol{\theta}^* \) 上计算验证损失得到。
这里的关键洞见是: 由于内循环步骤使用的是随机扰动而非梯度,计算 \( \frac{\partial \ell_V}{\partial \boldsymbol{\lambda}} \) 时只涉及一阶导数。无需二阶项或扩展计算图。实际的模型训练仍采用标准梯度下降,但超梯度估计过程得到极大简化。
为什么重要: 效率的释放
将 EvoGrad 与经典的 T1–T2 算法进行对比,可以清楚看到其效率优势。

图 7: EvoGrad 的超梯度近似避开了 T1–T2 所需的高代价二阶计算。

图 8: EvoGrad 以更低的时间与内存复杂度实现了同等性能。
通过去除二阶梯度计算:
- 内存使用降低,因为计算图更短;
- 运行时间提升,因为避免了昂贵的 Hessian 运算;
- 可扩展性增强,使得在标准 GPU 上进行大规模元学习成为可能。
实验结果: 从玩具问题到真实应用
为验证方法有效性,作者在从玩具示例到视觉和自然语言处理的多种任务上测试了 EvoGrad。
1. 概念验证: 一维超参数优化
EvoGrad 首先在一个简单的一维函数上进行实验,其中真实超梯度可以解析计算。

图 9: 即使估计存在噪声,EvoGrad 也能追踪真实超梯度趋势;更大的种群可降低方差。
即便只有两个候选模型的小种群,EvoGrad 也能正确复现真实梯度趋势。增大种群能进一步平滑估计。
他们还研究了优化轨迹:

图 10: 由 EvoGrad 估计的超梯度引导的优化轨迹与真实超梯度引导的轨迹收敛于相同区域。
使用 EvoGrad 训练的参数收敛到验证集最优,从而验证了其近似超梯度的有效性。
2. 在 MNIST 上学习旋转
接着,EvoGrad 在一个小型视觉任务中进行了测试——学习分类旋转后的 MNIST 数字。 当验证集旋转 30° 时,一个只在正立图像上训练的普通 CNN 表现不佳。EvoGrad 能通过元学习自动学习旋转角度,使模型正确泛化。

图 11: EvoGrad 准确学习了 30° 旋转角度,测试准确率接近未旋转数据的表现。
EvoGrad 成功找出正确的旋转角度,使测试准确率从 82% 提升至近 98%,证明其能学习有意义的超参数。
现实影响: 大规模元学习
验证其在简单任务上的有效性后,EvoGrad 被应用到三个计算密集型的任务中。
1. 跨域小样本学习 (LFT)
学习特征级变换 (Learned Feature-Wise Transformation, LFT) 方法通过正则化小样本学习器提升在域迁移场景下的泛化能力。作者将 LFT 的 T1–T2 优化器替换为 EvoGrad。

图 12: 在四个新数据集上,EvoGrad 的准确率与二阶 LFT 方法相当。
EvoGrad 不仅保持了准确率,还显著减少了时间与内存消耗。

图 13: EvoGrad 的内存与运行时间改进使得在标准 GPU 上从 ResNet10 扩展到 ResNet34 成为可能。
凭借 EvoGrad 的高效性,团队得以将模型从 ResNet-10 扩展至 ResNet-34——这是标准元学习方法所无法实现的飞跃。由此在多个小样本学习基准上取得了新的最优结果。
2. 从噪声标签中学习 (Meta-Weight-Net)
训练数据常常包含错误标签,降低模型性能。 Meta-Weight-Net (MWN) 通过学习一个元网络来为每个样本分配权重。将其二阶优化器替换为 EvoGrad 可获得相同或更佳结果。

图 14: 在噪声标签场景中,EvoGrad 的表现与原方法相当甚至更优。
EvoGrad 将内存使用减半,运行时间缩短约三分之一:

图 15: EvoGrad 在标签噪声实验中相较 T1–T2 展现明显效率提升。
3. 低资源跨语言学习 (MetaXL)
最后,EvoGrad 被用于自然语言处理任务——MetaXL , 该方法提升了高资源与低资源语言之间的跨语言表示迁移。

图 16: 在低资源语言 NER 任务中,EvoGrad 获得更高的平均 F1 分数。

图 17: 在 MetaXL 实验中,EvoGrad 显著加速训练并降低 GPU 内存占用。
在所有八种目标语言上,EvoGrad 都能在更快、更轻的同时保持或超越原方法的准确度——展现出其在视觉任务之外的广泛适用性。
扩展性分析: 效率随模型规模增长
研究者进一步在 Meta-Weight-Net 上分析了可扩展性。随着基础模型从 50 万扩展到 1100 万参数,EvoGrad 的优势愈发显著。

图 18: EvoGrad 的扩展性出色——效率差距随模型规模扩大。
在大型模型中,EvoGrad 的运行速度快了近三倍 , 内存消耗仅为原来的不到一半 。 模型越大,优势越明显——对于现代深度学习任务尤为关键。
核心要点
EvoGrad 为元学习带来了令人耳目一新的新视角:
- 效率: 用简单的进化扰动替代基于梯度的内循环微分,EvoGrad 消除了二阶梯度计算,大幅降低内存与时间成本。
- 性能: 尽管采用近似超梯度,EvoGrad 的准确率始终不逊于传统二阶方法。
- 可扩展性: 轻量化设计让元学习可应用于更大的网络——这在以前的标准 GPU 上几乎不可行。
结论
EvoGrad 在元学习领域架起了理论与实践的桥梁。它证明了受进化思想启发的巧妙近似既能保持精度,又能使大规模元学习成为现实。
有了 EvoGrad,在线调整数千个超参数不再遥不可及——即使是在像 ResNet-34 或基于 Transformer 的 NLP 模型这样的深度架构上。
对于整个社区而言,这不仅是效率上的进步,更是迈向元学习普及化的一步,把“学会学习”的理念带入日常深度学习流程。
正如作者所述,代码已在 GitHub 上开源。EvoGrad 打开了通往更智能、更可扩展的超参数优化之门——一步一个进化的脚步。
](https://deep-paper.org/en/paper/2106.10575/images/cover.png)