朱应钊,李嫚
(中国电信股份有限公司研究院,广东 广州 510630)
在人工智能(artificial intelligent,AI)发展的历史长河中,深度学习的出现具有里程碑式的意义,其中的卷积神经网络(convolutional neural network,CNN)[1]、自编码器(auto-encoder,AE)[2]、循环神经网络(recurrent neural network)[3]、递归神经网络(recursive neural network)[4]及深度置信网络(deep belief network,DBN)[5]已广泛应用于图像分类、语音识别、文本处理等领域,极大推动了农业、工业、军事、航空等行业进步发展[6]。虽然深度学习在感知能力方面很强大,但是其在决策能力方面还是比较欠缺的,而后,融合了深度学习与强化学习的深度强化学习问世了。深度强化学习采用不断与实际环境进行交互[7],且在这过程中以保证累积奖赏最大化来获得最优策略的试错方式,能有效优化序列决策的问题,增强人工智能的行为决策能力[8]。可无论是单一深度学习还是深度强化学习,它们的成功在很大程度上都依靠于数百万的训练样本及大规模的计算资源。一旦缺乏这两个条件,它们的性能会大打折扣,而且这样“暴力”的学习方式与人类高效快速的学习方式有较大出入。如基于深度强化学习的智能体[9]玩《雅达利游戏》需要83 小时才达到人类玩家的水平,但对于人类玩家来说,几分钟就能上手。如小孩一般只需见过几次小猫和小鸟后就能分辨它们,但基于深度学习的系统需要大量的样本训练后才能区分出小猫和小鸟。为此,现有的深度学习算法和强化学习算法等都过于依赖数据与算力,很多领域的可用样本实例是极其稀少的,且庞大的算力需求条件也会有一定的受限,导致这些算法的应用出现很大的局限性。为了突破这些界限,人工智能非常需要一种学会如何学习、快速学习的能力,才能实现进一步的革新。元学习应运而生,是可以协助人工智能实现自主学习、快速适应上手各项新的复杂任务的强有力工具。所以,有必要对元学习进行深入的研究。
元学习,亦被称为学会学习,以系统的、数据驱动的方式再利用之前学过的知识或以往的经验,让人工智能实现自主、快速学会新任务。即元学习随着对每一项历史任务的学习和经验积累,在学习新任务时可以变得更加容易,所需要的训练样本更少,同时还能保证一定的算法精度。元学习旨在学会如何学习,区别于以映射方式为主的深度学习和以试错方式为主的强化学习,深度学习和强化学习的原理框图分别如图1、图2所示。
图1 深度学习原理框图
图2 强化学习原理框图
迁移学习与元学习的目标都是希望通过利用先前学到的知识快速地掌握新的技能或概念。但是,迁移学习侧重于在实例空间进行训练,通过优化单个整体任务作为转移源来训练基础模型[10]。迁移学习原理框图如图3 所示,常用的已训练好的开 源 网 络 模 型 有 VGG[11]、 ResNet[12]及GoogleNet[13]等。选择合适的模型直接迁移到目标网络上,再利用少量标注样本对目标网络进行微调;而元学习是在任务空间中进行训练,元学习的原理框图如图4 所示。每当模型尝试学习某项任务时,无论成功与否,模型都会获得有用的经验,整合这些经验形成智能体的“价值观”,代表一种会学习的能力,即抽象成函数F(x)。若出现新的任务,在“价值观”的协助下,模型继续学习新任务的极少量样本,即可快速适应和掌握新任务,也就是抽象出一个个对应新任务i的函数fi(x)。元学习比迁移学习对未知新任务的适应有着更好的稳健性。
实现以系统的、数据驱动的方式从历史经验中学习是元学习的关键。其中,以往的经验以元知识的形式进行存储,元知识包括权重参数、超参数设置、网络架构、模型性能评估函数等,元知识涵盖的远不止这些。通过将从历史任务中学到的高辨识特征投影到高维空间上,形成高度压缩元表示,组成价值经验集。另外,元学习中一个较大的难点是如何在历史经验集合中提取和传递有用的知识来协助模型快速学会新任务。随着元学习的发展,随机梯度下降(stochastic gradient descent,SGD)法可能无法继续满足需求,需要挖掘得到更有爆发性和高效性的搜索方法来支撑元学习的训练。
图3 迁移学习原理框图
图4 元学习原理框图
早在1987 年Hinton 等[14]就提出在神经元之间采用两个权重进行连接的方法。其中一个权重仍然是标准的慢权重,基于优化器更新获取知识。另外一个新增加的权重称为快权重,用于有效恢复过去学习的慢权重,这是为了避免随着优化器更新而忘记以前学习过的慢权重。元学习的思想在那时已经开始萌发,当前实现元学习的方法更是多种多样,根据采用的元知识形式不同,可以分为基于权重、优化器、损失函数、度量、注意力机制、超参数、网络架构、黑盒模型等方式。
对于迁移学习,人们常以ImageNet 预训练等方式实现对网络权重的初始化。但通过这些方式预训练得到的权重无法快速适应新任务,如果用小样本的新任务数据集继续训练网络就容易发生过拟合的问题。而基于权重的元学习方法最大的一个成果就是让网络自身学会初始化有效的权重,可以克服迁移学习难以应付小样本的问题,不再需要手动配置模型的初始化权重参数,通过学习历史任务的经验,估计得到各新任务对应的初始化参数组,以保证模型能快速适应新任务,借助少量的新任务样本进行训练即能获得最佳性能。其中最为经典的是Finn 等[15]提出的模型——不可知元学习(model-agnostic meta-learning,MAML)算法。MAML 的关键是要使新任务的损失函数对初始化权重的敏感度最大化,且与模型的类型无关,在各任务梯度矢量和的方向上对参数进行优化,估计得到新任务的最优参数解,以实现沿梯度方向可快速获得最优性能。Finn 等[16]在MAML 的基础上继续融合在线学习的框架提出一种在线元学习(online meta-learning),正如模拟实际环境中进行现场教学,并达到现学现用的效果,有效提高算法顺序设置和处理非平稳条件的能力。该类方法适用于回归、分类以及强化学习等多种任务,但存在二次梯度不稳定等问题。
这类方法不用人为配置Adam[17]等优化器,将新任务上的优化器设计工作交由元学习器完成。即元学习器根据以往任务的学习经验捕获单个梯度坐标的训练动态或为新任务量身定做一个高效的优化器,以让模型在拥有更为合适的优化器的情况下实现快速学习新任务。Andrychowicz等[18]采用长短期记忆(long short-term memory,LSTM)网络替换传统优化器,是为了能以梯度下降的方式为新任务优化出合适的优化器。由于损失函数的黑塞矩阵(Hessian matrix)处于病态,一阶梯度算法的性能会大打折扣。Park 等[19]提出在元学习过程中额外学习一个局部的曲率信息矩阵,以实现梯度在空间上的转换,让转换后的梯度对新任务具有更好的泛化性能。传统优化器只保证当前一步的损失小于上一步损失,仅侧重于当前周期的效益,严重缺乏全局性。而元学习优化器可以统筹未来多步对当前这步的影响,实现“瞻前顾后”的效果,找出对未来结果影响最佳的当前策略。但是,当面临大型网络或复杂优化问题时,元学习优化器的优化成本要求很大,且其性能稳定性可能较差。
与基于优化器的元学习方法类似,以通过历史任务来学习如何预测损失函数的方式建模。Houthooft 等[20]提出一种进化策略梯度(evolved policy gradient,EPG)的元学习方法,设计一个可微的损失函数,通过优化其策略以最大程度地减少这种损失,获得较高的回报。基于强化学习中奖励函数的设计思想,泛化至损失函数,即通过学到的策略网络编码为学到的损失函数。Li 等[21]提出引入一个学习的辅助损失函数,通过元学习正则化器来帮助训练特征抽取器成为域不变量,提高了对领域的泛化性。基于损失函数的元学习方法与强化学习的标准损失相比,在性能上有所提高,但其泛化性仍存在较大的局限。
其关键是要学习到一个嵌入网络,使原始输入可以转换为合适的表示,并实现样本实例与待测实例之间相似度比较。Sung 等[22]提出建模一个关系网络(relation network),该网络包含嵌入单元(embedding module)和关系单元(relation module)。嵌入单元负责对待测图片和样本图片进行特征提取,关系单元负责将提取出来的各特征进行相似度比对,直接判断待测图片归属哪类。该方法直接采用神经网络学习度量,而且在这过程中以元学习的方式进行训练。此外,还有利用孪生神经网络(siamese network)[23]、匹配网络(matching network)[24]、原型网络(prototypical network)[25]、图神经网络(graph neural network)[26]实现。这类算法目的是更合适地表示数据,以学习得更好。这类方法适用于小样本学习,建模一个度量空间,让待测的目标图像与已有的图像在该度量空间中实现高效比对。但对于回归和强化学习等任务,这些算法尚未证实能实现同样的效果。
训练出一个模型使其能在面对新任务时把“注意力”都放在关键点上,即直接关注最为核心的部分。Ren 等[27]设计了一个基于元学习的注意力吸引网络(attention attractor network,AAN),先是经过监督学习以训练一个起初原有类别的分类器,若出现新增类别,于训练和测试节点中联合元学习正则器以训练得到新类别分类器,再结合起初原有类别与新增类别并用于优化刚才提到的元学习正则器,让它在新旧类别结合后仍然保持作用。Hou 等[28]提出一个交叉注意力网络(cross attention network),给所有输入的图像对分别生成注意力图,以突出目标物体所在的区域,使模型可以把“注意力”都集中在这部分区域,提取出更好的特征,以快速适应未知类别的问题。基于注意力机制的元学习方法有着较好的泛化性能和可解释性能。但是,它难以捕抓元素顺序,当执行自然语言处理等任务时其性能可能会大打折扣。
以元学习的方式不断地优化调整学习率、正则化强度等超参数直至适合新任务。另外,步长、方向等超参数也可以被定义为优化器的一部分,则基于超参数的元学习方法与基于优化器的元学习方法之间存在重叠部分。Franceschi 等[29]提出一个超参数优化与元学习的双层规划框架,将二层问题转化到基于内目标的优化动力学(optimization dynamics)以迭代的方式进行近似求解。这些方法可以高效找出最优超参数组合,保证神经网络的优化设置。
学会自动生成对应不同新任务的深度神经网络。从1994 年提出的5 层手写字体识别模型LeNet5[30],发展到1 001 层的ResNet[12],网络的层数变得越来越深,但是也被验证得出结论:神经网络性能不是越深就越好。所以在对深度神经网络的架构进行设计时往往会存在较大困扰,既希望能最大程度地发挥深度神经网络的潜能,又担心模型会由于太复杂而造成巨大的计算资源浪费和产生梯度消失、梯度爆炸的问题。Zoph 等[31]提出一种利用强化学习机制去训练一个循环神经网络(recurrent neural network,RNN),让其学会自动生成神经网络的元学习方法。先是利用循环神经网络在搜索空间上推算估计得到一个网络架构,再对这估计生成的网络架构进行训练和验证,以验证的准确率作为奖励反馈到循环神经网络中,循环神经网络根据奖励继续优化生成另外一个网络架构进行训练和验证,重复这样的过程直至循环神经网络获得最佳性能,学会如何生成好的网络架构。Real 等[32]提出一种正则化进化方法,为候选结构引入年代的新思路,不再是移除性能最差的神经网络,而是移除最老的神经网络,保证任务优化过程中的稳健性,获取更加精确的网络。这些方法实现神经架构搜索(neural architecture search,NAS)自动化,但在这些过程中的执行成本很高。
基于黑盒模型的元学习方法分为基于内部记忆单元与基于外部存储两类。Hochreiter 等[33]提出了一种基于内部记忆单元的元学习方法,采用LSTM 作为从属系统,负责与学习器直接交互,还采用基于时间的反向传播(back propagation through time,BPTT)算法作为监督系统,负责评价从属系统提供算法参数的好坏。其中,输入的信息对是采用错位的方式的,目的是使从属系统可以获取上一步算法的错误率,有助于进行校正。但是,基于内部记忆单元的方法难以拓展到需要编码众多新信息的新任务中。为此,部分科研人员提出采用外部的存储。Santoto 等[34]提出一种记忆增强神经网络(memory-augmented neural network)的元学习方法,直接添加外部存储来记忆上一次的数据输入不包含标签信息,以至于下一次输入完成后在反向传播的过程中,能够建立输入数据与标签的联系,让后续的输入数据都能通过外部存储获取相关历史数据进行比对。相当于外部存储记忆了很多历史经验,模型凭借这些以往的经验可以实现快速学习更多新任务。Rakelly等[35]提出一种基于概率上下文变量的非策略元强化学习方法,将任务推理和控制分离开来,对潜在任务变量进行在线概率过滤,实现从少量的经验中学会如何解决新任务。基于黑盒模型的元学习方法难以适用于分布外的任务,且无法确定黑箱模型是否可以把一个大的训练集嵌入一个基础模型中。
当前,元学习在少镜头学习(few-shot learning,FSL)领域应用最为火热。由于大型神经网络的性能受限于训练集的规模,训练集内样本数量很少时,容易导致网络过拟合,无法发挥深度网络的潜能。基于元学习实现的少镜头学习技术广泛运用于分类[36-37]、目标检测[38-39]、人脸识别[40]、医学可视化问答[41]、视频合成[42]等场景。在这些场景内,很多新增类别的样本可能天生就比较稀缺,或它们的注释标签难以获取。另外,实际场景往往比实验环境复杂得多,实际获取的待测数据具有多变性,会出现待测数据和训练集分布不一致的情况。元学习技术利用从历史任务中积累下来的元知识作为先验知识,再学习少量的目标样本即可快速掌握新任务,有效提升训练方式和训练时间,对未知场景有着较强的适应性和稳健性。如Nguyen 等[41]为了克服医疗视觉答疑中的数据限制,将无监督的去噪自动编码器(denoising auto encoder,DAE)与有监督的元学习有机结合应用,仅通过一个很小的样本集来训练其提出的模型,可以发现该方法的性能比现有的医疗视觉问答方法都要好;Wang 等[42]提出一种元学习人脸识别(meta-learning face recognition,MFR)方法,实验结果证明了该方法在跨种族与跨场景的测试里其性能是最优的,极大地提高模型泛化性能。基于元学习实现的少镜头学习在实用的过程中极大降低对目标样本数量的依赖,突破传统深度学习的数据壁垒,避免参数过拟合,提高模型的泛化性,实现举一反三、融会贯通的效果,对将来的未知事务有着强大的适应能力,为缺乏样本的领域提供可靠的解决方案。
元学习在机器人学习领域也具有广阔的应用前景。各种各样的机器人被投入家庭、工厂、国防和外太空探索等领域中使用[43],它们的应用环境从简单的环境变到复杂的非结构化环境[44]。但是,现有的机器人仍处于弱智能化的阶段,对灵活性要求高的服务机器人的表现更差劲。快速学习操作技能的能力对未来的机器人越来越重要[45],元学习可以赋能机器人实现一眼模仿学习(one-shot imitation learning)。机器人通过观察少量的几次演示后,就能学会新任务的操作。若要实现机器人看一眼便能掌握各类任务操作的能力,在很大程度上需要依赖元学习[46-49],通过神经网络学习一种元知识去理解演示的真正意图并直接映射到控制输出。将元学习应用到机器人学习中,使机器人的学习过程实现类似于人类,只要人类对其做出几次简单的示范后,机器人就能马上掌握要领,可完成各项复杂任务,极大提高机器人的通用性。Yu 等[48]提出一种域适应元学习的方法,允许学习跨域对应关系,让机器人只需观察一个人类用户的视频演示后就能学会视觉识别与操纵一个新的物体,且该方法不局限于感知人类,而且还可以用于模拟动物或模拟机器人。元学习不仅能为机器人实现模仿学习的能力,还能为机器人实现学会学习的能力。通过不断地积累经验,不断地完备机器人的“价值观”。在需要学习新任务时,借鉴积累的丰富经验,自主学习且快速上手各项新任务。Nagabandi 等[49]提出一种元强化学习方法,能够有效适应未知的情况或环境中突然剧烈的变化,对于现实世界的应用是实用的。
元学习也能运用于无监督学习领域,最为经典的应用场景是训练无监督学习算法[50-51]。在这场景中,外部循环的元目标仍然是有监督的,再以元学习的方式学习无监督内循环任务,实现将原本的无监督学习问题转化为有监督学习问题,这有助于解决无监督学习问题的不确定性。除了上述的领域,元学习还可以应用于自然语言处理[52-53]、噪声标签学习[54-55]、网络压缩[56]、域泛化[57-58]等领域,具有无可限量的应用潜能。
授之以鱼不如授之以渔。深度学习以大规模样本实例“暴力”训练网络,让模型实现对单一任务的有效处理,可这只能缓解一时之需,远远无法达到通用人工智能的程度,不能实现同样一套算法解决各种复杂任务,只能“授之以鱼”。而元学习能真正实现“授之以渔”,助力人工智能学会如何学习,具有不可估量的潜能,可以推动人工智能变革。但是,元学习在技术与应用这两个方面上还面临着较大的挑战。
针对元学习技术方面,其计算成本耗费大、复杂任务的学习能力差和泛化性能有待提高等问题尤其显著。
元学习算法常常涉及双层优化的问题。每执行一次训练,就要进行一次外部操作步骤,但每次的外部操作步骤都需要多次的内部操作步骤,在这样的嵌套循环条件下,元学习模型的优化需要大规模的计算资源和超长的训练时间。若在GPU 计算资源不充足的情况下对拥有千万级别参数量的模型的优化器进行训练,很可能出现内存爆炸的问题。因此,未来很有必要创新更高效的元学习优化方法来降低计算成本。Brock 等[59]提出一种训练代理模型的方法;Lee 等[60]提出通过内环中的闭式解算器来加速元训练。但是,这些方法的效果都不太显著。对于内存爆炸的问题,还可以考虑对梯度检查点的使用。先是从所有的激活内选出一个子集,并在前向传播的过程中只对该子集进行缓存。在进行反向传播时,通过这些激活重新计算非缓存的激活,计算图的显示缓存点就是梯度检查点。通过把连续计算的元前反馈与元反向传播切分为片段,实现有效隐藏记忆状态,防止内存爆炸。
除了计算成本高,现有的元学习模型对复杂新任务的学习能力也比较差。现有的元学习模型对于简单的新任务可以高效地学会类似分拣、移动物品等的简单任务。但这些元学习模型对于需要动作衔接或其他更为复杂的动作任务,学习能力可能会变得没那么高效,甚至可能学不会,可以通过研究动作序列的连续性来优化该问题。
现有的元学习算法都是学习单种元知识的,可能会导致模型的泛化性能不稳定,若权重、网络结构、环境及算法等都是通过元学习器学的,即多种元知识组合学习,其泛化性可能会比当前仅学习一种元知识的元学习算法更好。
由于存在相似任务的数据难以获取、实际待测数据的分布与训练数据的分布存在差异等因素,元学习在实际应用的过程中仍存在较大的问题。
虽然元学习算法通过少量的新样本实例就能学会掌握新任务,但这都是以拥有足够多的相似历史任务数据为基础的。可是,获取大规模的相似历史任务数据往往比较困难。若是在相似历史任务数据不足的情况下,元学习算法可能出现元过拟合的问题,无法有效训练元学习中的基学习器,也就难以学会新任务。对此,未来可以考虑建立一个大规模的通用元学习数据库,为训练基学习器提供充足的示范性历史任务数据,避免元过拟合。
当前,绝大部分的元学习模型在进行实验测试的过程中都保证了新任务分布与历史任务集分布是相同的。但由于应用场景的未知性和实际输入条件的动态多变性,很难让新任务分布与历史任务集分布保持一致。一旦它们之间存在一定差距,元学习算法学习新任务的能力就会大打折扣,出现跨任务学习时元学习算法性能下降的问题,元学习模型跨任务学习的泛化性还比较差。未来对此问题进行深入研究时,可以借鉴迁移学习中域自适应[61]方法与异构迁移学习[62-63]方法的经验。