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

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

重磅干货,第一时间送达

AI编辑:我是小将

本文作者:谢杨易

1 什么是meta learning

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

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

91db0016de9465276c6f24cbb08ea4c4.png

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

f2fac7e808d0893b6049032f1a704506.png

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了。

1c9257557b6778354cef9a808a6104ca.png

miniImageNet

ImageNet的few shot版本

8a1a6ec289f67dcd919ce4a2e27354e2.png

CUB

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

9a5a3fae32b8aa2d4bff5aa434ae6d2e.png

5 优化目标和loss

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

cf72ad3f5766cd9ef47b02758c7aaa0a.png

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

5c3e135fca3765254b31174493aa52fb.png

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

99e6f7d6aab7430fdb4347c75f6f43f3.png

6 MAML

4a348e4e88062a12f845639706c6b729.png

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则利用初始化参数,在各任务上继续训练后,效果都不错。它重在模型的潜力

09f41a53a42654e547f0b16d69ba9630.png

6.2 loss和优化目标

MAML loss function如下

a6b97d56256a96d143d41107a59b9902.png

所有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,其φ和θ的更新始终保持一致。

7047ea73c2b7377a34ddd41d40f42c9f.png

7 Reptile

94c2ec5bc95a8cc0c75d4ae84feadf30.png

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

d01d2bfba7f0490faa1b8c249a1a868b.png

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

8650ae9c030dddeda14925fbdaff0869.png

下载1:OpenCV-Contrib扩展模块中文版教程

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

下载2:Python视觉实战项目52讲

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

下载3:OpenCV实战项目20讲

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

交流群

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

49d08ae4c334a2fdcd6f1a4d060c8c64.png

39e0b97a32f4ab616c3161c6f8cc6d65.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值