查看原文
其他

【综述专栏】顶会的宠儿:元学习(Meta-learning)的前世今生

The following article is from 王晋东不在家 Author 王晋东

在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。

来源:王晋东不在家

01

背景
一个传统的机器学习模型这样定义:在一个给定的数据集上学习一个目标函数,使得其代价最小化。如果我们用来表示函数的参数,来表示代价函数(损失函数),则一个通用的机器学习目标可以表示为:

其中表示最优的模型参数。

我们可以看到,给定一个任务(数据集),我们总是可以用上述过程学习一个最优的函数。此过程非常通用。
但是可以预见的是,如果任务数量非常庞大,或者学习过程非常缓慢,则我们的机器学习过程便捉襟见肘。
因此,很自然的一个想法是:如何最大限度地利用之前学习过的任务,来帮助新任务的学习?
迁移学习是其中一种有效的思维。简单来说,迁移学习强调我们有一个已学习好的源任务,然后将其直接应用于目标任务上,再通过在目标任务上的微调,达到学习目标。这已经被证明是一种有效的学习方式。
迁移学习过程可以被表示为:

其中的是之前任务的超参数。这个过程也就是常用的微调(fine-tune)过程。

那么有没有别的学习模式?

02

元学习的概念
元学习(meta-learning, 也叫learning to learn)是一种非常有效的学习模式。与迁移学习的目标类似,元学习也强调从相关的任务上学习经验,以帮助新任务的学习。
不同点是,元学习是一种更为通用的模式,其核心在于“元知识”(meta-knowledge)的表征和获取。我们可以理解为,这种元知识是一大类任务上具有的通用知识,是通过某种学习方式可以获得的。其具有在这类任务上,非常强大的表征能力,因此可以被泛化于更多的任务上去。
为了获取元知识,通常,元学习假定我们可以获取一些任务,它们采样自任务分布。我们假设可以从这个任务分布中采样出个源任务,表示为,其中两项分别表示在一个任务上的训练集和验证集。通常,在元学习中,它们又被称为「支持集(support set)」 和 「查询集(query set)」。
我们将学习元知识的过程叫做「meta-train」过程,它可以被表示为:

其中的表示元知识学习过程的参数。
为了验证元知识的效果,我们定义一个「meta-test」过程:从任务分布中采样个任务,构成meta-test数据,表示为
于是,在meta-test过程时,我们便可以将学到的元知识应用于meta-test数据来训练我们真正的任务模型:

值得注意的是,上式中我们是在针对每个任务,自适应地训练其参数,这也就完成了泛化的过程。

03

历史
Meta-learning的历史追溯到1987年。在这一年里,J. Schmidhuber和G. Hinton独立地在各自的研究中提出了类似的概念,被广泛认为是meta-learning的起源:
  • J. Schmidhuber提出了元学习的整体形式化框架,提出了一种「self-referential」 learning模式。在这个模式中,神经网络可以接收它们自己的权重作为输入,来输出目标权重。另外,模型可以自己通过进化算法来进行自我学习。

  • G. Hinton提出了「fast weights」和「slow weights」的概念。在算法迭代过程中,slow weights获取知识较慢,而fast weights可以更快地获取知识。这一过程的核心是,fast weights可以回溯slow weights的值,从而进行全局性指导。

两篇工作都对meta-learning的产生有着直接推动作用。以今天的视角来看,J. Schmidhuber的版本更像是meta-learning的形式化定义,而G. Hinton的版本则更像是定义了meta-learning的bi-level优化过程。
后来,Bengio分别在1990和1995年提出了通过meta-learning的方式来学习生物学习规则,而J. Schmidhuber继续在他后续的工作中探索self-referential learning。S. Thrun在1998年的工作中首次介绍了「learning-to-learn」的概念,并将其表示为实现meta-learning的一种有效方法。
S. Hochreiter等人首次在2001年的研究中,用神经网络来进行元学习。后来,S. Thrun等人又在1998年的工作中,重新将现代深度网络引入meta-learning,这也奠定了如今用深度学习进行meta-learning的基础。

04

相关研究领域
迁移学习。迁移学习(transfer learning)强调从已有任务中学习新任务的思维。与meta-learning相比,迁移学习更强调的是这种学习问题,而meta-learning则更侧重于学习方法。因此,二者不是完全没有联系,也并不是完全相等,取决于看待问题的角度。在很多情况下,二者的终极目标是一致的。
领域自适应和领域泛化。Domain adaptation和domain generalization这两种学习模式是迁移学习的子集。与meta-learning显著区别的是,二者没有meta-objective,也就是说,没有bi-level优化的过程。当然最近有一些工作试图将meta-learning引入来解决这两个领域的问题。
终身学习和持续学习。终身学习(lifelong learning)和持续学习(continual learning)强调在一个任务上进行连续不断地学习,而meta-learning则侧重于在多个任务上学习通用的知识,有着显著区别。
多任务学习。多任务学习(multi-task learning)指从若干个相关的任务中联合学习出最终的优化目标。Meta-learning中的任务是不确定的,而多任务中的任务就是要学习的目标。
超参数优化。严格来说,超参数优化(hyperparameter optimization)侧重学习率、网络架构等参数的设计,其是meta-learning的一个应用场景。
除此之外,meta-learning还与「贝叶斯层次优化」(Hierarchcal Bayesian model)和「AutoML」有着相近的联系,但这些模型的侧重和表征点,与meta-learning有所不同。特别地,贝叶斯模型从生成模型的角度,为meta-learning提供了一个有效的看问题角度。

05

元学习的基本问题
元学习的基本问题可以分成三大类:
元知识的表征(meta-representation)。元知识应该如何进行表征,这回答了元学习的最重要问题,即学习什么的问题。
元学习器(meta-optimizer)。即有了元知识的表征后,我们应该如何选择学习算法进行优化,也就回答了元学习中的如何学习的问题。
元目标(meta-objective)。有了元知识的表征和学习方法后,我们应该朝着怎样的目标去进行学习?这回答了元学习中为什么要这样学习的问题。
围绕这三大基本问题,近年来元学习领域出现了诸多研究成果。按照此分类方法,meta-learning的研究框架可以由下图清晰地给出:

元学习分类

元知识的表征

1. 初始化参数。由meta-train任务给出模型的初始化参数,然后针对初始化参数进行二次学习,例如MAML等方法。此类方法存在的问题是:一组初始化参数是否具有足够的元知识表征能力,或者这些参数是否会受限于特定任务。
2. 优化器。深度学习模型通常可以由SGD、Adam等常用的optimizer进行优化,这些优化器是固定不变的。那么,能否从相关的任务中,自动地学习适合于本任务的优化器?有一些工作,例如learning to optimize等,在这方面进行了尝试。
3. 黑盒模型。这类工作的出发点非常直接:假定待学习模型的参数是由另一个网络所学习而来的,例如CNN、RNN等。比较著名的工作有Memory-augmented neural networks等。
4. 度量学习(嵌入函数)。这类方法可以看作是上述黑盒模型的一个特例,即通过学习一个特征嵌入函数,使得在这个表征下,仅通过简单的相似度度量就可以进行分类。正因如此,这类方法目前只在few-shot的情景下适用。
5. 损失。通过自适应地学习损失函数来进行meta-learning。
6. 网络结构。通过设计额外的学习器来自动生成可用的网络结构,这一部分与AutoML很相关。
7. 注意力模块。
8. 网络的特定层和模块。
9. 超参数。
10. 数据增强。数据增强已成为深度学习领域的常用方法,如何用meta-learning来帮助进行数据增强,是一个非常有前景的领域。
11. 样本权重选择与课程学习。如何选择mini-batch大小、如何设定样本权重,这设计到课程学习(curriculum learning)的研究,显然这些都可以通过meta-learning进行学习。
12. 数据集、标签、环境。回归meta-learning本身的定义,为什么不自适应地学习数据集、标签和环境的切分和构造呢?
13. 除此之外,激活函数、卷积核、池化等,都可以用meta-learning进行学习。
纵观上述元知识的表征,我们可以说meta-learning其实设计到了一个机器学习过程的方方面面。因此,meta-learning也被视为非常有潜力的发展方向之一。

元学习器

有了meta-representation后,下一步便是meta-optimizer的学习,也就是说,如何进行优化的问题。
1. 梯度优化。这是非常常用的手段,例如MAML等方法都采用了在bi-level优化过程中梯度回传的方式来进行优化。这里的问题包括:如何在一个较长的计算图中实现有效的梯度回传,以及如何避免计算过程中的梯度变差,并且如何base-learner含有不可微分的损失时如何计算。
2. 强化学习。当base-learner含有不可微分的过程时,RL便是一个强有力的工具。此时涉及到如何将强化学习引入优化过程,使其变得更高效的问题。
3. 进化算法。另一种非常有效的途径是进化算法,有别于深度学习,进化算法并没有BP的过程,同时也有自身的一些优点和缺点。

元目标

设定好元知识和元学习器后,最后一步便是整个meta-learning的学习目标。
1. 多样本 还是 小样本。取决于目标任务的设定,meta-objective可以有针对性地被设计为多样本还是小样本的学习模式。
2. 快速的 还是 渐进式的结果。许多meta-learning方法都要求在meta-test集上快速进行泛化。而一些RL的应用也需要渐进式的学习结果。
3. 多任务 还是 单任务。
4. 在线 还是 离线。
另外的设计思路:有噪声样本的情况下如何学习,以及有domain-shift的情况下如何学习等。

06

元学习的应用
元学习在机器学习的诸多场景下都有着广泛的应用。
  • 计算机视觉中的「小样本学习(few-shot learning)」,包括分类、检测、分割、关键点定位、图像生成、密度估计等。可以说小样本的这个任务设定完美契合了meta-learning的学习过程。所以我们看到,绝大多数小样本研究都采用了meta-learning的学习方法。
  • 「强化学习」。一个很自然的扩展便是强化学习,在RL中的探索(exploration)和利用(exploitation),策略梯度等都有着广泛应用。
  • 「仿真(sym2real)」。由虚拟环境生成一些样本学习泛化的学习器,然后部署到真实环境中。
  • 「神经结构搜索(NAS)」。
  • 「贝叶斯元学习」。这个步骤非常有趣,它涉及到用贝叶斯的视角来对元学习进行重新表征,可以发现不一样的研究思维,对解决问题非常有帮助。
  • 「无监督元学习」。
  • 「终身学习、在线学习、自适应学习」。
  • 「领域自适应和领域泛化」。
  • 「超参数优化」。
  • 「自然语言处理」。
  • 「元学习系统」,等等。
其实我们可以看到,因为元学习是机器学习的一种学习方法,因此,可以说,机器学习的绝大多数问题和研究领域,都可以与meta-learning进行结合,碰撞出不一样的火花。

07

现存的挑战
1. 泛化能力。现有的meta-learning方法在一些任务上训练,在新的任务上测试。直接的假设是:训练和测试数据服从同一个分布。所以直接的问题是:如果meta-train和meta-test不是来自一个分布,如何做meta-learning?或者说,meta-train数据本身就包含了来自多个分布的数据,如何做meta-train?
2. 多模态的任务来源。现有的meta-learning方法假设训练和测试任务来自单一模态的数据,如果是多模态如何进行元学习?
3. 任务家族。特定任务下只有特定的任务家族可以用元学习,这大大限制了知识的表征和传播。
4. 计算复杂度。通常来说meta-learning都涉及到一个bi-level的优化,这导致其计算非常复杂。如何提高计算效率是一个难点。
5. 跨模态迁移和异构的任务。

08

结论
元学习是机器学习领域一种非常重要的方法,其贯穿整个机器学习过程的方方面面,并且在不同领域得到了长足的应用。其仍然存在一些问题有待解决,这将成为研究者们今后的方向。
https://arxiv.org/abs/2004.05439

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“综述专栏”历史文章


更多综述专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存