3-1 元学习 Model-Agnostic Meta-Learning 笔记

一、基本信息

  论文名称:Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks
  出版社:arXiv
  发表时间:2017

二、研究目的

  训练出合适的模型初始参数,使得在样本量较少的情况下迅速收敛

三、训练方式

  假设实际需要面对的问题是5 way 1 shot,也就是说有5个类别,每个类别只有一个样例,目标是模型可以利用这5个样例训练到收敛而又不至于过拟合。假设数据集有100个种类(和上述5个种类不重合),我们需要利用数据集训练出一个合适的模型,使得该模型可以在5 way 1 shot问题上快速收敛。
  将数据集分成meta-train和meta-test两部分,meta-test测试模型的收敛速度(用Dtrain训练,用Dtest测试分类效果),meta-train用于训练模型(Dtrain和Dtest一起训练模型),下图中每一个横条称为一个task。


元学习

   对于meta-train数据集,首先整理成上图中的形式(从100个类中随机抽取5个类,从5个类的数据集中分别随机抽1个样例作为Dtrain,从5个类数据集中随机抽2个样例作为Dtest),这样一来就会形成很多个task,这些task就是训练集(一个task相当于传统机器学习中的一个样例),多个task构成一个batch。算法如下:

    1. 初始化分类器参数,提取batch(在每一个batch内计算梯度,然后利用该梯度更新分类器参数,每个batch更新一次)
    1. 每个batch内有多个task,每个task内有Dtrain和Dtest。对于每个task,用Dtrain计算梯度并更新参数(暂时更新,仅仅用于计算对应Dtest的梯度,其实他是整个batch过完后再更新),用参数更新后的分类器计算Dtest的损失。整个batch中有多个task,也就是有多个Dtest的损失,把这些损失加和然后计算梯度,进而更新分类器参数。这就完成了一次参数更新。下个batch用更新后的参数重复进行下去。
      算法流程

        在一个batch中,算法在每个task上的Dtrain计算梯度,在Dtest上计算损失,这就相当于试探步,每个task试探不同的方向,最后将整个batch的试探结果(Dtest的loss)综合起来更新参数。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。