Meta Learning(李宏毅老师系列)

自学参考:
视频课
课件+资料
笔记

一、introduction

  • 工业界:大量GPU同时训练多组可能的超参数,找到结果较好的参数配置

  • 学术界:“通灵”,定义一组好的参数

    Meta-learning:learn to learn,希望自己学会超参数、网络架构……,帮助学术界解决问题
    在这里插入图片描述

  • “学习算法”也可以看做一个函数F,它的输入是训练数据,输出是model

    • 一般的ML中,F是人想出来的(hand-crafted)
    • Meta Learning 自动学习“学习算法”F

在这里插入图片描述

二、Learning Algorithm

训练数据→训练任务(训练任务里的训练数据+测试数据)
测试数据→测试任务(包含训练数据+测试数据)

Step 1: What is learnable in a learning algorithm?

明确要被学的东西
让机器自己学习
learnable components ϕ \phi ϕ

  • 网络架构
  • 初始参数
  • 学习率
  • ……

根据学习内容不同,将元学习的具体方法进行分类
在这里插入图片描述

Step 2:Define loss function for learning algorithm F ϕ F_\phi Fϕ

定义损失函数
在这里插入图片描述
很多“任务”,每个任务中有训练集和测试集
在这里插入图片描述
使用学到的学习算法 F ϕ F_\phi Fϕ,利用某个任务的训练数据进行训练,得到模型 f θ 1 ∗ f_{\theta^{1*}} fθ1
模型 f θ 1 ∗ f_{\theta^{1*}} fθ1性能越好时,说明学习算法 F θ F_\theta Fθ越好,此时损失函数 L ( θ ) L(\theta) L(θ)越小
在这里插入图片描述

  • 评估训练得到的模型 f θ 1 ∗ f_{\theta^{1*}} fθ1的性能
    在这里插入图片描述

    • 使用对应任务的“测试数据”(带label)对训练得到的模型 f θ 1 ∗ f_{\theta^{1*}} fθ1进行测试,计算“预测结果”与Ground Truth之间的Cross Entropy
      在一般的机器学习中,loss是根据“训练数据”来计算的;而在元学习中,loss根据训练任务中的“测试数据”进行计算。
    • 将各个测试数据得到的结果求和得到 l 1 l^1 l1即模型的损失,用来衡量模型 f θ 1 ∗ f_{\theta^{1*}} fθ1性能,借以衡量学习算法 F θ F_\theta Fθ的优劣
      • l 1 l^1 l1越小, f θ 1 ∗ f_{\theta^{1*}} fθ1性能越好,说明学习算法 F θ F_\theta Fθ越好
      • 反之, l 1 l^1 l1越大, f θ 1 ∗ f_{\theta^{1*}} fθ1性能越差,说明学习算法 F θ F_\theta Fθ越差
  • 继续使用“同类别”的“其他任务”对学习算法进行测试
    在这里插入图片描述

    1. 对于任务二,继续训练出对应的分类器模型 f θ 2 ∗ f_{\theta^{2*}} fθ2
    2. 计算 l 2 l^2 l2,说明Learning Algorithm 在任务二上的表现。

将该“学习算法”在所有的“学习任务”上的损失求和,得到total loss L ( ϕ ) L(\phi) L(ϕ)

Step 3:Optimazation

  • 已经定义出学习算法 F ϕ F_\phi Fϕ的损失函数 L ( ϕ ) L(\phi) L(ϕ)
    • ∂ L ( ϕ ) ∂ ϕ \frac{\partial L(\phi)}{\partial \phi} ϕL(ϕ)可导,则可以使用梯度下降法
    • 若不可导,则使用RL,进化算法硬train
  • 最终可以得到**“学习而得的”学习算法**
    在这里插入图片描述

Framework

最终我们真正关心的是,在“测试任务”上,学习算法 F ϕ ∗ F_{\phi^*} Fϕ的性能
在测试任务上,利用“测试任务”中的“训练数据”+使用训练得到的学习算法 F ϕ ∗ F_{\phi^*} Fϕ来训练,得到分类器 f θ ∗ f_{\theta^*} fθ
f θ ∗ f_{\theta^*} fθ用在在测试任务的测试数据上,可以得到想要的结果。
在这里插入图片描述

  • few-shot learning:利用meta-learning的技术,可以达到“few-shot learning”的目的。

三、ML v.s. Meta

  • goal:
    • ML:找到一个能完成任务的函数f
    • Meta:找到一个学习算法F,能够找到f
      在这里插入图片描述
  • 训练数据:
    • ML:完成一个任务即可,使用这个任务中的“训练数据”进行训练
    • Meta:使用若干个任务进行训练,每个“训练任务”中都有“训练数据+测试数据”
      • Support set:任务里的训练数据
      • Query set:任务里的测试数据
        在这里插入图片描述
  • framework
    • train

      • ML:学习算法是人工设定的⇒Within-task Training
      • Meta:学习算法是在多个任务上训练得到的⇒Across-task Training
        在这里插入图片描述
    • test

      • ML:直接使用训练得到的模型在任务中对测试数据进行测试⇒Within-task Testing
      • Meta:需要测试的是“学习算法”
        ⇒Across-task Testing
        • 在“测试任务”中,将任务的训练数据丢给“学习算法”,训练得到该任务的模型⇒Within-task Training
        • 再将该任务的测试数据丢进模型⇒Within-task Testing
          Within-task Training+Within-task Testing⇒Episode
    • loss

      • ML:对一个任务中所有的测试数据的损失之和
      • Meta: l l l是一个任务的损失, L L L是对所有任务损失之和
        在这里插入图片描述
        • 计算一个 l l l, 就需要一次Within-task Training + Within-task Testing 即 一个episode⇒Inner Loop
        • 综合多个task进行 Across-task training⇒Outer Loop

在这里插入图片描述

  • 相同点(相同的忧虑)
    • Overfitting on training tasks
    • 收集更多训练任务
    • 数据增强⇒增加任务
    • learn learning algorithm 也需要调超参数
      • 愿望:希望能够一劳永逸,找到一组较好的超参数以后,不再需要调超参数
    • Development task⇒类比于development set(验证集),用于调整学习算法训练超参数

四、What is learnable in a learning algorithm?

模型初始值Learning to Initialize(MAML

模型的初始值对模型的最终性能有着比较大的影响
在这里插入图片描述

  • MAML在这里插入图片描述

  • find Good Init:MAML v.s. Pre-training

    • MAML需要用到有label的数据,理所当然有较好的效果
    • pre-training(self-training)使用的数据没有标注
      在这里插入图片描述
      在这里插入图片描述
      之前的pre-training还有其他的方法,比如将来自不同任务的数据混在一起进行训练(multi-task training)
      multi-task training常常作为meta-learning的baseline
  • Why MAML is good? Feature Reuse!
    在这里插入图片描述

  • Meta v.s. Domain adaptation:Meta中不同的task看做是不同的Domain,那么可以将Meta看做是Domain adaptation的一种方法。

Optimizer(learning rate, momentum)

  • ptimizer中的参数也可以学习得到
    • 学习率
    • 动量
    • ……
      在这里插入图片描述

Network Architecture Search (NAS)

学习得到网络架构,将网络结构作为 ϕ \phi ϕ
但是, ∇ ϕ L ( ϕ ) \nabla_{\phi}L(\phi) ϕL(ϕ)计算不出来,因为 L ( ϕ ) L(\phi) L(ϕ) ϕ \phi ϕ不可导, ϕ \phi ϕ不是连续的
在这里插入图片描述

  • 解决方法1:Reinforcement Learning

    • ϕ \phi ϕ:the agent’s parameters
    • agent的输出:network的宽度,深度……
    • Reward to be maximized: − L ( ϕ ) -L(\phi) L(ϕ)
      在这里插入图片描述
  • 解决方法2:Evolution Algorithm(进化算法)
    在这里插入图片描述

  • 解决方法3:可微分
    DARTS: Differentiable Architecture Search
    在这里插入图片描述

Data Augmentation

让机器自动学会数据增强
在这里插入图片描述
在这里插入图片描述

Sample Reweightnig:Give different samples different weights

对于很接近边界的样本,

  • 应该看做“噪声”,并给予较小的权重?
  • 应该看做“边界”,给予较大的权重?

让机器根据data特性自动决定权重大小。在这里插入图片描述

Beyond Gradient Descent

让机器输入数据,直接输出模型
⇒发明了新的学习算法(learning algorithm)在这里插入图片描述

Learning to compare

  • 目前,episode中不再分“训练”和“测试”两个阶段,先根据训练任务训练learning algorithm、再输出模型,利用模型得到最终结果
  • learning to compare:不再有显式的分界,而是直接输入训练数据和测试数据,学出learning+classification,输出测试的结果
    在这里插入图片描述

五、application

Few-shot Image Classification

  • N-ways K-shot:N个类别、每个类别K个样本
  • 在meta learning中,使用很多这样的人物作为训练/测试任务
    • 常常使用Omniglot数据集制造

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值