元学习算法MAML论文详解
论文信息
题目:Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks
作者:Chelsea Finn(伯克利大学),Pieter Abbeel ,Sergey Levine
年份:19
论文地址:论文地址
代码:maml-pytorch
基础补充
小样本学习(Few Shot Learing)概念
- N-way N-shot。N-way 的意思是N分类,N-shot是在学习的样本中,每个类只提供5个样本,比如说让你学习辨认一只猫,只有5张猫的照片供你学习。
内容
摘要
提出一种 meta-learning 算法,该算法是模型无关的,适用于任何利用梯度下降的方法来训练的模型,并且适用于任何任务,包括:classification,regression,and reinforcement learning. meta-learning ,目标是在不同的任务上训练一个模型,使得该模型可以仅仅利用少量的数据,就可以解决新的任务。在提出的方法中,该模型的参数,是显示的进行训练的,使得新任务中使用少量的梯度步和少量的训练数据就可以产生良好的泛化性能 效果上来说,我们的方法得到的模型更加容易进行微调。该论文表明这种方法可以在两个 few-shot image classification benchmarks 得到极好的效果,并且加速了策略梯度强化学习算法。
动机
动机:
- 快速的进行学习是最近机器学习领域的一个研究热点问题
- 人类可以根据已有的先验知识,就可以根据少量新的信息,快速的掌握一项新的技能
- 但是这种快速且灵活的学习任务对于机器来说,确是非常困难的
- 能不能是机器从少量样本中学习,然后应用于不同的新任务时也能表现出很好的能力
创新:(key idea)
- 该论文提出的方法是训练模型的初始参数,使模型在参数更新后对新任务具有最大的性能。用在来自新任务的少量数据进行,计算通过一个或多个梯度步骤,就能满足要求;
- 与前人的工作不同,他们通常基于 learn an update function or learning rule, 本论文的方法不会增加所需要学习参数的数量,也不会限制模型的框架,可以很容易与各种全连接,全卷积,或者循环神经网络。也可以与各种损失函数结合,如:可微分的监督损失函数,或者不可导的强化学习目标函数。
核心算法
从一个动态系统的角度,本论文的学习过程可以看做是:使新任务相对于参数的损失函数的灵敏度最大化:,当敏感度高的时候,对参数进行较小的局部改变可以带来任务损失上大的改善。找到某参数使得在多个任务上loss都发生较大改变,即找到灵敏性强的参数
算法1:
分为两步,
第一步是:在Ti\mathcal{T}_{i}Ti上训练得到θi\theta_{i}θi
θi′=θ−α∇θLTi(fθ)\theta_{i}^{\prime}=\theta-\alpha \nabla_{\theta} \mathcal{L}_{\mathcal{T}_{i}}\left(f_{\theta}\right)θi′=θ−α∇θLTi(fθ)第二步是:
θ←θ−β∇θ∑Ti∼p(T)LTi(fθi′)\theta \leftarrow \theta-\beta \nabla_{\theta} \sum_{\mathcal{T}_{i} \sim p(\mathcal{T})} \mathcal{L}_{\mathcal{T}_{i}}\left(f_{\theta_{i}^{\prime}}\right)θ←θ−β∇θTi∼p(T)∑LTi(fθi′)
the meta-optimization 是通过 model parameters θ\thetaθ 来实现的,其中,模型被用新的模型参数 θ′\theta'θ′ 进行计算。实际上,我们提出的模型,目标是优化模型的参数,使得 one or a small number of gradient steps on a new task will produce maximally effective behavior on that task.
其中,α,βα,βα,β分别是task中的进行梯度下降的学习率、和meta-learning过程的学习率,θθθ 是模型(神经网络的参数)fff的权重参数。
算法2:
在一个task中,使用左边的训练集做5次SGD的过程,再使用右边的测试集计算test error,在meta-learning过程中,把一个batch的4个task的test error平均一下作为loss再去进行优化。这个过程结束后,神经网络的权重到达了下图中的P点
我们再使用这个模型或者测试这个模型的准确度怎么用呢?我们说把100类图片分成了3个子集被划分成了train(64)、test(20)、val(16)三个子集。train中有64个类,用于上述的meta-learning。现在要将这个模型用在新的任务集具有16个类的test数据集上。仔细一想,训练好的模型并没有看见过test数据集中任何类啊。现在就是要说title中的Fast Adaptation的关键字了,在5-way 5-shot设定中,在测试的时候从test数据集中随机抽取5个类,每个类抽取N(>5)张照片,其中每个类抽取5张照片,用来微调模型中的参数,比如说在一个新任务下,把模型的参数调整至 θ3∗\theta_{3}^{∗}θ3∗的位置,就是task做的事,即在新任务下只用5张照片来学习一下,用剩下的照片来计算精度
实验
实验1:
在使用MAML的方法,与直接使用使用数据进行预训练对比
- 可以看出使用了maml方法在k为5都能得到比较好的效果
实验2:
结论
Model-Agnostic(与模型无关的)是说,可以把task换成其他可以进行SGD过程的模型;Deep Networks(深度网络)可以适用于所有的深度学习模型。提出的MAML能在不同的任务上训练一个模型,使得该模型可以仅仅利用少量的数据,就可以解决新的任务。
可借鉴地方
- 算法很经典有效,可以用于PINN等网络预训练作为初始化参数,将会加速训练收敛
参考
小样本学习论文
元学习算法MAML论文详解相关推荐
- OpenAI发布可扩展的元学习算法Reptile | 论文+代码+Demo
安妮 编译自 OpenAI官方博客 量子位 出品 | 公众号 QbitAI 昨天,OpenAI发布了一种新型的可扩展元学习算法Reptile,还能在线试玩. 何为Reptile?难道是-- 咳咳严肃一 ...
- CVPR 2020 | 元学习人脸识别框架详解
2020-05-15 23:07:48 本文介绍的是CVPR2020 oral论文<Learning Meta FaceRecognition in Unseen Domains(MFG[1]) ...
- cvpr2020 人脸检测与识别_CVPR 2020 | 元学习人脸识别框架详解
本文介绍的是CVPR2020 oral论文<Learning Meta FaceRecognition in Unseen Domains(MFG[1])>,作者来自明略科技集团明略科学院 ...
- 【深度学习】transfromer-XL论文详解
Transformer-XL来自于论文<Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context>,T ...
- (二)元学习算法MAML简介及代码分析
欢迎访问个人网络日志
- 智能城市dqn算法交通信号灯调度_博客 | 滴滴 KDD 2018 论文详解:基于强化学习技术的智能派单模型...
原标题:博客 | 滴滴 KDD 2018 论文详解:基于强化学习技术的智能派单模型 国际数据挖掘领域的顶级会议 KDD 2018 在伦敦举行,今年 KDD 吸引了全球范围内共 1480 篇论文投递,共 ...
- DL之AlexNet:AlexNet算法的架构详解、损失函数、网络训练和学习之详细攻略
DL之AlexNet:AlexNet算法的架构详解.损失函数.网络训练和学习之详细攻略 相关文章 Dataset:数据集集合(CV方向数据集)--常见的计算机视觉图像数据集大集合(建议收藏,持续更新) ...
- c语言将AOE网络的数据写入TXT文档中,数据结构与算法学习辅导及习题详解.张乃孝版-C/C++文档类资源...
数据结构与算法学习辅导及习题详解.张乃孝版.04年10月 经过几年的努力,我深深体会到,编写这种辅导书要比编写一本湝通教材困难得多. 但愿我的上述理想,在本书中能够得以体现. 本书的组织 本书继承了& ...
- 限时9.9元 | 快速领取数学建模竞赛备战必备技巧与论文详解!
全世界只有3.14 % 的人关注了 青少年数学之旅 大家晚上好,随着美赛时间的公布以及大大小小的数学建模竞赛的进行,小天经常可以收到来自很多小伙伴们提出的问题,"竞赛中如何去考虑选题?&qu ...
- Fast R-CNN论文详解
Fast R-CNN论文详解 作者:ture_dream &创新点 规避R-CNN中冗余的特征提取操作,只对整张图像全区域进行一次特征提取: 用RoI pooling层取代最后一层max po ...
最新文章
- html里字号rem,html中的em和rem到底该如何使用,自适应效果中如何确定文字大小/字号?...
- UNITY技巧-查找脚本被哪个场景引用
- 【PC工具】更新github下载加速器,github项目辅助下载工具,github高速下载
- JavaScript 语言基础知识点总结(思维导图)
- JDE Client开发端 左侧边栏设置
- Qt 程序访问 sqlite 权限错误
- Ubuntu 19.10 将于本月结束生命周期
- UVA10700 Camel trading【贪心】
- HDU 1084:What Is Your Grade?
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_5_线程间通信...
- webpack入坑之旅(一)不是开始的开始
- 7. COM编程——初始化并创建COM对象
- 分享一些第三方免费接口集
- jsp小区车位管理系统
- 由于未安装.net framework 4.0的miscrosoft office支持,无法加载以下解决方案 ***.vsto
- list.php tid= field,DEDE5.7手机移动版实现与PC电脑版静态地址url一致教程(含伪静态规则) | 八戒哥技术博客...
- matlab latex表示,科学网—MATLAB程序如何在latex上发表? - 卢远志的博文
- jmeter基础之保存响应数据到文件
- Chapter2.4:数学模型考研参考题
- 接收信号强度值dbm分析