NTU ML2023Spring Part2.16 元学习

什么是 meta learning

meta learning: learn to learn.

工业界:大力出奇迹!开 1e3 张 GPU 分别跑不同的参数试试.

学术界:没有大量 GPU,只能凭运气调参.

那么能否用 ML 解决 ML 调参的问题呢?这就是 meta learning.

在之前的部分,我们有一个函数 \(F\),输入一个数据集,输出一个训练好的神经网络(另一个函数 \(f\)).这个 \(F\) 是人手动写出来的,比如网络架构、优化算法等.那么能不能用 ML 的方法得到这个 \(F\) 呢?

其实基本步骤是类似的.

  1. 先看我们想让机器帮我们决定什么:网络架构、初始参数、learning rate 等.就像之前把神经元的 weight 和 bias 记作参数 \(\theta\) 一样,现在可以把这些(让机器决定的)超参数记作 \(\phi\),原来的函数 \(F\) 记作 \(F_\phi\)

  2. 定义 loss 的计算方式.记 \(L(\phi)\) 为 loss.比如要训练一个二元分类的 classifier,就准备一大堆二元分类的任务,然后让 \(F_\phi\) 在某个任务上得到的结果 \(f_\theta\) 在该任务的测试集上跑出 loss.就这样在很多个任务上都算出它们的 loss,然后取平均就可以了.

    为什么这里可以用测试资料算 loss?因为 meta learning 的单位是 task,因此这些任务已经可以算是训练资料,用训练资料里的测试资料(有点绕?应该说是训练任务的测试资料)当然也是可以的.

  3. 优化 loss.

    • 如果能计算出 \(\dfrac{\partial L(\phi)}{\partial \phi}\),那自然很好,直接 gradient descent 就完了.

    • 如果不行,可以考虑用 reinforcement learning 或 evolutionary algorithm 做.

然后就可以拿 \(F_\phi\) 在测试任务的训练资料上得到一个 classifier,用测试任务的测试资料验证.

在测试任务上往往只要少量的训练资料就能达到好效果,但 few shot learning 和 meta learning 不是同一个东西.few shot 是目的,meta 是手段.

在文献里为了避免搞混,常把训练任务里的训练资料叫 support set,训练任务的测试资料叫 query set.

很多 ML 上的东西都可以类比到 meta learning 上来,比如它也会有 overfitting,也可以做 task augmentation,也有 hyperparameters.

meta learning 能学些什么

回忆用 gradient descent 训练一般网络的过程:有一个初始化参数,用 optimizer 通过训练数据不断更新,最后输出.

于是我们可以学习:

  • 初始化参数

    Model-Agnostic Meta-Learning (MAML)

    在 self-supervised learning 里面,我们也是通过 pretrain 得到一个好的 initialization,那么 MAML 和它有什么不同呢?

    详见链接.简单来说,meta learning 也可以看作是一种 transfer learning 的方法.

    MAML 为什么好?一种解释是它学习到的初始化参数和最优的参数比较接近,所以 gradient descent 一下就到了.

    拓展阅读:

  • optimizer

    learning rate 调不出来?试试 meta learning.

  • 神经网络架构

    network architecture search (NAS).

    它通常是不可微分的,可以 reinforcement learning 硬做.把网络架构当做 agent 的参数,把架构对应训练之后的 loss(取反之后)当成 RL 里的 reward.

    也可以用 evolution algorithm 做.OI 里用模拟退火多于遗传,到实际工程上就反过来了,几乎没人用模拟退火,这应该还是参数量的问题.

    还可以强行让架构变得可以做微分:differentiable architecture search (DARTS).

  • 数据处理

    还在手动做 data augmentation?试试 meta learning.

  • 还有什么?

    目前还在尝试阶段.

    直接抛弃 gradient descent,训练一个 (meta) network,输入数据,输出目标 network 的参数.

上面的方法都是先训练出一个 network,然后再测试.有一种方法可以输入训练资料和测试资料,直接得到输出资料的答案,它又叫 metric-based approach.

详见过去课程的视频:

meta learning 在 few-shot image classification 里有应用.假设分类任务有 n 个类别,每个类别有 k 张训练数据,那么就叫 n-way k-shot task.一个经典的数据集是 Omniglot

meta learning 更多的应用可以看这张表格

posted @ 2025-05-10 19:02  383494  阅读(4)  评论(0)    收藏  举报