Meta-Learning via Learned Loss (ML³) 论文总结
原文标题: Meta-Learning via Learned Loss 原文链接: arXiv:1906.05374 作者: Sarah Bechtle, Artem Molchanov, Yevgen Chebotar, Edward Grefenstette, Ludovic Righetti, Gaurav Sukhatme, Franziska Meier
摘要 (Abstract)
传统的机器学习模型训练中,损失函数(Loss Functions)和正则化机制通常是从有限的选项中通过启发式方法选择的。本文迈出了自动化这一过程的第一步,提出了一种通过元学习(Meta-Learning)来学习参数化损失函数的方法。 - 核心思想:开发一个“元训练”(Meta-Training)管道,学习一种能最大化模型性能的损失函数。 - 效果:该方法产生的损失地形(Loss Landscape)在监督学习和强化学习任务中均显著优于原始的任务特定损失,能使模型训练更快、更鲁棒。 - 灵活性:框架允许在元训练(Meta-Train)阶段引入额外信息来塑造损失函数,而这些信息在元测试(Meta-Test)阶段(即实际应用时)不需要提供。
I. 引言 (Introduction)
元学习(Learning to Learn)旨在让机器像人类一样快速适应新任务。本文关注元学习的第二类方法:学习如何优化模型(Learning how to optimize)。 - 目标:编码一种学习策略到一个参数化的损失函数(称为 Meta-Loss)中,使其能跨不同的训练上下文或任务进行泛化。 - 与逆强化学习(IRL)的联系:受IRL启发,但结合了元学习的范式。 - 框架总览(见 Fig. 1): - 内层循环(Inner Loop):使用学习到的 Meta-Loss 更新优化对象(Optimizee,如分类器、回归器或策略)。 - 外层循环(Outer Loop):通过最小化由更新后的优化对象产生的任务损失(Task-Loss),来优化 Meta-Loss 本身。
图 1 (Fig. 1) 概念:学习到的 Meta-Loss 提供学习信号来优化 $f_\theta$,外层循环则根据 $f_\theta$ 在任务上的表现来更新 Meta-Loss。
II. 相关工作 (Related Work)
基于梯度的元学习通常遵循以下更新规则: $$ \theta_{\text{new}} = h_{\psi}(\theta, \nabla_{\theta} \mathcal{L}_{\phi}(y, f_{\theta}(x))) $$ 现有工作主要分为三类: 1. 学习模型参数 $\theta$:如 MAML,学习易于适应新任务的初始化参数。 2. 学习优化器策略 $h$:学习如何通过梯度更新参数(如 RNN 优化器)。 3. 学习损失/奖励函数表示 $\phi$:本文属于此类。旨在学习独立于优化对象参数 $\theta$ 的损失函数参数 $\phi$。
区别: - 与 IRL 不同,不需要专家演示(虽然可以集成),而是利用任务损失作为衡量标准。 - 与进化策略(Evolutionary Approaches)不同,本文提出了一个完全可微的框架,使用梯度下降进行优化。
III. 通过学习到的损失进行元学习 (Meta-Learning via Learned Loss, ML³)
本节详细介绍 $ML^3$ 框架的数学原理。目标是学习一个参数为 $\phi$ 的 Meta-Loss 函数 $\mathcal{M}_{\phi}$,用于通过梯度下降训练参数为 $\theta$ 的优化对象 $f_{\theta}$。
A. 监督学习中的 ML³ (ML³ for Supervised Learning)
1. 内层更新 (Inner Update): 在内层循环中,我们使用当前的 Meta-Loss $\mathcal{M}_{\phi}$ 来更新模型参数 $\theta$。 - Meta-Loss 输出: $\mathcal{L}_{\text{learned}} = \mathcal{M}_{\phi}(y, f_{\theta}(x))$ - 模型参数更新: 使用梯度下降(或其他优化器) $$ \theta_{\text{new}} = \theta - \alpha \nabla_{\theta} \mathcal{L}_{\text{learned}} $$ 根据链式法则,$\nabla_{\theta} \mathcal{L}_{\text{learned}}$ 可以分解为: $$ \nabla_{\theta} \mathcal{M}_{\phi}(y, f_{\theta}(x)) = \nabla_{f} \mathcal{M}_{\phi}(y, f_{\theta}(x)) \nabla_{\theta} f_{\theta}(x) $$
2. 外层更新 (Outer Update - Meta-Training): 外层循环的目标是更新 $\phi$,使得使用它训练出来的 $\theta_{\text{new}}$ 在任务损失(Task-Loss) $\mathcal{L}_{\mathcal{T}}$(例如 MSE)下表现最好。 - 目标: 最小化 $\mathcal{L}_{\mathcal{T}}(y, f_{\theta_{\text{new}}}(x))$ - 计算 $\phi$ 的梯度: 需要通过 $\theta_{\text{new}}$ 对 $\phi$ 求导。 $$ \nabla_{\phi} \mathcal{L}_{\mathcal{T}} = \nabla_{f} \mathcal{L}_{\mathcal{T}} \cdot \nabla_{\theta_{\text{new}}} f_{\theta_{\text{new}}} \cdot \nabla_{\phi} \theta_{\text{new}} $$ 其中关键项 $\nabla_{\phi} \theta_{\text{new}}$ 展开为: $$ \nabla_{\phi} \theta_{\text{new}} = \nabla_{\phi} [\theta - \alpha \nabla_{\theta} \mathbb{E}[\mathcal{M}_{\phi}(y, f_{\theta}(x))]] $$ 这涉及到二阶导数信息的计算(类似于 MAML 的计算过程),可以通过自动微分框架实现。
算法流程: - 随机初始化 $\phi$。 - 采样任务 $(x, y)$,计算 $\mathcal{L}_{\text{learned}}$。 - 更新模型:$\theta_{\text{new}} \leftarrow \theta - \alpha \nabla_\theta \mathcal{L}_{\text{learned}}$。 - 更新 Meta-Loss:$\phi \leftarrow \phi - \eta \nabla_\phi \mathcal{L}_{\mathcal{T}}(y, f_{\theta_{\text{new}}})$。
B. 强化学习中的 ML³ (ML³ for Reinforcement Learning)
在 RL 中,优化对象变成了策略 $\pi_{\theta}(a|s)$,目标是最大化累积回报。
1. 基于模型的强化学习 (Model-Based RL, MBRL): - 学习一个动态模型 $P$(Dynamics Model)。 - 策略更新: 使用 Meta-Loss $\mathcal{M}_{\phi}(\tau, g)$,其中 $\tau$ 是轨迹,$g$ 是目标。 $$ \theta_{\text{new}} = \theta - \alpha \nabla_{\theta} [\mathcal{M}_{\phi}(\tau, g)] $$ - Meta-Loss 更新: 任务损失定义为在当前动态模型 $P$ 下的预期奖励。 $$ \mathcal{L}_{\mathcal{T}}(g, \pi_{\theta_{\text{new}}}) = -\mathbb{E}_{\pi_{\theta_{\text{new}}}, P}[R_g(\tau_{\text{new}})] $$ 计算梯度时需要通过学习到的动态模型 $P$ 进行反向传播。
2. 无模型强化学习 (Model-Free RL, MFRL): - 不学习动态模型,无法直接微分环境。 - 任务损失: 使用替代目标(Surrogate Objective),如 REINFORCE 或 PPO 的目标函数,作为 $\mathcal{L}_{\mathcal{T}}$。 $$ \mathcal{L}_{\mathcal{T}}(g, \pi_{\theta_{\text{new}}}) \approx -\mathbb{E}_{\pi_{\theta_{\text{new}}}} [R_g(\tau_{\text{new}}) \sum \log \pi_{\theta_{\text{new}}}(a_t|s_t)] $$ - Meta-Loss 输入: 状态 $s$,动作 $a$,策略概率 $\pi(a|s)$,目标 $g$。即 $\mathcal{M}^{\phi}(s, a, \pi_{\theta}(a|s), g)$。 - 允许使用 SGD 优化高维策略,即使任务信号仅是轨迹回报。
C. 通过添加额外损失信息塑造 ML³ (Shaping ML³ loss)
这是该框架的一大亮点。在 Meta-Train 阶段,我们可以修改任务损失 $\mathcal{L}_{\mathcal{T}}$ 来引入额外信息(Extra Info),从而“塑造”(Shape)Meta-Loss 的地形。
$$ \mathcal{L}_{\mathcal{T}} = \beta \mathcal{L}_{\text{standard}} + \gamma \mathcal{L}_{\text{extra}} $$
应用场景: 1. 凸化优化问题: 在 $\mathcal{L}_{\text{extra}}$ 中加入参数距离 $( \theta - \theta^* )^2$,引导学习到的 Loss 具有更好的凸性。 2. 物理先验: 在机器人动力学学习中,利用仿真器提供的真实物理参数(如惯性矩阵)作为监督信号。 3. 探索行为: 在 RL 中加入额外的奖励项鼓励探索。 4. 专家演示: 使用行为克隆(Behavioral Cloning)目标作为 Meta-Train 的任务损失。
IV. 实验 (Experiments)
实验分为两部分:一是验证学习到的 Meta-Loss 能否模仿并超越标准损失;二是验证“塑造损失”(Shaping Loss)的效果。
A. 学习模仿并改进已知任务损失
验证 Meta-Loss 在回归、分类和 RL 任务中的表现。 1. 监督学习 (Fig. 2): - 正弦波回归和数字二分类。 - 结果:Meta-Loss 在 Meta-Train 任务上收敛更快,且能泛化到未见过的 Meta-Test 任务上,性能优于直接使用 MSE 或交叉熵损失。 2. 基于模型的 RL (Fig. 3): - 任务:PointmassGoal(点质量移动)和 ReacherGoal(机械臂)。 - 结果:Meta-Loss 能够泛化(例如从右象限训练泛化到左象限测试),并且显著加快了学习速度。 3. 无模型 RL (Fig. 4): - 任务:ReacherGoal 和 AntGoal(蚂蚁机器人)。 - 结果:相比 PPO,ML³ 大幅提高了样本效率(快5倍)。 - 跨架构泛化:在一个架构上训练的 Meta-Loss 可以直接用于优化具有不同层数的其他架构 (Fig. 4 c+d)。
B. 通过额外信息塑造损失地形 (Shaping loss landscapes)
- 正弦频率回归 (Fig. 5 a-b):
- 问题:标准 MSE 损失在该问题上是非凸的,容易陷入局部极小值。
- 方法:Meta-Train 时加入参数距离惩罚。
- 结果:学习到的 Meta-Loss 呈现出凸函数的形状(Fig. 5a top),使得优化过程即使在测试时没有额外信息也能避免局部最优。
- 逆动力学学习 (Fig. 5 c-d):
- 任务:Reacher 和 Sawyer 机械臂。
- 方法:利用仿真器的 Ground Truth 惯性矩阵作为物理先验。
- 结果:引入物理先验的 Meta-Loss 在预测准确性上优于普通 Meta-Loss 和 MSE。
- 中间目标状态 (Fig. 6 a-b):
- 任务:MountainCar(山地车),需要探索才能上坡。
- 方法:Meta-Train 时提供中间目标点。
- 结果:学习到的 Loss 鼓励了探索行为,成功解决了传统方法难以解决的问题。
- 专家演示 (Fig. 6 c-d):
- 任务:ReacherGoal。
- 方法:Meta-Train 时使用专家轨迹(iLQR 生成)进行行为克隆。
- 结果:在 Meta-Test 时(无专家),Meta-Loss 能指导策略快速达到目标。
V. 结论 (Conclusions)
本文提出了 ML³ 框架,能够完全从数据中元学习损失函数。 1. 优化效率:学习到的 Meta-Loss 表现出良好的条件数,适合梯度下降,显著提升了回归、分类和 RL 任务的收敛速度。 2. 泛化能力:Meta-Loss 能够跨任务、跨模型架构泛化。 3. 信息注入:通过在 Meta-Train 阶段引入额外信息(如专家演示、物理先验、中间目标),可以塑造损失地形,使其包含探索策略或通过难点,从而在测试时仅凭自身就能指导模型高效学习。