元学习论文总结||小样本学习论文总结
2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017-2019 NIPS2017-2019
目录
转载自:Meta-Learning: A Survey
Author:
Published in:
原文链接
Abstract
1 Introduction
2 Learning from Model Evaluations
2.1 Task-Independent Recommendations
2.2 Configuration Space Design
2.3 Configuration Transfer
2.3.1 Relative Landmarks
2.3.2 Surrogate Models
2.3.3 Warm-Started Multi-Task Learning
2.3.4 Other Techniques
2.4 Learning Curves
3 Learning from Task Properties
3.1 Meta-Features
3.2 Learning Meta-Features
3.3 Warm-Starting Optimization from Similar Tasks
3.4 Meta-Models
3.4.1 Ranking
3.4.2 Performance Prediction
3.5 Pipeline Synthesis
3.6 To Tune or Not to Tune?
4 Learning from Prior Models
4.1 Transfer Learning
4.2 Meta-Learning in Neural Networks
4.3 Few-Shot Learning
4.4 Beyond Supervised Learning
5 Conclusion
Joaquin Vanschoren, Eindhoven University of Technology
arXiv 1810
https://arxiv.org/pdf/1810.03548.pdf
元学习,即“学习如何学习”,系统的观察不同机器学习方法如何在广泛的学习任务中执行,然后从这种经验(“元数据”,meta-data)中学习,从而比其他方法更快的学习新任务。
这种方法不仅极大的加速和改善机器学习的方法或者神经网络的设计,也能够让我们采用一种数据驱动的方法去代替手工设计的算法。
当我们(“人”)学习新技能的时候,我们很少从头开始,而是从之前学习到的相关技能开始,重复利用之前运作良好的方法,专注于根据经验值得一试的东西(Lake et al., 2017)。如果所有的技能都已经习得,那么学习新技能就会容易很多,因为它只需要更少的事例和反复试验。简单地说,我们从任务中“学习如何学习”。类似的,在为一个特定任务构建机器学习模型时,我们通常依据相关任务的经验去构建,或者使用我们对机器学习行为的理解(通常是隐含的)来帮助我们做出正确的选择。
元学习的挑战在于(需要准备一堆东西),以一种系统的、数据驱动的方式从先前的经验中去学习。首先,我们需要收集描述先前学习任务和学习模型的元数据。这些元数据包括用于训练模型的精确的算法配置(包括超参数设置、pipeline组合和/或神经网络结构),所得到的模型的评估(如精确度和训练时间),以及任务本身的可测量属性(即元特征(meta-features))。其次,我们需要从这个先前的元数据中学习,以提取和传递用于指导搜索用在新任务上的最佳模型的知识。本章简要概述了有效实现这一目标的不同元学习方法。
元学习一次可用于描述所有基于其他任务的先前经验来学习的方法。先前的任务越是相似,我们可以利用的元数据的类型就越多。关键的首要挑战在于定义任务的相似性。不用多说,没有免费的午餐(Wolpert and Macready, 1996; Giraud-Carrier and Provost, 2005)。如果新任务表示的是完全不相关的环境,或者只是随机噪声,那么利用先前的经验就会无效。幸运的是,在现实世界的任务中,有大量可以使用先前经验的机会。
在本文的剩余部分,按照利用的元数据类型,我们对元学习技术进行分类,从最一般到最具体的任务。首先,在第2节中,我们讨论如何纯粹的从模型评估中学习。这些技术可以用于提供通用的算法配置和配置查找区间,以及从经验相似的任务迁移知识。在第3节,我们讨论如何表征任务、用以更明确的表达任务之间的相似性,以及构建可以从数据表证和模型表现的关系中学习的元模型。最后,第4节包含如何在本质上相似的任务之间迁移模型参数,如迁移学习(Pan and Yang, 2010)和少样本学习(Ravi and Larochelle, 2017)。
注意,多任务学习(Caruana, 1997)(同时学习多个相关的任务)和集成学习(Dietterich, 2000)(在同一个任务上构建多个模型)通常可以与元学习系统进行有效的结合,但是它们本身不涉及从其他任务的先验知识中学习。
设有一系列先验任务 ,这里 是所有已知任务的集合。同时有学习算法的集合,这些学习算法由他们的配置 定义,这里 是超参数设置、方法元素以及网络结构的集合,可以是离散、连续或者混合分布的。 是配置 在任务 上的表现,根据某种预定义的评价指标(如精确度)和模型评估方法(如交叉熵),得到的先验标量评估结果的集合。 是已知的评估 在新任务 上的集合。我们希望可以学习一个在新任务 上预测建议的模型配置 的元学习器(meta-leaner) 。该元学习器在元数据 上训练。 通常是预先收集的,或者是从元数据资料库中提取的(Vanschoren et al., 2014, 2012)。 通过元学习技术以迭代的方式学习,有时是采用暖启动(warm-started)的方式从一个由其他方法生成的初始化状态 开始。
首先,假设我们没有关于 的任何评估,即 。这时我们仍然可以学习到函数 ,得到一系列与 无关的模型配置。这些 可以在新任务 上评估来选取其中最好的一个,或者以暖启动的方式进一步优化,正如我们在2.3节中讨论的那样。
一般而言,这些方法可以产生一个次序,即对 的排序。为完成这一排序,经典的方法是将 离散成一组可选配置 (即“组合”(portfolio)),然后在很多任务 上评估。然后我们可以为每一个任务构建一个排序,例如使用success rates, AUC, significant wins(Brazdil et al., 2003a; Demsar, 2006; Leite et al., 2012)。此外,我们希望对于两个效果一样的算法,速度快的一个排名更高,有很多权衡精度和训练时间的算法 (Brazdil et al., 2003a; van Rijn et al., 2015)。下一步,我们将这些在单一任务上的排序合计为全局次序,例如可以通过计算所有任务上的平均次序 (Lin, 2010; Abdulrahman et al., 2018)。如果数据不够、不足以构建全局次序,我们可以为每一个先验任务采用基于最了解的配置给出的配置集 (Todorovski and Dzeroski, 1999; Kalousis, 2002),或者返回准线性次序(quasi-linear rankings)(Cook et al., 1996)。
为找到一个用于未见过的任务 的最佳配置 ,一个简单通用的方法是选择前K个配置(Brazdil et al., 2003a),沿排序表依次评估每一个配置在 上的表现。在达到预设的 值、时间超限或找到足够精确的模型之后,暂停这个评估过程。在时间有限的情况下,已经表明多对象的排序(包括了训练时间)可以更快的收敛到近似最优模型(Abdulrahman et al., 2018; van Rijn et al., 2015),并且提供了用于算法比较的强大baseline(Abdulrahman et al., 2018; Leite et al., 2012)。
另一种方法是先拟合一个可微函数 ,它表示所有配置对于任务 的评估,然后使用梯度下降找到对于每一个任务的最优配置 (Wistuba et al., 2015a)。如果新任务 和某些任务 相似,那么对应的 可以用于贝叶斯优化方法的暖启动。
先验评估可以用于学习一个较好的参数配置空间 。虽然它与 独立,但由于查找只发生在参数配置空间的相关区域,因此也可以加速对于优化模型的查找。当计算资源有限的时候这一点很关键,这种方法被证明是AutoML系统实际比较中一个重要的因素(De Sa et al., 2017)。
首先,在功能ANOVA方法 (Hutter et al., 2014a)中,如果超参数解释了算法性能对于给定任务的大部分变化,则认为超参数重要。van Rijn 和 Hutter (2018)进行了250 000次OpenML实验,在100个数据集上使用3种算法评估了这项技术。
另一种方法是首先学习一个默认的最佳超参数配置,然后将超参数的重要性定义为可以通过调整超参数(而非保留默认值)来获得的性能增益。实际上,即使超参数可以导致算法性能的很多变化,仍然存在一个总能产生较好性能的超参数配置。Probst et al. (2018)使用6个算法、38个数据集的大约500 000次OpenML实验完成了此操作。第一步,针对大量任务训练一个算法的代理模型,对算法的所有超参数同时学习出默认值。第二部,对许多配置进行采样,通过最小化所有任务的平均误差来找到一个建议的默认配置。最后,调整每个超参数、看能够获得多少改进,以此来估计每个超参数的重要性(或可调性)。
Weerts et al. (2018)独立地学习每一个超参数的默认值,这里默认值定义为每个任务中出现频率前K的配置。在最佳默认值取决于元特征(例如训练样例或特征的数量)的情况下,模型学习到包括了这些元特征的简单函数。接下来进行的统计测试,通过在不调整一个(或者一组)超参数的同时调节其他所有的超参数,观察性能下降,来决定在默认值中是否可以安全保留该超参数。这在59个数据集上使用2种算法(SVM和随机森林)进行118 000次OpenML实验评估。
如果我们为特定任务提供推荐配置,我们需要其他信息来反映和先前任务 的相似程度。一种方法是在 上评估一些推荐的(可能是随机的)超参配置,产生结果 。如果 与 相近,那么根据经验证据,可以认为 和 内在相似。我们可以利用这一知识训练一个用于对 预测配置 的元学习器。此外,每一个选定的 都可以被评估,并包含在 中,重复循环并收集证据以了解哪些任务彼此相似。
任务相似性的第一个度量是一个特定任务 的两个配置 之间的相对(成对)性能差异,也称为相对界标(relative landmarks), (Furnkranz and Petrak, 2001)。主动测试(active testing)(Leite et al., 2012)对它们做如下运用:以全局最佳配置(见2.1节,称为 )暖启动,以“锦标赛”方式进行。在每一轮,选择在相似任务中最显著地优于 的“参赛者” 。如果任务的所有配置的相对界标相近,则认为任务相似,即,如果配置在 和 上的表现相似,则认为任务相似。接下来,评估参赛者 ,产生 ,更新任务相似性,重复此步。这种方法的局限在于它只能使用在许多先验任务上评估的配置 。
可以为所有先验任务 构建代理模型 ,它们使用所有可用的 训练,这是一种更为灵活的信息传递方式。然后,可以利用 和 之间的误差定义任务相似性,即,如果用于 的代理模型可以对 生成精确的预测,那么这两个任务本质上就是相似的。这通常与贝叶斯优化(Rasmussen, 2004)结合,用于确定下一次迭代的 。
Wistuba et al. (2018)基于高斯过程(Gaussian Processes, GPs)为每个先验任务训练代理模型,加上一个用于 的,然后将它们组成加权、归一化的和,其中(新的)均值 被定义为每个(从先验任务 获得的) 的加权和。使用Nadaraya-Watson核加权平均计算每个 的权重,其中每个任务表示为相对界标的向量,使用Epanechnikov二次核(Nadaraya, 1964)度量 和 的相对界标之间的相似性。 和 之间越相似,权值 就越大,代理模型对 的影响就越大。
Feurer et al. (2018a)提出将独立的高斯过程的预测分布组合起来,这使得组合模型再一次称为高斯过程。权重是通过Lacoste et al. (2014)的不可知贝叶斯集合(agnostic Bayesian ensemble)计算的。该权重根据预测模型的泛化性能的估计对预测模型进行加权。
除了代理模型,元数据也可以用于采集函数(acquisition function) (Wistuba et al., 2018)。代理模型仅仅在 上训练,但是有待评估的下一个 是由采集函数提供的,该函数是 上的期望性能改善 (Jones et al., 1998)以及所有先验 上的预测性能改善的加权平均。先验任务的权重可以通过代理模型或者相关界标的精确度来定义。期望改善的权重伴随证据 的增加而逐渐增大。
另一种确定先验任务 之间相关性的方法是使用 学习一个联合任务表示(joint task representation)。Perrone et al. (2017)对于特定任务使用贝叶斯线性回归(Bishop, 2006)代理模型 ,并将它们合并入一个前馈神经网络 ,该网络学习一个可以精确预测 的联合任务表示。代理模型在OpenML的元数据上预训练,用于在多任务学习配置中为 的优化提供暖启动。更早的关于多任务学习的工作(Swersky et al., 2013)假定我们已经有了一系列“类似”的原始任务 。这项工作通过构建用于贝叶斯优化的联合高斯过程模型来在 和 之间传递信息,该模型学习并利用任务之间的确切关系。但是,学习联合高斯过程的可扩展性往往低于为没在一个任务单独构建一个高斯过程。Springenberg et al. (2016)同样假设任务之间相关且类似,但是使用贝叶斯神经网络(Bayesian Neural Network)在优化过程中学习它们之间的关系。因此,他们的方法在某种程度上是前两种方法的混合。Golovin et al. (2017)假定了一个跨任务的序列(如时间)。他们的方法构建了一堆高斯过程回归器,为每个任务分配一个,训练每个高斯过程相对于之前的回归器的残差。这样,每个任务使用处于它之前的任务作为先验。
多臂匪徒(multi-armed bandits) (Robbins, 1985)提出了一种用于找到与 最相关的原始任务 的方法。在这种方法中,每一 是一个臂(arm),用于选择(拉动)特任先前任务(臂)的(随机)奖励是根据基于高斯过程的贝叶斯优化器的预测误差定义的。该优化器对 的先前噪声评估进行建模,并将它们( )与现有的 评估结合起来。不足之处在于高斯过程的三次缩放降低了这种方法的可扩展性。
另一种方法是采用现有的评估 ,使用汤普森采样(Thompson Sampling) (Thompson, 1933)来获取最优分布 ,然后估计 和 之间的KL散度(KL-divergence) (Kullback and Leibler, 1951)。这些分布合并到一个基于相似度的混合分布中,用于构建一个获取函数,该获取函数预测下一个用于评估的最可信的配置。到目前为止,这种方法仅仅运用于使用5个任务调整2个SVM模型的超参数。
最后,可以通过寻找不合适的配置的方法来利用 ,这是一种补充方法。首先针对每个任务训练代理模型,然后寻找与 最为相似的 ,之后使用 寻找性能较差的 区域。将这些区域排除在候选之外,可以更快找到性能更好的区域。Wistuba et al. (2015b) 使用基于Kendall tau秩相关系数(Kendall, 1938)的任务相似性度量来执行此操作,该度量是使用 和 对配置 进行排序得到的。
可以提取关于训练过程本身的元数据,例如当训练数据增加的时候模型模型的性能改善速率。如果我们将训练分为若干步骤 ,并在每一步增加一定量的训练数据,就可以度量配置 在任务 上经过 步后的性能 ,即时间步骤 期间的学习曲线(learning curve)。学习曲线可以广泛用于在给定任务上加速超参数的优化(Kohavi and John, 1995; Provost et al., 1999; Swersky et al., 2014; Chandrashekaran and Lane, 2017)。然而在元学习中,学习曲线蕴含的信息在不同任务之间迁徙。
在评估新任务 的配置时,我们可以在迭代一定次数 之后停止训练,使用获得的部分学习曲线、基于在其他任务上的先前经验来预测配置在整个数据集上的性能,以约定是否继续训练。这可以极大的加速对良好配置的查找过程。
可以假定相似任务的学习曲线也相似。首先,基于部分学习曲线的相似性定义任务之间的距离: ,其中 。接着,找到 个最为相似的任务 ,使用它们的完整的(训练完全后获得的)学习曲线以预测配置在新的完整数据集上的性能。可以比较所有配置下局部曲线的形状来度量任务相似性,将“最近邻”的完整曲线推广至新的局部曲线(Leite and Brazdil, 2005, 2007)用于预测(任务相似性)。这种方法在与激活测试(active testing)的结合中很成功(Leite and Brazdil, 2010)。使用包含了训练时间的多角度评价指标度量可以加速这种方法(van Rijn et al., 2015)。
有趣的是,虽然几种方法只在预测在神经网络搜索过程中的学习曲线 (Elsken et al., 2018),但是该工作并没有利用先前在其他任务中观察到的学习曲线。
手头任务的特征(元特征)可以作为丰富的元数据源。使用包含 个元特征 的向量来描述任务 , 是所有已知任务的元特征集合。这种方法可以使用基于例如 和 之间的欧氏距离等方法来定义任务相似性的度量,这样就可以将信息从最相思任务迁移到新任务 。此外,有了先前评估 ,就可以训练一个元学习器(meta-learner) ,用于预测配置 在新任务 上的性能 。
Table 1简要回顾了最常用的元特征,并对它们为何能够代表模型性能的原理做了简短的说明。在可能的情况下,我们提供了计算它们的公式。更多细节见参考文献(Rivolli et al., 2018; Vanschoren, 2010; Mantovani, 2018; Reif et al., 2014; Castiello et al., 2005)。
要构建元特征向量 ,需要选择并进一步处理这些元特征。对OpenML元数据的研究表明,最佳的元特征数据集取决于具体应用 (Bilalli et al., 2017)。许多元特征的计算基于是在单个特征或组合特征,需要通过概要统计(最小值、最大值、均值、标准差、四分位数)或直方图 (Kalousis and Hilario, 2001)的方法进行汇总。需要系统的提取、汇总这些特征(Pinto et al., 2016)。如果要计算任务相似性,很重要的几点是将所有元特征标准化 (Bardenet et al., 2013)、执行特征选择 (Todorovski et al., 2000)或采用降维技术(如PCA)(Bilalli et al., 2017)。 在学习元模型时,人们也可以使用关系元学习器(relational meta-learners)(Todorovski和Dzeroski,1999)或基于案例的推理方法(case-based reasoning methods)(Lindner和Studer,1999; Hilario和Kalousis,2001; Kalousis和Hilario,2003)。
除了这些通用的元特征,人们也指定了很多更具象的元特征。对于流形数据,人们可以使用流形标记(van Rijn et al., 2018, 2014);对于时间序列数据,可以计算自相关系数或者回归模型的斜率(Arinze, 1994; Prudˆencio and Ludermir, 2004; dos Santos et al., 2004);对于无监督问题,可以采用不同方式对数据进行聚类,并提取这些聚类的属性 (Soares et al., 2009)。在许多应用场景中,可以利用领域相关的特定信息(Smith-Miles, 2009; Olier et al., 2018)。
除了手动定义元特征,也可以学习任务组的联合表示。可以构建一个元模型,该元模型在给定其他任务的元特征 的基础上生成类似于标记的元特征表示 ,并在性能元数据$P$中训练,即 。Sun and Pfahringer (2013)实现了这种方法,他们在所有先前任务 上评估预定于的配置集合 ,对每一对的配置结合对 、 生成二元的元特征 ,该元特征表示 是否比 表现更好,于是 。对每一组 学习元规则(meta-rules),用于预测在给定其他元特征 的情况下、 在任务 上是否比 的表现更好,以此计算 。
也可以完全基于现有的元数据 学习联合表示,即 。之前在2.3节讨论过如何使用前馈神经网络实现之(Perrone et al., 2017)。如果任务之间共享输入空间,比如输入是相同分辨率的图像,那么可以使用Siamese网络学习元特征表示 (Kim et al., 2017)。训练时将两个不同任务的数据送进两个孪生网络,使用预测到和观察到的性能之间的差异 作为误差信号。由于在Siamese网络中两个网络的模型参数绑定,两个相似的任务就会映射到潜在元特征空间中的同一个区域。这可以用于对贝叶斯超参数优化(Bayesian hyperparameter optimization) (Kim et al., 2017)和神经结构搜索(neural architecture search) (Afif, 2018)的暖启动。
利用元数据,可以非常自然的估计任务相似性、初始化优化过程。这是根据类似任务的可信配置完成的。这类似于人类专家根据相关任务的经验手动搜索良好模型。
采用可信的解决方式在搜索空间中启用遗传搜索算法可以显著加速收敛到一个良好的解。Gomes et al. (Gomes et al., 2012)基于向量 和 之间的 距离找到前 个最为相似的先前任务 ,以此获取初始化配置,其中每个 包含 个简单统计元特征。对于 个最为相似的任务中的每一个任务,在 上评估最佳配置,使用最佳配置来初始化遗传搜索算法(Particle Swarm Optimization)和禁忌搜索(Tabu Search)。Reif et al. (2012)采用了一种非常简单的方式,使用 个简单的、统计学的标记元特征。他们使用前向选择技术找到最有用的元特征,然后使用修改的高斯变异操作(modified Gaussian mutation operation)对标准遗传算法(GAlib)进行暖启动。其他的方法包括使用元特征的主动测试变体(2.3节)(Miranda and Prudencio, 2013; Leite et al., 2012),但是性能没有基于地表的方法好。
可信配置的初始化集合极大的有助于基于模型的优化方法。SCoT (Bardenet et al., 2013)训练一个单模型的代理排序模型 ,它预测 在任务 上的秩。 包含4个元特征(3个简单特征,1个基于PCA的特征)。代理模型在所有排序(包括在 上的排序)上训练。使用排序是因为不同任务之间评估值的数量级可能差异非常大。高斯过程队规将排序转换为概率,用于贝叶斯优化,在每一步迭代之后使用新的 重新训练代理模型。
Schilling et al. (2015)使用修改的多层感知机作为代理模型,遵循 的格式,其中 是元特征, 是 个二元指示器, 表示元实例, 表示其他。该多层感知机在第一层使用基于因子分解机(factorization machines)(Rendle, 2010)的修改版激活函数,旨在为每一个任务学习潜在的表示、用于对任务相似性建模。由于该模型不能表示不确定性,训练100个多层感知机以获取预测均值和模拟方差。
在所有先前元数据上训练单个代理模型通常具有更差的可扩展性。Yogatama and Mann (2014)构建了单个贝叶斯代理模型,但是仅仅包含与 相似的任务,这里任务相似性由元特征向量之间的欧几里得距离定义,其中元特征向量由3个简单元特征组成。标准化 的值,用于解决不同 之间数量级不同的问题。代理模型在所有实例上学习具有特定内核组合的高斯过程。
Feurer et al. (2014)提出了一种更简单、可扩展性更强的方法,通过对所有先前任务进行排序来对贝叶斯优化进行暖启动。这种方法与Gomes et al. (2012)的方法类似,但是包含了46个简单、统计、标记的元特征,以及 。使用 个最相似任务上的 个最佳配置来对代理模型进行暖启动。它们比之前的工作在更多的超参数上进行搜寻,包括预处理步骤。在autosklearn中,这种缓启动方法用起来非常有效,并且与集成相结合 (Feurer et al., 2015)最后,可以使用协同过滤(collaborative filtering)获取可信配置(Stern et al., 2010)。打个比方,任务 (用户)提出对配置 (项目)的评级( ),使用矩阵因子分界预测未知的 值、获取对于任意任务的推荐配置。由于矩阵因子分界必须对 做一些评估,这里很重要的一点在于冷启动问题。Yang et al. (2018)使用D-优化实验设计来对评估 的初始化集合进行采样。他们同时预测性能和运行时间,获取又精确又快速的暖启动配置集合。Misir and Sebag (2013)和Mısır and Sebag (2017)利用元特征解决冷启动问题。Fusi et al. (2017) 也使用元特征,他们遵循和 Feurer et al. (2015)同样的步骤,使用概率矩阵因子分解方法(采用贝叶斯优化)来进一步优化配置 。这种方法也可以输出对于任务和配置的可能有用的嵌入。
通过构建元模型 ,我们可以学习到任务的元特征与应用场景下的特定配置之间的复杂关系,该元模型对给定新任务 的元特征 输出最优配置 。在构建用于算法选择(Bensusan and Giraud-Carrier, 2000; Pfahringer et al., 2000; Kalousis, 2002; Bischl et al., 2016)和超参数配置 (Kuba et al., 2002; Soares et al., 2004; Ali and Smith-Miles, 2006b; Nisioti et al., 2018)的元模型方面,已经有大量的先前工作 (Brazdil et al., 2009; Lemke et al., 2015; Giraud-Carrier, 2008; Luo, 2016)。实验表明,提升和集成树通常输出最佳预测,然而这需要使用准确的元特征 (Kalousis and Hilario, 2001; Kopf and Iglezakis, 2002)。
元模型可以用于生成前 个最可信的配置排序。一种方法是构建k近邻元模型用于预测相似的任务,然后对这些相似任务的最佳配置进行排序 (Brazdil et al., 2003b; dos Santos et al., 2004)。这与3.3节中讨论的方法类似,但与后续的优化方法无关。专用于排序的元模型表现出良好的效果,如预测聚类树(predictive clustering trees)(Todorovski et al., 2002)和标签排序树(label ranking trees)(Cheng et al., 2009)。近似排序树森林(Approximate Ranking Trees Forest, ART Forest)(Sun and Pfahringer, 2013)是快速排序树的集成,这种方法特别有效,因为这种方法内建对元特征的选择,即使可用的先前任务很少也可以有效,并且“集成”使得这种方法具有更好的鲁棒性。AutoBagging (Pinto et al., 2017)对包含有4个不同Bagging超参的Bagging工作流进行排序,它使用基于XGBoost的排序器,在140个OpenML数据集、146个元特征上训练。Lorena et al. (2018) 基于数据的复杂程度,使用KNN元模型和一种新的元特征来获取用于回归问题的SVM的推荐配置。
给定任务和元特征,元模型可以直接预测配置的性能,如准确率或训练时间。这样我们就可以评估配置是否在优化过程的所有步骤中都值得评估。早期的工作使用线性回归或基于规则的回归预测离散配置集合的性能,并对它们进行排序(Bensusan and Kalousis, 2001; Kopf et al., 2000)。 Guerra et al. (Guerra et al., 2008)为每个分类算法训练一个SVM元回归器,用于预测其在默认配置下、对于新任务 在给定元特征的情况下的准确率。Reif et al. (Reif et al., 2014)在更多的元数据上训练类似的元回归器,预测其优化性能。Davis et al. (Davis and Giraud-Carrier, 2018) 使用基于多层感知机的元学习器,预测特定算法配置的性能。
除了预测可预测的性能,元回归器也可以用于预测算法的训练/预测时间,如使用SVM回归器在元数据上训练(Reif et al., 2011),通过通用算法调整自身(Priya et al., 2012)。Yang et al. (2018)仅仅基于实例和特征的数量,使用多项式回归器预测配置的运行时间。Hutter et al. (2014b)给出了预测算法在不同领域上的运行时间的通用论述。
这些元模型中的大部分生成可信的配置,但是并不真正将配置调整到 上。相反,预测可以用于暖启动或者知道其他的优化技术,这样就可以对元模型和优化技术进行各种组合。实际上,在3..3节中论述的部分工作可以认为是采用基于距离的元模型对贝叶斯优化(Feurer et al., 2014; Fusi et al., 2017)或发展算法(Gomes et al., 2012; Reif et al., 2012)进行暖启动。原则上,这里也可以使用其他元模型。
除了学习任务的元特征与配置性能之间的关系,也可以构建用于预测配置在给定任务上的性能的代理模型。 ( Eggensperger et al., 2018)。可以将对每个任务的预测结合起来,用于对新任务 的暖启动或引导其他优化技术(Feurer et al., 2018a; Perrone et al., 2017; Springenberg et al., 2016; Wistuba et al., 2018),就像在2.3节中讨论的那样。虽然可以基于任务相似性、使用元特征对每个任务的预测进行结合,但是收集新的观测结果 最终更为有效,这是因为它们允许采用每一个新的观测结果来提炼任务相似性(Feurer et al., 2018b; Wistuba et al., 2018; Leite et al., 2012)。
设计机器学习方法的时候, (Serban et al., 2013)可用配置的数量飞速增长,因此充分利用先前经验至关重要。一种方法是在控制搜索域的时候对方法施加一个混合结构,该结构完全由超参数集描述。然后就可以使用在相似任务上最可信的方法来对贝叶斯优化进行暖启动 (Feurer et al., 2015; Fusi et al., 2017)。
其他的方法指出机器学习流程(pipeline)的具体步骤(Post et al., 2016; Strang et al., 2018),可以用在构建更大的流程上,如planningg (Nguyen et al., 2014; Kietz et al., 2012; Gil et al., 2018; Wever et al., 2018) 或者进化技术(evolutionary techniques) (Olson et al., 2016; Sun et al., 2013)。 Nguyen et al. (2014)使用以元学习器推荐的组件为基础的波束搜索(beam search)来构建流程,就先前成功的流程样例进行了自训练。Bilalli et al. (2018)预测针对给定的分类算法的预处理技术。它们为每一个目标分类算法构建一个元模型,其中给定了元特征 ,要求预测哪些预处理技术应该包含在机器学习流程中。类似的,Schoenfeld et al. (2018)构建元模型,用于对预处理算法在何种情况下将改善特定分类器的准确率或运行时间进行预测。
AlphaD3M (Drori et al., 2018)使用了自发强化学习的方法,其中当前状态由当前流程表示,动作包括了对流程组件的添加、删除和替换。一个蒙特卡洛搜索(Monte Carlo Tree Search)被用于生成流程,对其进行的评估被用于训练递归神经网络(LSTM),该网络预测流程的性能,从而在下一轮中产生MCTS进行某种动作的概率。状态描述还包括当前任务的元特征,这样就允许神经网络跨任务学习。
为了减少待优化的参数数量,并且在时间有限的情况下节省宝贵的优化时间,在给定手头任务的元特征的情况下,人们提出元模型来预测给定的算法是否值得调整 (Ridd and Giraud-Carrier, 2014),以及和增加额外时间投资相比对特定算法的调整可以带来多大收益 (Sanders and Giraud-Carrier, 2017)。人们对特定学习算法进行了更有针对性的研究,提出元模型用于预测何时需要调整SVM (Mantovani et al., 2015a)、对于给定任务的优良SVM默认超参数(包括可解释的元模型) (Mantovani et al., 2015b)以及如何调整决策树 (Mantovani et al., 2016)。
我们可以学习的最后一种元数据是先前的机器学习模型本身,即它们的结构及模型参数。简言之,我们希望训练一个元学习器 ,该学习器在给定相似任务 和对应优化模型 的前提下,学习针对新任务 的(基础)学习器 的训练方法,这里 是所有可能模型组成的空间。学习器 一般由其模型参数 及/或其配置 定义。
在迁移学习(transfer learning) (Thrun and Pratt, 1998)中,我们采用在一个或多个源任务 上训练的模型,并将它们用作在类似目标任务 上创建模型的起点。这可以通过强制目标模型在结构上或其他方面与源模型相似来完成。这是一个普遍适用的方法,迁移学习方法已经被提出于核方法(Evgeniou et al., 2005; Evgeniou and Pontil, 2004)、参数贝叶斯模型(Rosenstein et al., 2005; Raina et al., 2006; Bakker and Heskes, 2003)、贝叶斯网络(Niculescu-Mizil and Caruana, 2005)、聚类 (Thrun, 1998) 和强化学习 (Hengst, 2002; Dietterich et al., 2002)。然而,神经网络特别适合迁移学习,这是因为源模型的结构和模型参数都可以用作目标模型的良好初始化,从而产生预训练的模型,然后可以使用在 上可用的训练数据进行进一步的微调(Thrun and Mitchell, 1995; Baxter, 1996; Bengio, 2012; Caruana, 1995)。在某些情况下,源网络可能需要在迁移之前做修正(Sharkey and Sharkey, 1993)。在本节的剩余部分我们会聚焦于神经网络。
特别大的图像数据集如ImageNet (Krizhevsky et al., 2012)已被证明可以产生可良好迁移至其他任务的预训练模型(Donahue et al., 2014; Sharif Razavian et al., 2014)。然而,当目标任务不那么相似时,这种方法不能很好的起作用(Yosinski et al., 2014)。我们可以有目的地为元学习器提供归纳偏见(inductive bias),使它们能够更快地学习新任务,而不是希望预训练模型能够更好地迁移到新问题中,我们将在下面做这个讨论。
早期的元学习方法创建能够修改自身权重的递归神经网络(RNN) (Schmidhuber, 1992, 1993)。 在训练期间,它们使用自己的权重作为附加输入数据并观察它们自己的误差,以学习如何根据手头的新任务 修正这些权重。 权重的更新以参数形式定义,该参数形式端到端可区分,可以使用梯度下降来联合优化网络和训练算法,但是很难训练。 后来的工作使用了跨任务的强化学习来将搜索策略(Schmidhuber et al., 1997) 或用于梯度下降的学习率 (Daniel et al., 2016)适应到手头的任务。
受到反向传播不太可能是我们自己大脑的学习机制这一感觉的启发,Bengio et al. (1995) 用简单的受生物学启发的参数规则(或演化规则 (Chalmers, 1991))取代反向传播,来更新突触权重。在一组输入任务中使用例如梯度下降或演化的方法来优化参数。Runarsson and Jonsson (2000)使用单层神经网络取代这些参数规则。Santoro et al. (2016b) 改为使用记忆增强神经网络,用于学习如何存储和检索先前分类任务的“记忆”。Hochreiter et al. (2001) 使用LSTM(Hochreiter and Schmidhuber, 1997) 作为元学习器,来训练多层感知机。
Andrychowicz et al. (2016)将优化器(如随机梯度下降)替换为在多个先前任务上训练的LSTM。元学习器(优化器)的损失被定义为基础学习器(优化器)的损失之和,使用梯度下降进行优化。在每一步中,元学习器基于前一步的学习模型权重 以及当前性能梯度,选择估计的权重更新,以最大程度地减少优化器的损失。后来的工作使用梯度下降在合成函数上训练优化器来通用化这种方法(Chen et al., 2016) 。这允许元学习器对优化器进行优化,即便它们无法访问到梯度。
同时,Li and Malik (2016)从强化学习的角度提出了学习优化算法的框架。它将任意特定优化算法表示为策略,然后通过引导策略搜索学习此策略。后续工作(Li and Malik, 2017)展示了如何利用这种方法来学习到(浅层)神经网络的优化算法。
神经网络结构搜索(neural network architecture search)包含许多其他对特定任务进行神经网络性能建模的方法,例如使用贝叶斯优化或强化学习。深度的讨论见Elsken et al. (2018)。然而,其中的大部分方法并不在任务之间通用,因此不再这里讨论。
一个特别具有挑战性的任务是,给定已有大量可用训练集的相似先前任务,使用少量训练样例训练一个准确的深度学习模型。这称为少样本学习(few-shot learning)。人类天生可以这么做,我们希望构建能够做到这一点的机器学习模型(Lake et al., 2017)。这方面的一个特定例子是“K样本N路”(K-shot N-way)分类,其中我们给出某些类(如对象)的许多样例(如图像),希望学习到一个分类器 ,该分类器可以仅仅使用每个新类的 个样本对 个新类进行分类。
例如,使用先前的经验,我们可以学习所有任务的共同特征表示,通过更好的初始化模型参数 初始化训练 ,获得有助于指导模型参数优化的归纳偏差,这样 的训练比起其他方法更快。
早期的关于单样本学习的工作主要基于手动设计的特征 (Fei-Fei et al., 2006; Fei-Fei, 2006; Fink, 2005; Bart and Ullman, 2005)。然而,通过元学习,我们希望以端到端的方式学习所有任务的共同特征表示。
Vinyals et al. (2016)指出,如果要从非常少的数据中学习,应该寻找非参数模型(如K近邻),它们使用记忆组件(memory component),而不是学习很多模型参数。它们的元学习器是一个匹配网络,该网络在神经网络中应用了记忆组件的概念。它学习标记样例的通用表示,并使用余弦相似性将每个新测试实例与存储中的样例相匹配。该网络在minibatch上训练,每一个minibatch只有一个特定任务的几个样例。
Snell et al. (2017)提出原型网络(Prototypical Networks),它将样例映射到 维向量空间,是的给定输出类别的样例彼此接近。然后它为每一个类别计算原型(平均向量)。新样例会被映射到相同的向量空间,使用距离度量在所有可能的类别间创建softmax。Ren et al. (2018)将这种方法扩展到半监督学习。
Ravi and Larochelle (2017)使用基于LSTM的元学习器来学习用于训练神经网络学习器的更新规则。对于每一个新样例,学习器将当前梯度和损失返回给LSTM元学习器,然后LSTM元学习器会更新学习器的模型参数 。元学习器在所有先前任务上进行训练。
另一方面,模型不可知元学习(Model-Agnostic Meta-Learning, MAML) (Finn et al., 2017) 并不试图更新学习规则,而是学习模型的初始化参数 ,它能更好的概括类似的任务。开始的权重的随机初始化 ,它迭代的选择一批先前任务,对每一个任务在 个样例上训练学习器,计算梯度和(在测试集上)损失。然后,对元梯度进行反向传播,在更容易更新的方向上更新权重 。换句话说,在每次迭代之后,权重 会变成更易于对任意任务进行微调的 。Finn and Levine (2017)表明,当使用足够深的ReLU网络和正确的损失时,MAML可以近似任意学习算法。他们同时还得出结论,MAML初始化方法对于小样本上的过拟合更具有弹性(更容易从过拟合中恢复),相比于基于LSTM的元学习方法的通用性更好。Grant et al. (2018) 呈现了MAML的新颖推导和扩展,说明该算法可以理解为分层贝叶斯模型中对先验分布的参数模型的推断。
PERPTILE (Nichol et al., 2018) 是对MAML的近似,这种方法对给定任务的 次迭代执行算计梯度下降,然后在获得的权重方向上逐渐移动初始化权重。这种方法基于这样一种直觉,即每个任务可能有一组以上的最佳权重 ,目标是为每个任务找到接近至少其中一个 的 。
最后,我们可以从黑盒神经网络中导出元学习器。Santoro et al. (2016a) 提出记忆增强神经网络(Memory-Augmented Neural Network, MANNs),这种方法训练神经图灵机(Neural Turing Machine, NTM) (Graves et al., 2014) 作为元学习器,这是一种具有增强记忆能力的神经网络。这个元学习器可以记住有关先前任务的信息,并利用这些信息学习到学习器 。SNAIL (Mishra et al., 2018)是一种通用的元学习器架构,由交织的时间卷积和因果关注层组成。卷积网络学习到训练样例(图像)的通用特征向量,以将来自过去经验的信息进行聚合。因果关注层从所收集的经验中挑选出用于推广到新任务的信息。
总之,对于开创性新思想来说,深度学习和元学习的交叉点已经被证明是特别肥沃的土壤,我们希望这个领域随时间推移变得更加重要。
元学习当然不仅限于(半)监督学习,它也已经成功应用于解决一系列任务,如强化学习,主动学习,密度估计和项目推荐。在监督元学习器时,基础学习器可能是无监督的,但是其他组合也是有可能的。
Duan et al. (2016) 提出了一种端到端的强化学习(Reinforcement Learning, RL)方法,这种方法由针对特定任务的快速RL算法组成,这些算法由通用慢速RL算法所引导。这些任务是相互关联的马尔科夫决策过程(Markov Decision Process, MDPs)。元RL算法被建模为RNN,以接受其观测结果、动作、奖励和终止标志。RNN的激活状态存储了快速RL学习器的状态,通过观测夸人物的快速学习器的性能来学习RNN的权重。
Wang et al. (2016) 提出使用深度RL算法训练RNN,获取先前间隔的动作和奖励,用于学习用于特定任务的基准RL算法。这种方法不是使用诸如MDP之类的相对非结构化的任务,而是关注结构化任务分布(如依赖性匪徒),其中元RL算法可以利用固有任务结构。
Pang et al. (2018) 提供了一种用于主动学习(Active Learning, AL)的元学习方法。基准学习器可以是任意的二分类器,元学习器是一个深度RL网络,由深度神经网络和策略网络组成,其中深度神经网络学习跨任务的AL问题表示,策略网络学习最优策略,在网络中被参数化为权重。元学习器获取当前状态(无标签点集和基础分类器状态)和奖励(基础分类器的性能),输出质询概率,即在未标记的集合中指向下一次质询的概率。
Reed et al. (2017) 提示了一种用于密度估计(Density Estimation, DE)的小样本学习方法。目标是学习少量具有特定概念的图像的概率分布,以用于生成具有这种概念的图像,或者计算图像具有这种概念的概率。这种方法使用自动回归图像模型,将联合分布分解为单像素因子,通常以(许多)目标概念的样例作为条件。使用了基于MAML的小样本学习器,在事多其他(类似的)概念的样例上进行训练。
最后,Vartak et al. (2017) 解决了矩阵分解中的冷启动问题。他们提出一种深度神经网络结构,用于学习一个(基础)神经网络,其偏差根据任务信息进行适应。虽然神经网络推荐器的结构和权重保持固定,但是元学习器可以学习到如何根据每个用户的项目历史来适应偏差。
所有这些最近的新的发展表明,通过元学习角度(meta-learning lens)观察问题,并找到新的数据驱动的方法,来取代基于手工的基础学习器,是富有成效的。
元学习器以多种不同的方式进行呈现,可以采用很多学习技术。每当我们尝试学习某项任务的时候,无论成功与否,我们都可以获得有用的经验,并且利用这些经验来学习新的任务。我们永远不应该从头开始。相反,我们应该系统化地收集“学习浪费”(learning exhaust),并且从中构建AutoML(自动学习系统)系统,不断改建,帮助我们更有效地解决新的学习问题。我们积累到的新任务越多,新任务越相似,我们就越能利用之前的经验,以至于大部分必要的学习已经事先完成。计算机存储系统几乎无限量的先前学习经验(以元数据的形式)创造了大量的以全新方式使用这一经验的机会,我们只是仅仅开始学习如何有效利用先前经验。然而,学习如何学习任意任务,使我们不仅仅知道如何学习特定的任务,这一目标极富价值。