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

机器学习算法工程师

共 2875字,需浏览 6分钟

 · 2021-01-05

点蓝色字关注“机器学习算法工程师

设为星标,干货直达!

AI编辑:我是小将

本文作者:谢杨易

https://zhuanlan.zhihu.com/p/261323968

本文已由原作者授权,不得擅自二次转载

1 什么是meta learning

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

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

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


2 为什么需要meta learning

meta 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







推荐阅读

无需tricks,知识蒸馏提升ResNet50在ImageNet上准确度至80%+

不妨试试MoCo,来替换ImageNet上pretrain模型!

重磅!一文深入深度学习模型压缩和加速

从源码学习Transformer!


机器学习算法工程师


                                    一个用心的公众号


 

浏览 190
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

举报