理解Meta Learning 元学习,这篇文章就够了!

共 3339字,需浏览 7分钟

 ·

2021-09-19 07:00

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

AI编辑:我是小将

本文作者:谢杨易

1 什么是meta learning


 优化目标和loss     一般的机器学习任务是,通过训练数据得到一个模型,然后在测试数据上进行验证。一般来说我们仅关注模型在该任务上的表现。而meta learning则探讨解决另一个问题,就是我们能否通过学习不同的任务,从而让机器学会如何去学习呢?也就是learn to learn。我们关注的不再是模型在某个任务上的表现,而是模型在多个任务上学习的能力。

试想一下机器学习了100个任务,他在第101个任务上一般就可以学的更好。比如机器学习了图像分类、语音识别、推荐排序等任务后,在文本分类上,它就可以因为之前学到的东西,而学的更好。meta learning就是解决这个问题,如何让机器去学习。

一般的机器学习任务,我们是需要学习一个模型f,由输入x得到输出y。而meta learning,则是要学习一个F,用它来学习各种任务的f。如下图


2 为什么需要meta learning


m5 优化目标和loss5 优化目标和losseta learning的优势主要有

  • 让学习更加有效率。我们通过多个task的学习,使得模型学习其他task时更加容易。

  • 样本数量比较少的任务上,更加需要有效率的学习,从而提升准确率和收敛速度。meta learning是few shot learning的一个比较好的解决方案


3 meta learning可以学到什么


通过meta learning,我们可以学到

  • 模型参数 model parameters。包括模型的初始化参数,embedding,特征表达等

  • 模型架构。可以通过network architecture search(NAS)得到模型的架构,比如几层网络,每层内部如何设计等

  • 模型超参数。比如learning rate,drop out rate,optimizer等。这个是AutoML的范畴

  • 算法本身,因为不一定是一个网络模型。


4 常用数据集


meta learning需要训练多个task,故一般每个task样本不会很多,其数据集本身也是few shot。常用的数据集datasets如下。

Omniglot

它由很多种不同语言构成,包括1623种字符,每个字符20个样本。所以也算是few shot learning了。


miniImageNet

ImageNet的few shot版本

CUB

Caltech-UCSD Birds。各种鸟类的图片,也是few shot。

5 优化目标和loss


如何评价meta learning的好坏呢,也就是我们的优化目标是什么呢。一般来说,meta learning需要多个机器学习task作为数据集,其中一部分task作为training task,另一部分作为testing task。training task和testing task中都包括训练数据和测试数据。

我们先通过task1学习到模型f1,并得到损失函数l1。然后再task2上学习模型f2,并得到l2。以此类推,得到所有task上的损失函数之和,即为meta learning的损失函数。如下


我们的目标就是降低这个损失函数 L(F)。


6 MAML





ICML 2017

Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks。


6.1 用来解决什么问题


MAML focus在学习模型初始化参数上,这和pretrain models的目标是相同的。pretrain models通过有监督或自监督方式,先在数据集充足的任务A上训练模型,然后利用该模型的参数来初始化数据量比较少的任务B。通过迁移学习的方式,让数据量比较少的任务,也能够train起来。meta learning和pretrain models虽然都可以帮助模型参数初始化,但二者差别还是很大的

  • pretrain model的任务A,一般来说数据量比较充足,否则自己都没法train起来,也就无法得到一个不错的初始化参数

  • pretrain model的初始化参数,重在当前任务A上表现好,可能在任务B上不一定好。meta learning则利用初始化参数,在各任务上继续训练后,效果都不错。它重在模型的潜力


6.2 loss和优化目标


MAML loss function如下



所有task的testing set上的loss之和,即为MAML的Loss,我们需要最小化这个loss。通过gradient descent的方法就可以实现。

6.3 创新点


MAML的创新点在于,训练模型时,在单个任务task中,模型参数只更新一次。李宏毅老师认为主要原因是

  • MAML希望模型具有单个task上,参数只更新一次,就可以得到不错初始化参数的能力

  • meta learning的数据集一般都是few shot的,否则很多task,训练耗时会很高。而few shot场景下,一般模型参数也更新不了几次

  • 虽然在训练模型时只更新一次初始化参数,但在task test时,是可以更新多次参数,让模型充分训练的

  • meta learning一般会包括很多个task,单个task上只更新一次,可以保证学习效率。


6.4 如何更新参数


MAML更新参数的过程如下所示

  • 初始化meta learning参数φ0

  • 由φ0梯度下降一次,更新得到θm

  • 在task m上更新一次参数

  • 通过第二次θ的方向,确定φ的更新方向,得到φ1。

而对于model pretrain,其φ和θ的更新始终保持一致。



7 Reptile





openAI,2018,On First-Order Meta-Learning Algorithms

7.1 模型特点


Reptile和MAML一样,也是focus在模型参数初始化上。故loss function也基本相同。不同之处是,它结合了pretrain model和MAML的特点,在模型参数更新上有所不同。Reptile也是先初始化参数φ0,然后采样出任务m,更新多次(而不是MAML的单次),得到一个不错的参数θm。利用θm的方向来更新φ0到φ1。同样的方法更新到φ2


好消息,小白学视觉团队的知识星球开通啦,为了感谢大家的支持与厚爱,团队决定将价值149元的知识星球现时免费加入。各位小伙伴们要抓住机会哦!


下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


浏览 41
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报