Meta Learning技术 MAML

本文介绍了Model-Agnostic Meta-Learning(MAML)算法,一种用于解决少样本问题的元学习方法。MAML旨在通过学习一组对任务敏感的参数,使得模型能在新任务上进行快速适应。文章详细阐述了MAML的目标、算法步骤以及代码实现,展示了元学习如何通过学习参数初始化,实现新任务的快速学习和收敛。
摘要由CSDN通过智能技术生成

Learning to learn——Meta learning

Meta Learning 最常被用来解决少样本(Few-Shot)的问题,在这边我们介绍一篇经典的论文 Model-Agnostic Meta-Learning(MAML)。由题目可知他是一种「与模型无关的」元学习,亦即这种方法可以匹配任何使用梯度下降算法(Gradient Descent)训练​​的模型,并能应用于各种不同的学习问题,如分类、回归和强化学习等。

MAML算法的目的

在 MAML 中,其目标在于一次看过多种任务(task),并希望可以学到一个可以找到所有任务「本质」的模型。举例来说,我们小的时候学会宝特瓶可以一手握着瓶身,另一手将瓶盖转开;而当我们接触到一个装糖果的玻璃罐时,我们察觉玻璃罐与保特瓶相似的本质,因而有办法套用既往的知识快速的移转到新的任务上,而MAML便是在学这个过程,在遍览多种任务后,学习一组对任务敏感的参数,当新任务进来时能快速的将先验知识移转到新任务中。
相对于deep learning在一个task(任务)中通过对样本的学习以对新样本做出判断,元学习的目标可以看做是将task视作样本,通过对多个task的学习,以使元模型(meta-learner)能够对新的task做出快速而准确的学习。具体来说,就是训练能"对特定的task产生特定的高效学习算法的算法"。至于MAML,则是尝试训练一个最简单的算法——参数初始化。MAML希望训练一组初始化参数,通过在初始参数的基础上进行一或多步的梯度调整,来达到仅用少量数据就能快速适应新task的目的。当我们通过MAML得到了一组蛮不错的参数,之后在类似的任务中,这组参数将会提供很好的模型初始迭代点。

算法步骤

在这里插入图片描述

  1. Sample batch size of tasks:首先会从meta-training里面筛选一个batch size的training data。
  2. Evaluate gradient and compute adapted parameter:对 training data 中每一个 task 以及其对应的 label 计算属于每个 Task 的 gradient 与更新后的 model 参数。
  3. Update the model:当有了每个task 利用training data of meta-train得到的新模型参数后,可以利用test data of meta-train验证,并且加总所有任务的loss,对原本模型参数微分并真正的更新一次参数。
    如何评估一组初始化参数的好坏呢?最直觉的想法自然是用它和task的训练集来训练模型,看最后得到的正确率和所需要的迭代次数。但是一般的深度模型训练常常要花费几万次的迭代来得到一个可靠的解,尽管我们可以像RNN的BPTT算法一样把这几万次的过程中每一步的参数对应的梯度都考虑进去,进而更新初始化参数,但是这个过程需要的时间和空间开销都大得惊人,我们有一种更高效的方式,就是只进行一次参数更新,用这时的参数来计算误差,更新初始化参数。
    解这样的优化问题,得到的将是一个"在所有任务上,经过一次梯度下降更新后,total loss最小的初始化参数"。尽管我们不能说这是一个最好的初始化参数,但是我们可以相信这个参数将会帮助我们训练更多的类似task。
    具体到代码实现,考虑到task可能非常多,则是一般采取每次随机抽取一个task,把参数代入模型,迭代更新一次;更新到第二次时,用这个Δ直接更新我们的初始化参数。
    这里使用了一种近似,设初始参数为Φ,则单次更新后的模型参数为
    θ = Φ − α ∂ L 1 ∂ Φ θ=Φ-\alpha \frac{\partial {L_1}}{\partial {Φ}} θ=ΦαΦL1
    其中L1是第一次计算loss时的损失函数(损失函数会随着参数变化而变化)。当计算第二次更新时,我们要计算这时的Φ关于Loss2的导数,涉及到二阶导数,为了快速计算,我们直接用
    ∂ L 2 ∂ Φ = ∂ L 2 ∂ θ ∂ θ ∂ Φ = ∂ L 2 ∂ θ ( 1 − ∂ 2 L ∂ Φ 2 ) ≈ ∂ L 2 ∂ θ \frac{\partial {L_2}}{\partial {Φ}} = \frac{\partial {L_2}}{\partial {θ}} \frac{\partial {θ}}{\partial {Φ}}= \frac{\partial {L_2}}{\partial {θ}} (1-\frac{\partial ^2{L}}{\partial {Φ}^2}) \approx \frac{\partial {L_2}}{\partial {θ}} ΦL2=θL2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值