Reptile原理以及代码详解

本文介绍了Reptile算法,一种一阶基于梯度的元学习方法,旨在寻找模型初始化参数,以适应few-shot任务。与MAML和FOMAML相比,Reptile在保持高效的同时,可能牺牲一些准确性。文章通过伪代码、泰勒级数展开和实验结果,详细阐述了Reptile的工作原理和优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

论文:2018-On First-Order Meta-Learning Algorithms

算法简介
MAML,FOMAML,reptile这些都是关于fewshot任务中参数初始化的问题,这些算法都是寻找一个模型合理的初始化参数,使模型能够较快的适应小样本数据,在新任务上也能有较好的表现。
MAML在论文中是二阶的,但是作者通过简化,推出了first-order MAML,(FOMAML),这个算法是一阶的,更方便实施。
reptile也是一个一阶的基于梯度的元学习算法。

伪代码
在这里插入图片描述
这个图很经典,但是要注意的是,我们k(对一个任务的更新次数)一般会大于2,大家可以想一下如果是1会变成什么样子。
对变成了,pretrained的样子。也就是对多个任务求最优(论文里的“联合训练”)。那就不行了,后面实验2能让你看见一步和多步的差距。
在这里插入图片描述
步骤:
1.初始化参数
2.开始循环迭代i =0,1,2…
3.采样一个meta batch,每个batch内有多个任务task
4.对于每一个task,根据迭代次数k采样出含k个batch的minibatch,
5.对minibatch内的每一个batch使用梯度下降法更新初始化参数,得到Ψ’
6.将每个task更新后的参数Ψ’与初始参数Ψ相减,将这个相减的结果经过某个映射(将这个差值看做某个梯度,加入到某种自适应的算法中)。在我们的实现中一般是(Ψ’-Ψ)/a,这个a我们一般设置为一个可以变的值。
7.回到2,继续,直到循环结束。
在这里插入图片描述
(后面放个代码详细介绍一下)

案例:一维sin函数回归问题

通过不同的a,b构造不同的sin函数,作为不同的task,采样(x,y)的点进行实验。

在这里插入图片描述
从左到右,依次为随机初始化网络和MAML、reptile算法给的初始化参数在迭代32次以后的结果。(迭代32次,MLp网络)
在这里插入图片描述

分析:为什么reptile可以?

方法1:泰勒级数展开
首先我们看一下参数更新的过程(以两步的SGD为例):
在这里插入图片描述

放几个定义,要仔细看gi和

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值