开始一个机器学习项目设计时,不会从零开始,一般会从已经有的实验,或者人们对机器学习任务的理解开始构建整个机器学习模型。
元学习就是从数据出发进行学习,所需的数据是之前已经进行过的实验数据,包括之前训练模型的算法配置、超参数、网络结构、训练时间、模型评估等等,目的是从其中提取出新任务的最优模型或初始值。
虽然新任务可能可能有完全不相关的属性或者噪音,但是一般实际情况中,新任务可以从以前的经验中学习。
本章2.2讨论如何从之前的模型评估中学习,目的是为新任务推荐模型配置方式和配置搜索空间。2.3讨论如何恰当表达任务的相似性,构建模型来学习数据特征和学习性能之间的关系。2.4讨论如何在本质上相似的任务之间转移训练过的模型参数,从而实现“转移学习”。
定义: P40
T是所有先前任务集合,Θ是所有先前任务的配置,是离散的表示,包括模型的各种数据,P是一个矩阵表示某个配置下某个任务的评价情况,目标Θnew是新任务的最优配置
想法是找到一个从Θ x T到一个集合θk的映射,θk表示对于某个新任务的所找到的一个模型配置序列,其中一共有k个参数配置,然后从中找到评价最优的配置作为任务的模型初始参数,模型配置的评价标准可以是结果的精确度和训练时间。需要注意的是这里推荐的配置与任务没有任何关系,只是根据先前经验选出了好的参数配置,然后应用于新任务观察效果、对表现进行排序。
另一个思路是对先前的任务 tj 找到一个函数 fj (θi) = Pi,j 通过分析函数找到最优的配置,对于与 tj 相似的新任务,使用求得的最优配置作为初始值。
超参数被认为是对模型影响较大的因素,所以一种探索方式是先设置默认起始参数,然后将参数调整,观察模型可能获得的效果增益。通过为实际任务设计代理模型,学习到所有超参数的默认值,使得对所有任务的风险最小化的配置是推荐的默认配置。然后调整每个超参数,通过调整参数获得的改进程度来衡量每个超参数的重要性。但实际应用中,可能会存在总是适用的参数配置。
有文献将默认值独立于超参数进行学习,并且确定默认配置的方式是找到每个人物的top-K最好的配置中最频繁出现的配置。
也可以通过没有调参时的loss情况,利用统计分析出哪些参数是可以保持不变的。
当我们判断新任务是否和先前任务相似度时,标准可以是,当相同的参数配置对新旧任务的模型评价相似,那可以认为两个问题相似。我们可以用这一点构建元学习机器来找到新任务的最优配置。
给出定义Relative Landmarks:意思是两个配置对于同一个模型的评价差异。文献【85】从2.2.1中指出的推荐配置出发,通过寻找更优的配置进行调整。如果两个任务的所有配置的评价差异,即 Relative Landmarks ,相差较小,则认为任务是相似的。之后,每次搜索出更优的配置之后计算Relative Landmarks,再寻找相似任务,之后重复。缺点是,我们只能寻找之前存在的,已经在各个任务中计算过的配置中候选。
使用代理模型,对先前的所有任务内容,我们做出代理模型,求出对应配置对代理模型的评价,如果代理模型能对新任务能够产生合适的预测,则认为这些任务是相似的。这种方法通常和贝叶斯优化相结合来预测下一个配置。
多任务学习假设已有的多个任务是相关且相似的,利用高斯过程建立贝叶斯优化,来学习已有的相似任务和新任务的关系。学习一个联合的GP比为每个任务建立一个GP更轻量。
learning curves的意思是利用之前训练过程中特定配置在特定任务中训练过程中表现随着训练轮数的变化情况的曲线,预测某配置在新任务上继续训练可能出现的训练效果,这能帮助判断当前配置是否是理想配置。操作方法是,首先找到在各个配置下的训练曲线都相似的任务当作相似任务集合, 然后使用这个他们训练中配置的变化曲线对新任务的情况进行预测。
即,从任务本身进行学习,每个任务tj都通过一个k维向量m来描述其特性,向量中包含其k个元属性,所以任务的相似程度就可以用向量之间的欧式距离来表达,并且可以预测指定的配置对于一个新任务来说是否合适。
P46表中给出了常用作指标的元属性,我们给出了为什么它们起作用,并且对有些属性给出了计算方法,文献中可以找到对它们更精细的描述。
在计算任务相似性时,标准化所有元特征、执行特征选择,或使用降维技术也很重要。
除了这些常用元特性,对于特定任务,我们也可能用到其他形式的元特性。
除了人工定义元属性,我们也可以学习一个综合的一组任务的表示。已有方法利用先前任务特征和模型表现的数据训练了元模型,给出了衡量任务特征的指标。也可以只根据之前模型参数评价给出综合特性。
通过元特性来评估任务的相似性是非常自然的想法,它类似与专家在获得相关任务经验之后进行手工搜索模型的过程。
在可能有最优解的区域进行遗传搜索能加快收敛速度,效果良好。【59】中通过向量表示任务,向量中的各维度表示元属性,获取了与新任务相似的一组先前任务,将先前任务上表现最好的配置作为初始配置进行训练。
我们还可以通过构建元模型L来了解任务的元特性和特定配置之间的复杂关系,使得L能够直接通过新任务的元特性情况直接给出最优配置θ*
meta-model能给出几个可能的最优配置的排序,使用的方法是找到一个相似度高的任务集合,以配置在其中的表现为依据进行排序。
meta-model也能直接地预测配置参数的表现,包括模型精度或者训练时间,在给定元特性的任务上。早期的工作使用线性回归,对离散配置的表现进行排序。之后有使用SVM以及多层感知机对这个任务的研究。
除了学习任务的元特性和配置性能之间的关系,还可以构建代理模型来预测特定任务[40]上参数配置的性能。
当创建整个机器学习管道时[152],参数的数量急剧增加,这使得利用以前的经验变得更加重要。我们可以通过在管道流上施加一个固定的结构来控制搜索空间,该结构由一组超参数描述。然后我们可以在类似的任务中使用效果最好的结构作为贝叶斯优化的初始值[46,54]
有方法对管道的建立过程提供指导,使用planning 或者 evolutionary techniques进行更大的管道建设方法。
【105】使用定向搜索构建新的管道,主要关注元学习者推荐的组件,【18】给出对于给定的分类算法推荐那些预处理技术。
【38】使用强化学习,当前状态就是当前管道的状态,操作包括添加、删除和替换,通过蒙特卡洛树搜索生成管道,评价之后用于训练一个可以预测模型表现的LSTM,从而生成下一轮MCTS的动作概率,状态也包括任务的元特性。
提出质疑:对于消耗的时间来说,对参数的调整是否值得,能获得多大的改进,有文献探究了对SVM是否有必要调参的问题。
从先前模型的结构和模型参数中学学习。简而言之,我们要训练一个元学习器L,它学习如何为一个新任务tnew训练一个基础学习器lnew,给定相似的任务tj∈T和相应的优化模型配置lj∈L,其中L为所有可能模型的空间。学习器lj通常由其模型参数W = {wk},或配置情况定义。
【169】中提到的迁移学习,将之前在多个任务上训练的模型应用到相似的新任务作为初值。对于这个想法,已经有文献在贝叶斯网络、聚类、强化学习的方面有了研究。
其实对于神经网络来说,特别适合进行迁移学习,因为先前模型结构和参数可以作为新的模型的初始化,在应用于新任务之前,模型可能需要进行一定的调整,之后在其基础上进行调参,本节剩余部分重点讨论神经网络。
有文献已经指出 ImageNet 在迁移以后可以做到非常好的效果,然而也有人指出,对于不相似的任务,很可能结果会很差。我们想要的不是迁移学习造成的偶然的好结果,而要探讨通过一些相似任务获取一些归纳的因素来使得迁移学习更好的适用于新的任务。
早期的元学习方法是创建能够修改自身权重的递归神经网络(RNNs),文献【148、149】研究过这点。在训练过程中,使用模型自身的权重作为额外的输入数据,并观察自己的错误,以学习如何修改这些权重,以响应模型效果。权值的更新定义为端到端可微的参数化形式,可以利用梯度下降法对网络和训练算法进行联合优化,但训练难度较大。后来的一些文献中给出使用强化学习来指定搜索策略对参数进行优化。
考虑到神经网络的反向传播并不是人脑处理信息的方法,有文献【12】指出使用仿生学的方式更新参数,在一组任务中,参数通过梯度下降或者进化的方式进行调整。也有文献【141】将这种参数方法用单层神经网络进行替代。文献【145】使用增广的神经网络来记录和回溯之前的分类任务。【65】中使用LSTM来训练多层感知机。
【6】使用经过之前任务训练过的LSTM替代了随机梯度下降,优化器的损失函数被定义为基础学习者损失的总和,并使用梯度下降进行优化。每一步朝最优的减小损失函数的方式进行。【28】将这种方式优化,使得对于一些没有梯度的情况得以处理。
【89】中提出了一个从强化学习的角度学习优化算法的框架。【90】将这种方法应用与浅层神经网络。
神经结构搜索领域包括许多其他方法,这些方法为特定任务构建神经网络性能模型,例如使用贝叶斯优化或强化学习。参见第3章进行深入讨论。但是,这些方法中的大多数还没有在任务之间进行泛化,因此这里不进行讨论。
Few-Shot Learning 是指我们有为数不多的几个相似任务的学习经历,而有大量训练集的情况。人类有这种处理能力,我们希望agent也能有这样的功能。
一般情况下,这种问题是从一个初始的权重出发,然后通过归纳将系数进行调整。
【180】中指出,要从很少的数据中进行学习,应该关注非参数化模型,它使用内存组件而不是学习许多参数,它学习示例的公共表示,当出现新的实例时,将新实例与已经记忆的实例进行匹配。
【156】中使用一个向量来表示每个实例,将各个向量取平均值来表示一个实例的类,将一个新的实例对已有的各个类进行匹配,使用softmax。【130】将这个方法扩展到半监督学习。
【125】中使用LSTM来对learner进行调整,对每个新的实例,learner都将当前的梯度值和损失输入到LSTM,然后LSTM将算出的权重再返还到learner中。
【51】中提出MAML(Model-Agnostic Meta-Learning),用来学习更好的初始权重,达到了更易于优化的效果,并且能够迅速脱离过拟合的情况。
REPTILE 【106】是MAML的近似,使用随机梯度下降的方法,启发思想是每个任务都可能有不止一组最优权重,目的是使初始权重至少接近其中的至少一个最优权重。
【144】提出Memory-Augmented Neural Networks (MANNs),通过训练一个Neural Turing Machine (NTM) [60],将它当作具有增广记忆空间的元学习机器。这个机器能够将之前的任务记忆,并利用此训练一个学习者。 SNAIL [101]是一种通用的元学习者结构,由交错的时间卷积和因果注意层组成。卷积网络为训练实例(图像)学习一个公共特征向量,以从过去的经验中收集信息。因果注意层学习从所收集的经验中挑选出哪些信息,并将其推广到新的任务中。
总的来说,深度学习和元学习的结合能够达到一些意想不到的好结果,我们希望这个领域随着时间的推移能取得更多成果。
元学习当然不局限于(半)监督任务,它已经成功地应用于各种各样的任务,如强化学习、主动学习、密度估计和项目推荐。基础学习者(即任务本身)可能是无监督的,而元学习者是受监督的,但其他组合当然也有可能。
【39】提出端到端强化学习,该方法由任务特定的快速强化学习算法和通用慢速元强化学习算法组成。任务是相互关联的马尔可夫决策过程。
【181】也提出使用深度RL算法训练RNN,接收前一区间的动作和奖励,学习针对特定任务的底层RL算法。
【112】提出了一种主动学习的元学习方法,基础学习者可以是任何二分类器,元学习者是一个深度学习者。
【126】提出了一种用于密度估计(DE)的少样本方法。
【177】解决了矩阵分解中的冷启动问题。他们提出了一种深度神经网络结构,该结构学习了一个(基础)神经网络,该神经网络的偏差是根据任务信息进行调整的
所有这些最近的新进展表明,从元学习的角度来看待问题,并找到新的、数据驱动的方法来取代手工设计的基础学习者,往往是卓有成效的。
对新任务我们不应该从0开始,应该从之前相似的任务中获取经验。如何有效地从先前知识中学习,重要于知道如何学习特定任务。