当前位置: 华文星空 > 汽车

什么是meta

2017-12-25汽车
如果觉得我的算法分享对你有帮助,欢迎关注我的微信公众号「 圆圆的算法笔记 」,更多算法笔记和世间万物的学习记录~

Meta-learning可以理解为一种求解问题的工具,下面举一个例子,通俗的说明meta-learning的作用。在正常的machine learning中,需要将数据集分成trainset和testset,模型在trainset上进行训练,在testset上评测效果。但是,在trainset上的训练过程可能导致过拟合,进而引起在testset上效果较差。如何才能设计一种面向testset上效果的训练方法呢?Meta-learning就能达到这个目的。Meta-learning直接评测在trainset训练几轮后的模型在testset上的效果,再使用这个效果作为信号计算并回传梯度,指导模型更新。Meta-learning的learn to learn,相比传统的机器学习,进行了一个两层的优化,第一层在trainset上训练,第二层在testset上评测效果。

本文首先从不同角度介绍对meta-learning的理解,然后进一步介绍meta-learning的典型模型MAML的原理。在此基础上,介绍了5篇近3年的顶会的论文,从3个角度揭示了meta-learning在学术界的优化方向。

1. Meta-learning的不同角度解释

本小节从不同角度理解meta-learning,相关资料可以参考这篇meta-learning的survey,介绍的比较全面: Meta-Learning in Neural Networks: A Survey(2020) 。下图给出了论文中对于meta-learning的详细分类。

Meta-learning经常被理解为learn to learn,可以分为两个阶段:内循环和外循环。内循环阶段,模型利用训练样本拟合某个特定任务;在外循环阶段,对外循环的某个目标函数进行优化。内循环和外循环迭代交替进行。在上一节的例子中,在trainset上训练就可以理解为内循环,而评估testset上的效果并以此为信号更新网络参数则可以理解为外循环。内循环的优化目标是trainset的效果,即模型的拟合能力,外循环的优化目标是testset的效果,即模型的泛化能力,也可以理解为外循环以泛化能力作为优化目标。对于meta-learning,从不同的视角也有不同的解释,下面主要介绍从任务分布角度和两层优化角度对于meta-learning的理解。

1.1 Task分布角度

从task分布视角理解,meta-learning的功能是利用多个task学习一个比较好的初始化参数,这个初始化参数在之前没见过的task上finetune几轮,能达到非常好的效果。为了达到这个目的,在学习阶段,会有很多不同task的数据,比如猫狗分类、车船分类等等多个不同的任务,每个任务都被分为trainset和testset。在meta-learning的过程中,随机采样一些任务,首先通过内循环在这些任务的trainset上训练,然后在外循环中,利用各个任务的testset评估模型效果,再用这个效果更新模型参数。整个过程在模拟训练+finetune的过程,这样得到的模型参数的意义,其实是「学习几轮后,在当前任务上效果最好」的参数。

这个视角下的理解经常和多任务联合pretrain+finetune的思路形成对比。Pretrain-finetune的方法,首先用所有任务数据一起训练模型,再在各个任务上finetune子模型,由于没有meta-learning的优化目标,在pretrain阶段关注的是所有任务整体效果最好,而不是finetune后每个任务的效果最好。而meta-learning是直接以finetune后效果最好为目标的。下面这个图形象表达了meta-learning的学习过程,训练阶段找到的可能不是两个任务最优点,而在finetune几轮后能达到最优的点。

1.2 两层优化视角

两层优化视角指的是模型的优化目标包含两层,例如上面提到的内循环和外循环,可以表示为如下的公式形式:

公式的第一行代表外层优化(外循环),第二行代表内层优化(内循环),两层优化是依赖关系。内循环在trainset上以具体task为目标训练得到一个中间参数,中间参数在外循环以外层优化目标在testset上训练得到最终参数。

2 Meta-learning经典模型MAML原理

Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks(2017,MAML) 提出了MAML模型,也是目前最经典的meta-learning算法之一,是很多后续meta-learning研究的基础,理解MAML算法原理是理解meta-learning的核心。首先我们明确MAML的目的,传统的机器学习方法是在样本维度进行学习,在单个任务的训练集上训练模型,希望模型在测试集上表现好。而MAML是在task维度进行学习,模型在训练集可见的task上训练模型,希望在未见过的task上效果好。为了达到这个目的,MAML在训练过程中基于meta-learning思想,利用训练集的task学习一个初始化参数,使这个参数在未见过的任务上finetune几轮,就能达到较好的效果。

MAML的算法流程如下图,分为内循环和外循环两个部分。首先采样一部分task,将task划分为trainset(support set)和testset(query set)。内循环阶段,模型在这些task的support set上分别进行训练,得到一个临时的模型参数。外循环阶段,模型使用这个临时参数评估在每个task的query set上的效果,用这个效果去更新最初的模型参数。这个过程模拟了模型在一个任务上fintune几轮效果能够达到最优的过程,因此能够实现我们最初的目标。

在MAML训练完成后,如果想要应用于下游任务中,需要在下游任务的数据上finetune,以达到最优效果。总结起来,MAML可以分为两个阶段:meta-train(内循环+外循环迭代更新)、meta-test(在具体任务上finetune)。

3. Meta-learning近年优化方向

理解了MAML的核心思路后,我们重点介绍一下近几年来,学术界对于MAML存在问题的进一步改进和优化,了解meta-learning最新研究方向。本文主要介绍数据增强、short-horizon bias、自适应超参数选择三个方面。

3.1 数据增强

Meta-learning requires meta-augmentation(NeurIPS 2020) 指出,meta-learning存在两方面的overfitting问题,分别为Memorization Overfitting和Learner Overfitting。其中Memorization Overfitting指的是,模型不需要用support set训练,指根据query set的输入就能准确预测出结果,这样support set不起作用了,也就失去了meta-learning的意义。Learner Overfitting类似于传统机器学习在trainset上的overfitting,指的是模型在meta-train阶段的样本上overfitting,在meta-test阶段的新任务上效果不好。

为了Memorization Overfitting,解决本文提出用CE-increasing进行数据增强,以此来让模型必须通过学习support set才能把query set预测好。CE-increasing数据增强的核心是,对特征X和标签Y进行变换后,一个特征X可能对应多个标签Y,即根据X预测Y的条件熵增大。这相当于把一个任务变成多个任务(相同的输入x,不同的输出y),预测出query set必须要根据support set才能预测好,其本质上是在做task的数据增强。

Data Augmentation for Meta-Learning(ICML 2021) 探索了support set、query set、task、shot等4多个因素的增强对于meta-learning效果影响,并提出了meta max-up算法,思路借鉴了max-up算法,每次采样task后,从多种数据增强方法中随机生成新的样本,选择当前模型下loss最大的增强数据进行模型参数更新。

3.2 Short-horizon Bias

UNDERSTANDING SHORT-HORIZON BIAS IN STOCHASTIC META-OPTIMIZATION(ICLR 2018) 首先提出了meta-learning中存在的short-horizon bias问题。该问题指的是,内循环其实是在模拟模型finetune的过程,内循环轮数如果较小,对应的finetune轮数较小,这种情况下模型会出现贪心效应,finetune轮数小和finetune轮数大最终达到的最优点是不同的。只有当内循环轮数足够大的时候,才能更真实模拟finetune过程,达到更好效果。然而,增大内循环轮数,意味着训练时间大幅增加,因为多轮内循环后,才能进行一次外循环真正更新模型参数。

为了能够增大内循环轮数,同时又能提升模型更新频率, Large-Scale Meta-Learning with Continual Trajectory Shifting(ICML 2021) 提出了一种meta-learning新的优化方法。该方法每一次内循环,都伴随着一次外循环,而不是原来的n次内循环对应一次外循环。该方法的核心如下图左侧更新方法和右侧公式。在右侧的公式中,约等号左侧为正常的meta-learning第k个内循环后模型中间参数,在外循环进行更新得到的模型参数,可以近似等于右侧。而右侧的物理意义为,每轮内循环后,都外循环更新一次,并把模型初始参数进行一个和梯度相同的移动。该方法和传统meta-learning的对比以及算法细节如下图。

3.3 自适应超参数

Meta-Learning with Adaptive Hyperparameters(NIPS 2020) 提出内循环中每个任务的学习率自适应的方法。原来的MAML在内循环更新参数时,学习率都是固定的,更好的应该是动态改变学习率、weight decay的,每个task在每个内循环step能够自适应的更新。本文提出的方法为,在内循环的损失函数中给参数加一个l2正则,相当于约束当前task不能过拟合它的loss,推导梯度得到一个新的更新方法,如下面的公式。有a和b两个参数确定,通过网络自动学习这两个参数。每个task每个step都有不同的a和b。a和b的生成函数采用一个NN网络,输入当前梯度和当前参数(反应当前的训练状态),输出当前的a和b。生成a和b的NN网络使用外循环更新。

4. 总结

本文从基础的meta-learning原理出发,从不同角度理解meta-learning,并进一步介绍了meta-learning中的代表性工作MAML。在此基础上,介绍了5篇近3年来针对meta-learning进行优化的顶会论文。

如果觉得我的算法分享对你有帮助,欢迎关注我的微信公众号「 圆圆的算法笔记 」,更多算法笔记和世间万物的学习记录~