‘壹’ 强化学习探索家|令人拍案叫绝的RND (1)
强化学习探索家专栏本期将带您深入探讨RND(随机网络蒸馏)算法的核心秘密。在前两期中,我们已介绍了强化学习中的ICM(内部奖励模型)知识。若需补课,可访问下方链接。
强化学习聚焦于智能体如何根据环境奖励信号优化策略,以实现累计最大奖励。面临稀疏或无奖励环境时,高效探索状态与动作空间尤为重要。为此,RND算法旨在引入额外的内在奖励激励智能体探索更多新颖状态。
新颖性度量通常基于状态在预测任务中的预测误差。预测误差越大,意味着智能体在该状态附近访问次数少,该状态新颖性较高。ICM算法通过学习状态转移模型,利用预测误差指导探索,但存在局限性。
RND算法引入了一种基于随机网络蒸馏的探索机制。它定义了两个结构相同的神经网络,用于解决与观测状态相关的随机蒸馏问题,而非直接涉及环境动力学。RND训练阶段,两个网络交互学习,产生的内在奖励在常规RL训练中使用,与环境奖励共同驱动智能体行为。
实验结果显示,RND在多种复杂稀疏奖励任务上表现出色,尤其在不依赖专家轨迹或底层状态的情况下,它成为了首个在Montezuma's Revenge任务上超越人类平均水平的方法,这一成就具体细节将在下期专栏中详述。
深入探讨RND算法设计,我们关注预测误差的影响因素。这些因素包括模型复杂度、数据分布变化、环境噪声等。RND通过简化预测问题,有效减少这些因素的影响,从而提供更准确的新颖性度量。通过自监督学习任务,如AutoEncoder,虽然可以计算内在奖励,但其复杂性与不稳定的数据分布导致了较高的重建误差。
对比ICM的前向动力学模型,RND预测问题映射的确定性使得学习过程更为稳定,一定程度上缓解了环境噪声带来的影响。RND的预测误差更好地反映出状态的新颖性,从而提升智能体探索效率。
将RND探索模块与多种RL算法结合,实现了较低的计算开销,使得集成过程简单高效。在RND论文中,底层算法采用的是on-policy PPO。算法伪代码如图2所示,探索相关模块以蓝色线勾画。
下期专栏将带来RND实验分析与实践心得分享。敬请期待。
参考文献:
[1] Burda Y, Edwards H, Storkey A, et al. Exploration by random network distillation[J]. arxiv.org/abs/1810.12894, 2018.
[2] openai.com/blog/reinforcement-learning-open-source/
[3] lilianweng.github.io/lilianweng/2020/01/08/reinforcement-learning-icm/
[4] 论文作者的TensorFlow代码实现
作者:山河星月
排版:muxu
‘贰’ 网络架构搜索
作为计算智能方法的代表,起源于上个世纪四十年代的人工神经网络经历了五六十年代的繁荣,七十年代的低潮,八十年代的再次复苏,到近十年的广泛关注,如今已经成为理论日趋完善,应用逐步发展的前沿方向。Hinton 等人2006 年在《Science》上发表的文章引发了深度神经网络研究的热潮。面对大数据的诸多挑战,以深度信念网络、卷积神经网络和递归神经网络为代表的深度神经网络模型在很多应用领域展示出明显的优势和潜力,特别是随着数据量和数据维数的增加,深度学习的优势愈加突出。例如,Google 借助深度学习开发的AlphaGo 能从海量的对弈中学习正确的决策,微软语音识别采用深度学习使识别错误率显着降低,网络基于深度学习开发的机器人“小度”在跨年龄人脸识别上超越了人类。
经过多年的研究和发展,基于人工神经网络的识别方法也逐渐取代传统的模式识别方法。神经网络已成为当前比较先进的技术,用来解决许多具有挑战性的识别任务如文字识别、语音识别、指纹识别、遥感图像识别、人脸识别、手写体字符的识别等。其中主流的神经网络模型有卷积网络和递归神经网络,卷积神经网络由 Yann LeCun 在 1998 年提出,自从 AlexNe 在 2012 年的 ImageNet 比赛中使用了这一架构拔得头筹,卷积神经网络迅速流行起来并广泛应用到视觉任务。如今,最先进的卷积神经网络算法在进行图像识别时,甚至可以超过人类肉眼识别的准确率。递归神经网络网络提出于 1990 年,被视为循环神经网络的推广,递归神经网络可以引入门控机制以学习长距离依赖,适用于包含结构关系的机器学习任务,在序列识别方面有重要应用。
深度神经网络和深度学习算法因为在科研工作与工程任务中都取得了显着的效果从而大受欢迎。它取代了传统的手动提取特征方法,够端到端地自动提取和学习特征。而其中取得显着成功的深度神经网络通常是由于它们成功的架构设计,研究的工作重心从提取特征转移到了寻找最优架构上。通常来说,模型的容量越大网络的性能就越好,能够拟合任意函数。因此为了提升网络性能,网络结构被设计的越来越复杂。例如,VGG-16 约有1.4亿浮点数参数,整个网络占用超过500兆存储空间,需要153亿次浮点操作来处理一个$224\times224$大小的图像。虽然更深的网络层次和复杂的拓扑结构能够更有效地学习特征,但是网络规模的增大意味着人工设计网络时需要花费更多时间来反复试验,即使是专家也需要大量的资源和时间来创建性能良好的模型。
神经网络架构搜索(NAS)是一种自动化学习网络结构的新方法,用于减少繁重的网络设计成本。目前为止,NAS方法设计的网络在识别任务上的表现已经超过了人工设计的架构。NAS可以视作自动机器学习(AutoML)的子领域,与超参数优化和元学习有明显的重叠。不同的NAS方法的区别主要在于三个维度:搜索空间、搜索策略和性能评估,我们对此分别进行了调研。
搜索空间:搜索空间定义了网络的所有可选结构和操作,通常指数级大,甚至无界。在设计搜索空间时结合先验知识,即参考现有的针对当前任务的先进结构设计知识,能够有效减小搜索空间并简化搜索。但这也会引入偏好,从而限制网络学习到超越当前人类知识的结构。
搜索策略:定义搜索空间后,搜索策略引导寻找高性能的模型架构,其中的难点是保证探索和利用的平衡。一方面,希望快速找到性能良好的架构,另一方面,需要避免过早收敛到次优的架构。
性能评估:NSA的目的是找到一个在未知数据上具有良好泛化性能的架构,一旦模型生成,就需要对其性能进行评估。直观的方法是在训练集上训练收敛,并在验证集上得到其性能,但是这种方法会耗费巨大的算力,从而限制了可探索的网络结构。一些先进的方法关注于减小性能评估时的计算代价,但会引入误差。因此,平衡评价的效率和效果是一个需要研究的问题。
从计算的角度来看,神经网络代表了一个通过一系列操作将输入变量 x 转换为输出变量 y 的函数。基于计算图语言,神经网络可以表示为一个有向无环图(DAG),其中每个节点表示一个张量 z ,通过边连接其父节点 I(k),每条边表示从候选操作集O中选择的一个操作 o 。节点 k 的计算公式为:
其中候选操作集合$O$主要包括卷积、池化、激活函数、跳跃连接、拼接、加法等基本操作。此外,为了进一步提高模型的性能,一些先进的人工设计模块也可以作为候选操作,如深度可分离卷积、膨胀卷积、组卷积。基于操作的类型可以选择不同的超参数,例如输入节点选取、卷积核数量、尺寸、步长等。不同的搜索空间设计,选择和组合操作的方法也不同所以参数化的形式也不一样。一般来说,一个好的搜索空间应该能够排除人类的偏见,并且足够灵活,能够覆盖更广泛的模型架构。
全局搜索空间搜索一个完整的网络结构,具有很高的自由度。最简单的例子是链式搜索空间,见图1左。固定的数量的节点按顺序堆叠,只有前一个节点的输出提供给后一个节点作为输入,每个节点代表一个层,并具有指定的操作。右图引入更复杂的跳跃链接和多支路结构,此时当前节点可以结合前面所有节点的输出作为输入,使得搜索的自由度显着增大。许多网络都是多分支网络的特例,比如
1)链式网络: ;
2)残差网络: ;
3)DenseNets:
虽然整体结构搜索很容易实现,但它也有一些缺点。首先,搜索空间的大小与网络深度是指数级关系,寻找泛化性能好的深度网络计算成本高。此外,生成的架构缺乏可迁移性和灵活性,在小型数据集上生成的模型可能不适合较大的数据集。有研究提出,初始架构的选择在搜索全局结构时十分重要。在适当的初始条件下,可以获得与单元搜索空间性能相当的架构,但是初始架构选择的指导原则仍然不明确。
基于单元的搜索空间受启发于人工设计知识,许多有效的网络结构都会重复使用固定结构,例如在RNNs中重复LSTM块或堆叠残差模块。因此可以只搜索这样的重复单元(cells),整个神经结构的搜索问题被简化为在单元搜索空间中搜索最优的单元结构,从而极大的减小搜索空间。大多数研究对比了基于全局搜索空间和单元搜索空间的实验结果,证明在基于单元的搜索空间中可以获得良好的性能。单元搜索空间的另一个优势是能方便地在数据集和任务之间进行泛化,因为通过增减卷积核和单元的数量,架构的复杂性几乎可以任意改变。
NASNet是最早提出的单元搜索空间之一,也是当前最热门的选择,之后的大部分改进只是在此基础上对操作选择和单元组合策略进行了少量修改。如图2所示,它由两种单元组成,分别为保持输入特征维度的标准单元(normal cell),和减小空间维度的简化单元(rection cell)。每个单元由b个块组成,每个块由它的两个输入和相应的操作定义。可选的输入包括前两个单元的输出和单元中先前定义的块的输出,所以它支持跨单元的跳跃连接。未使用的块被连接起来并作为单元格的输出,最终通过预定义好的规则级联这些单元。
不同于上面将单元结构按照人工定义的宏结构进行连接,层次结构是将前一步骤生成的单元结构作为下一步单元结构的基本组成部件,通过迭代的思想得到最终的网络结构。Hier提出的层次搜索空间,通过合并低层单元生成高级单元实现单元级别和网络级别的同时优化。此方法具体分为3层。第一层包含一系列的基础操作;第二层通过有向无环图连接第一层的基础操作,构建不同的单元,图结构用邻接矩阵编码;第三层是网络级的编码,决定如何连接第二层的单元,组合成一个完整的网络。基于单元的搜索空间可以看作是这种层次搜索空间的一个特殊情况。
强化学习方法(RL)能够有效建模一个顺序决策的过程,其中代理与环境相互作用,代理学会改善其行为从而使目标回报最大化。(图3)给出了一个基于强化的NAS算法的概述。代理通常是一个递归神经网络(RNN),它在每一步t执行一个动作 来从搜索空间采样一个新的样本,同时接收状态 的观察值和环境中的奖励 ,以更新代理的采样策略。这种方法非常适合于神经结构搜索,代理的行为是生成神经结构,行为空间是搜索空间,环境是指对代理生成的网络进行训练和评估,奖励是训练后的网络结构对未知数据的预测性能,在最后一个行为之后获得。
4.2进化算法
进化算法(EA)是一种成熟的全局优化方法,具有较高的鲁棒性和广泛的适用性。许多研究使用进化算法来优化神经网络结构。进化算法演化了一组模型,即一组网络;在每个世代中,至少从这组模型中选择一个模型,作为亲本在突变后作为生成子代。在对子代进行训练之后,评估它们的适应度并将它们添加到种群中。
典型的进化算法包括选择、交叉、变异和更新等步骤。选择时一般使用联赛选择算法对父类进行采样,其中适应性最好的一个作为亲本。Lemonade对适应度使用核密度估计,使网络被选择的概率与密度成反比。交叉方式因编码方案的不同而不同。突变针对的是亲本的部分操作,例如添加或移除层,改变层的超参数,添加跳跃连接,以及改变训练超参数。对于产生的后代,大多数方法随机初始化子网络权重,而Lemonade把父网络学习到的权重通过使用网络态射传递给其子网络。Real等人让后代继承其父母的所有不受突变影响的参数,虽然这种继承不是严格意义上的功能保留,它可以加速学习。生成新的网络的同时需要从种群中移除一些个体。Real等人从群体中移除最差的个体,AmoebaNet移除最老的个体。也有一些方法定期丢弃所有个体,或者完全不移除个体。EENA通过一个变量调节最坏模型和最老模型的删除概率。
基于代理模型的优化方法(SMBO)用一个代理模型来近似目标函数。即不需要训练采样到的网络结构,只需要训练一个代理模型,使用代理模型预测网络的性能。通常在实践中只需要得到架构的性能排序,而不一定要计算出具体的损失值,因此代理模型只需要预测相对得分并选出有前途的候选架构。然后只对预测性能好的架构进行评估,用它们的验证精度更新代理模型,这样只需要完全训练少量候选架构,大大减少搜索时间。代理模型通常训练为最小化平方误差:
贝叶斯优化(BO)是用于超参数优化的最流行的方法之一。最经典的是基于高斯过程的BO,生成的神经结构的验证结果可以建模为高斯过程,然而,基于高斯的BO方法在观察次数上的推理时间尺度是立方的,并且不擅长处理变长神经网络。有些工作使用基于树或者随机森林的方法来在非常高维的空间中高效的搜索,并且在很多问题上取得了优异的效果。Negrinho利用其搜索空间的树形结构,并使用蒙特卡洛树搜索。虽然没有完整的比较,但初步的证据表明这些方法可以超越进化算法。
上面的搜索策略搜是从一个离散的搜索空间提取神经结构样本。DARTS提出搜索空间的连续松弛,在连续可微的搜索空间上搜索神经架构如图4所示,并使用如下softmax函数来松弛离散空间:
松弛后,架构搜索的任务转化为网络架构与神经权值的联合优化。这两类参数分别在训练集和验证集上交替优化,表示为一个双层优化问题。
为了对搜索过程进行引导,必须对产生的神经网络性能进行评估。一种直观的方法是训练网络至收敛,然后评估其性能。但是,这种方法需要大量的时间和计算资源。因此提出了几种加速模型评估的方法。
为了减少计算负担,可以用实际性能的低质近似来估测性能。实现方法包括: 缩短训练时间、选择数据集的子集、在低分辨率的图像上训练、每层使用更少的通道数、堆叠更少的单元结构。在低质条件下搜索到的最优网络或单元,构建出最终结构在数据集上重新训练,得到目标网络。虽然这些低精度的近似能够减少训练花费,但性能被低估的同时不可避免地引入了误差。最近的研究表明,当这种低质评价与完全评价之间的差异较大时,网络性能的相对排名可能变化很大,并强调这种误差会逐渐增加。
早停技术最初用于防止过拟合。一些研究通过在训练初期预测网络性能,在验证集上预计表现不佳的模型被强制停止训练,以此来加速模型评估。一种在早期估计网络性能的方法是学习曲线外推法。Domhan 等提出训练初期对学习曲线进行插值,并终止那些预测性能不好的网络结构的训练。Swersky等在评估学习曲线的好坏时,把网络架构的超参数作为参考因素。另一种方法根据梯度的局部统计信息实现早期停止,它不再依赖验证集,允许优化器充分利用所有的训练数据。
代理模型可以被训练用预测网络性能。PNAS提出训练一个代理网络(LSTM)来预测网络结构的性能,他不考虑学习曲线而是基于结构的特点来预测性能,并在训练时推断更大的网络结构。SemiNAS是一种半监督NAS方法,利用大量的未标记架构进一步提高搜索效率。不需要在对模型进行训练,只使用代理模型来预测模型精度。预测网络性能的主要难点是:为加快搜索过程,需要在对较大的搜索空间进行较少的评估的基础上进行良好的预测。当优化空间过大且难以量化,且对每个结构的评估成本极高时,基于代理的方法就不适用。
代理模型还可以用来预测网络权重。超网络(Hypernetworks)是一种神经网络,被训练来为各种架构生成网络权值。超网络在搜索过程中节省了候选体系结构的训练时间,因为它们的权值是通过超网络的预测得到的。Zhang等人提出了一种计算图表示,并使用图超网络(GHN)比常规超网络(SMASH)更快更准确地预测所有可能架构的权值。
权重继承是让新网络结构继承之前训练完成的其他网络结构的权值。其中一种方法是网络态射,一般的网络设计方法是首先设计出一个网络结构,然后训练它并在验证集上查看它的性能表现,如果表现较差,则重新设计一个网络。可以很明显地发现这种设计方法会做很多无用功,因此耗费大量时间。而基于网络态射结构方法能够在原有的网络结构基础上做修改,修改后的网络可以重用之前训练好的权重。其特殊的变换方式能够保证新的网络结构还原成原网络,因此子网络的表现至少不会差于原网络,并且能在较短的训练时间内继续成长为一个更健壮的网络。具体地,网络射态能够处理任意非线性激活函数,可以添加跳跃连接,并且支持添加层或通道得到更深或更宽的等效模型。经典的网络态射只能使网络变大,这可能导致网络过于复杂,之后提出的近似网络态射通过知识蒸馏允许网络结构减小。进化算法经常使用基于网络态射的变异,或者直接让孩子继承亲本的权重,再执行一般变异操作,这样产生的网络具有一个更好的初始值,而不用重头开始训练。
‘叁’ 论文解读:Policy Distillation and Value Matching in Multiagent Reinforcement Learning
论文题目: Policy Distillation and Value Matching in Multiagent Reinforcement Learning
论文链接 : https://arxiv.org/pdf/1903.06592
研究对象 :多智能体协作系统
研究动机 :现有的关于多智能体强化学习(multi-agent reinforcement learning, MARL)的工作,主要通过集中式评价机制(centralized critic)或智能体之间的通信来共享信息,从而提升学习效果。但是这些工作通常不会研究智能体之间如何通过信息共享来解决维度灾难(the curse of dimensionality)的问题。
假设 :多智能体问题可以被分解成一个多任务问题,这样每个智能体可以只在整体状态空间的子集中进行搜索,而不用在整个状态空间中搜索。这种假设的好处是可以大大缩小系统的搜索空间,从而加快学习速度。
主要工作 :
基于以上假设,通过蒸馏(distillation)和值匹配(value-matching)的方法将同质智能体的知识进行整合,提出一种新的multi-agent actor-critic算法。
所谓同质多智能体,就是状态空间和动作空间都是一样的智能体,比如无人机和无人机组成的就是同质智能体,无人机和无人车组成的就是异质多智能体。
问题背景 :
多智能体系统中,智能体独立地在同一个环境中行动,但是同时彼此也会影响到对方的决策。因此,如果直接将单智能体强化学习技术应用到多智能体中,也就是所谓的independent learning,学习过程将会不稳定。因为传统的单智能体强化学习假设外部环境的变化是稳定的,而在多智能体系统中,任何一个智能体策略的改变,都会影响到其它智能体的学习。为此,研究人员常常采用一种集中式训练和分布式执行的架构来实现MARL。但是这就会存在一个问题,就是当智能体的数量增大的时候,整个系统的状态空间和动作空间会指数增长,智能体的搜索空间也变得特别大。
对每个智能体来说,有的状态对最优策略的求解并不起作用,因此它并不需要对整个状态空间进行搜索。一个高效率的搜索可以帮助智能体缩短训练时间,但是现有的方法却没有一个通用的方法来解决这样的问题,这也是现在MARL研究中智能体数量受到限制的原因之一。
解决思路:
在训练中,共享智能体之间的经验数据等信息,通过策略蒸馏(Policy distillation)的思路充分利用并学习新的策略。
关于policy distillation,一开始提出来是为了解决单智能体-多任务强化(mutli-task reinforcement learning, MTRL)问题,论文链接: https://arxiv.org/pdf/1511.06295 。因此本文先将单任务-MARL问题看成单智能体-MTRL问题,这样就可以利用policy distillation方法来寻找最优策略了。
但是怎么理解这种假设呢?比如三个智能体A、B、C,任务是分别以最短的时间到达指定位置L1、L2、L3,这是一个单任务-MARL问题。现在将这个问题看成一个智能体A,同时具备以最短的时间到达L1、L2、L3的能力,这就是一个单智能体-MTRL问题了。
算法细节:
由于要用到policy distillation,所以本文用的是随机策略(stochastic policy)。对于连续动作问题,作者将Soft Actor-Critic算法由单智能体扩展到多智能体。同时还要将actor的输出利用softmax函数转换为概率分布的形式。
Policy Distillation:
蒸馏策略的损失函数为
(1)
注意(1)式中的 都是概率分布,并不是策略本身。从replay buffer中只采样变量 ,而不采样 。这是因为replay buffer中的 可能是次优的,而通过这种方式直接从 中遍历动作空间中的所有动作,更容易找到最优动作。每次蒸馏之后,所有的智能体策略都更新为 (硬更新)。这样,智能体 和其它智能体就实现了信息的共享。
策略蒸馏的好处是,即使智能体 有的状态没被采样过,但是其它智能体采样过,那么这个状态的信息就可以通过其它智能体策略的蒸馏间接地传递到智能体 中。
Value Matching:
光有蒸馏策略对策略进行更新还是不够的,如果策略学习加入了蒸馏环节,而值函数的学习用传统的方法,显然会产生分歧。因此,也需要对值函数进行调整。
需要指出的是,对于合作任务的同质多智能体,由于其状态空间和动作空间一致,同时共享一个reward,所以它们的最佳策略是相同的。基于这个前提,作者提出value matching的方法来缩小搜索空间。
传统的集中式训练,其值函数的输入为所有智能体的观测和动作,如 和 。并且这些输入的顺序一般是固定的,例如对状态值函数来说,就会满足 。但是根据本文的设定,即多智能体是同质的,而且共享一个reward函数,因此值函数输入的顺序是不影响输出的具体值的。
例如对于上图中的两个智能体,假设状态A( )的值函数已经学出来了为 ;状态B是状态A的对称形式, ,根据同质智能体合作任务的假设,这两个状态的值函数应该相等,即 。扩展到具有 个智能体的情况下,满足
(2)
其中 表示 所有顺序的排列组成的集合。这样,一旦某个状态的值函数学到了,以此为监督信息,训练value-matching的评价网络,则对应的不同组合的对称状态值就都有了。Policy的Distillation和critic的value-matching,合起来就是DVM。
为了训练这个新的值函数(蒸馏值函数),本文使用的是均方误差损失函数(MSE),
. (3)
其中, 表示matched value function(匹配值函数)的参数。
和蒸馏策略类似,匹配值函数不需要遍历所有的状态就能表征状态空间中的知识。本文还指出,很多MARL方法使用Q值函数来作为critic,以上的方法同样适用,只需要保证状态和动作是一致的就行。
Multi-agent Soft Actor-Critic (SAC):
Actor-Critic(AC)大家都很熟悉,那什么是Soft Actor-Critic呢?
SAC最早出现在ICML2018中,论文链接: http://proceedings.mlr.press/v80/haarnoja18b/haarnoja18b.pdf
SAC不仅的优化目标不仅是最大化期望累积奖励,还要最大化信息熵(entropy),这样有利于平衡智能体的学习和探索。即使动作的选择足够随机,也能保证任务的学习。SAC的actor输出的是随机变量,这也是本文为什么选择使用SAC框架的原因。接着,作者SAC扩展到多智能体,提出MA-SAC,同时加入前面提到的DVM。
作者在文章中指出,这里使用Policy Distillation方法来训练策略网络,因此其actor网络输出的都是概率分布。对于MADDPG这样的确定性策略的算法,由于策略网络输出的是连续的动作值,因此无法计算KL损失。
本文中对于连续动作控制问题,策略函数输出的是一定均值和方差的高斯分布,然后从这个高斯分布中采样得到一个连续的动作值。
本文提出的算法流程如下:
实验环境:
总结:
本文提出的DVM方法,主要用于同质协作多智能体之间的信息共享和传递,通过另外学习一个单独的蒸馏策略和蒸馏值函数,将多智能体单任务问题看成单智能体多任务问题。作者认为这种方法可以有效降低智能体的状态搜索空间,从而加快学习速度。即使一些状态某个智能体没遇到过,只要其它智能体遇到过就行。蒸馏策略可以将其它智能体学习到的知识整合到一个策略中,从而实现知识在智能体之间的共享。而对于连续动作无法计算KL损失的问题,作者使用MA-SAC框架实现MARL,从而继续利用DVM来学习。
‘肆’ 只需要十分之一数据,就能通关四大视觉任务,居然还开源了
Github链接:https://github.com/opengvlab
家人们,你们有没有这种苦恼?
搬一次家就换一次家具,那些又贵又重的家具既不好搬运,又不好全部带走。
下一次又重新购置一遍家具,浪费钱不说,关键是来来回回都做一样的事情!家具还没用过几次,利用率不高呀!
这种搬家的苦恼,就好比AI领域,做几个任务就需要开发几个高度定制的模型,不仅所需的数据采集量非常大,每次还都得从头标注。既提不起数据的学习效率,又耗费巨大的数据获取成本。
光是AI前端研究就耗费如此巨大的精力,更别提应用场景中数以万计的长尾任务。
那怎么办?
做一款通用的深度学习模型,才是关键。
1 通用,才是技术根本
目前,通用语言模型(GLM)已经取得了令人瞩目的进展,比如BERT、T5和GPT-3,它们在应对广泛的语言下游任务时已经游刃有余。
相形之下,通用视觉模型(GVM)的研究迟迟未交出一份令人满意的答卷。
以往的大多数 GVM 研究主要利用一种监督信号来源,如 ViT-G/14 采用有标签监督,SEER 采用样本的不同增强之间的对比学习,CLIP采用图片文本对进行监督。如果是在单个监督信号下进行的预训练,这几种范式确实能够生成在固定场景下表现良好的模型。但如果用在场景多元、任务多样的下游场景,这些模型就难以胜任了。
比如现在最火的自动驾驶, 汽车 处于移动状态,既要看到路况,又要看到红绿灯,还要注意行人,甚至在智能座舱兴起后,还要和语言技术、LBS场景服务协同,这么多的感知数据与协同任务,这么多随机的新任务,无论在体量还是维度方面,都对视觉模型的要求极大提高。
这时,打造一款通用视觉模型,降低研发门槛,尤其是学术界的时间成本、资金成本,才能畅享下游的极致场景体验。
去年11月,上海人工智能实验室联合商汤 科技 、香港中文大学、上海交通大学发布通用视觉技术体系“书生”(INTERN),一套持续学习框架,用于系统化解决当下人工智能视觉领域中存在的任务通用、场景泛化和数据效率等一系列瓶颈问题。
前不久,上海人工智能实验室联合商汤 科技 发布通用视觉开源平台OpenGVLab,面向学术界和产业界开放其超高效预训练模型、超大规模公开数据集,以及业内首个针对通用视觉模型的评测基准。
这些开源技术,究竟有何魔力?
2 大力出奇迹,打造通用视觉模型
“书生” (INTERN),就是练就通用视觉能力的底层技术。
从技术实现上讲,“书生”技术体系由由七大模块组成,包括三个基础设施模块和四个训练阶段构成。
书生(INTERN)结构图
首先,通用视觉数据系统。
这是一个超大规模的精标数据集,拥有100亿个样本和各种监督信号,并依照四大视觉任务分别设置了四个数据子集:多模态数据GV-D- 10B分类标注的GV-Dc-36M、检测标注的GV-Dd-3M、分割标注的GV-Ds-143K。
另外,这一数据集还包含11.9万的标签系统,不仅涵盖了自然界的众多领域和目前计算机视觉研究中的几乎所有标签,还扩充了大量细粒度标签,涵盖各类图像中的属性、状态等。
而这,就是书生“大力出奇迹”的一大注脚。
其次,通用视觉模型结构。
它是由一个具有CNN和Transformer的统一搜索空间构建而成。
为何要建立这样的混合结构?要知道,多年来,卷积神经网络(CNN)一直主导着视觉表征学习,并在图像分类、目标检测和语义分割等下游任务中表现出稳定的可迁移性。但最近几年,Vision Transformer (ViT)仅使用普通的Transformer结构就能作为图像编码模型在ImageNet-1k上取得媲美 CNN 的性能,在大规模数据集上 ViT 更是展示出比 CNN 更大的潜力。
尽管ViT在性能上有优点,但纯Transformer网络相比卷积神经网络缺乏某些归纳偏置(inctive biases),因此需要更多的数据和计算资源。此外,自注意的计算成本相对于输入的数量是平方的,限制了对高输入分辨率的应用。因此,将CNN和Transformer和MLP结合起来,平衡效率和有效性两个方面,才是模型通用的关键。
这种兼具更好的泛化能力和更高的模型容量的模型结构名为MetaNet。在MetaNet网络结构族里面进行网络结构搜索,从而得到最优的一个模型训练结构。
统一搜索的MetaNet架构:Conv和Trans分别表示卷积和Transformer。C和S为每一阶输出通道数和步幅。
具体来看,MetaNet不仅基于强化学习 的PPO算法提出了统一搜索架构,并且,为了避免传统的下采样模块会成为模型性能的瓶颈,“书生“结合了包含 local-global-DSM (LG_DSM) 和 global-DSM (G-DSM)的context-aware down-sampling moles (DSM),用来代替原本的下采样模块。
因此,在浅层,模型依然使用卷积来提取特征,但在深层,模型却能将Transformer模块和LG-DSM结合使用,以便于更好地提取全局信息。
同时,书生还基于最大的MetaNet-B15蒸馏出了多达13种不同的模型结构,共24种不同的模型权重,现已全部开源。
这些模型结构基本涵盖了现有市面上大部分的主流backbone,不仅能够很轻易地迁移到所需要的算法框架作为新网络预训练的初始化,而且只需要更短的训练时间就可以达到比原来更好的训练效果。
MetaNet 模型与其他模型结构比较,结果如下:
基于卷积、Transformer和两者混合的结构,分别用C,T和H表示,可以看出,在图像分类性能上,MetaNet系列的MN-B1,MN-B4和MN-B7,和其他的SOTA模型相比,不仅有更高的精度,还有更低的FLOPS和参数量。
除了分类任务,把MetaNet做为检测和分割的backbone,在COCO数据集上使用Mask R-CNN结构训练,结果发现:在模型参数量更小的前提下,MN-B4比Swin-T精度高出2到4个点。另外还在ADE20K数据集上进行了语义分割任务,MN-B4的mIoU指标比Swin-T高出5个点之多。
上述两个实验结果表明,MetaNet系列模型结构,在模型精度与计算量之间,都达到了新的SOTA!
最后,通用视觉评测基准。
视觉评测基准GV-B ,就像是一个“擂台”。
如下表所示,测评基准收集了 26 个下游任务数据集,囊括了 4 种视觉任务类型:分类,检测,分割和深度估计。
在设置上,该基准引入了百分比样本(percentage-shot),只需要选取整个数据集的一部分,例如 10%、20% ,对比缩小下游任务的训练数据量后的模型性能。
与传统的少样本设置相比,这种百分比样本设置可以很好地保留原始数据集的长尾分布等属性,并减轻对样本选择的敏感性。因为有一些数据集样本类别分布不平衡,比如下表中的VOC07+12,百分比数据的划分方式却会继承这种分布情况。
右侧三列avg,min和max,分别表示在10%的数据中,不同类别样本数量的平均值,最小值和最大值。
结合上述数据集和任务类型,论文选取了一些具有代表性的模型来做评测对比。为了比较公平性,该对比使用了这些模型的官方预训练权重。这些模型包括:
有了超大精标数据集、模型结构,以及评测基准后,已经是万事俱备,只欠训练。
书生作为中国古代读书人的经典形象,代表着一个通过不断学习、不断成长进而拥有各方面才能的人格化角色:从基础的知识技能学习开始,到对多种专业知识触类旁通,进而成长为拥有通用知识的通才。借此意象,“书生”(INTERN)系统可通过持续学习,举一反三,逐步实现通用视觉领域的融会贯通,最终实现灵活高效的模型部署。
下面就来看看,这套系统是如何通过训练,一步步从生手变成专家再到多面手,最终在各种任务中大显身手。
第一阶段,训练的是基础能力,被称为“基础模型”(Amateur)。
然而CLIP需要400M的图像-文本对进行前训练,囿于极大的数据量,CLIP很难进一步发展。但“书生”提出了一种新的训练范式,DeCLIP(Data efficient CLIP ),能够同时使用来自图像-文本、图像-图像和文本-文本对的监督信号进行模型预训练,从而更有效地实现通用性。
此外,为了充分利用大规模多模态数据获取基础模型的优势,这一阶段提出了Upstream-Amateur (Up-A)视觉语言预训练框架,同时挖掘模态内和跨模态知识。
这一训练框架分为两个预训练阶段:Upstream-Amateur for Global Representation (Up-A-G)和Upstream-Amateur for Local Representation (Up-A-L)。
其中,Up-A-G(左)使用群体监督功能,从更丰富的监督中学习。Up-A-L(右)采用局部自我监督学习方法,对训练好的视觉-语言模型进行调整,从而提高自身在密集预测CV任务中的表现。
Upstream-Amateur的框架
得益于这些内在的监督,DeCLIP-ResNet50可以在ImageNet上实现60.4%的zero-shot 精度第一。这比CLIP-ResNet50高出0.8%,数据使用量少了81%。当迁移到下游任务时,DeCLIP-ResNet50在11个视觉数据集中有8个优于CLIP。
更关键的是,训练完成的Upstream-Amateur为后续的训练阶段提供了一个很高的起点。
第二阶段,训练的是专业能力,被称为“专家模型”(Expert)。
Up-A阶段得到的基础模型,在一般的视觉识别问题上显示出优异的性能。但要完全掌握检测、分割等更具体的任务,还需要在每个任务中进行更专业的预训练,这就促成了第二个阶段的到来,专家模型。
对于每个专家,“书生”采用了一种简单的多头设计,每个头是一个特定数据集的子网络,从一个公共的、共享的“主干”分支出来。比如Up-E (C)、Up-E (D)和Up-E (S),分别用于图像分类、对象检测和语义分割。
第三阶段,训练的是组合能力,被称为“通才模型”(Generalist)。
上述的多任务是指不同数据集(如ImageNet和CIFAR)的一个视觉问题(如分类),或一个数据集的多个视觉问题(如分类和检测)。但关键是,如何将专家整合到一个统一的模型中,获得一个更加通用的视觉模型。因此,在预训练“专家”阶段之后,又将“通才”作为第三个预训练阶段,以进一步统一特征表示。
“书生”提出了一个新的范式,名为“混合参数共享”,从而开发一个名为“多面手”的通才模型。
具体来说,由于专家捕获的知识是相互关联的,当专家的特征融合为一个共享的表示形式时,再利用基于软共享的跨任务知识转移和基于硬共享的通用表示学习的方法,在不引入任务冲突的情况下在专家之间传递信息(特征转移),从而进一步提高了多任务训练的模型(专家)性能,即“通才”能力。
在结构上,通才模型是所有专家的一个相互关联的版本,因此可以把每个“专家主干”称为“通才分支”。此外,我们还可以根据训练相应专家的任务将通才中的每个分支分为图像、补丁和像素。但无论是软共享还是硬共享,都意味着从专家模型到通才模型的一次跃升。
在经历了前三个训练阶段模块后,终于来到最后的任务迁移阶段 (Adaptation)。
这个阶段属于技术链条的下游,用来解决各式各样不同类型的任务,而这也是最考验“书生”举一反三能力的时刻。它需要在这个阶段把之前学到的通用知识,融会贯通地应用到不同特定任务中。
在此之前,很多迁移学习方法确实取得了很多进步,但问题是,这些方法既没有利用上游预训练中的隐含信息,也没有考虑到下游数据在少镜头场景中的不足。
因此,“书生”提出了一种Multi-stage Fine-tuning (MF)方法,缓解在数据较少的情况下传输的困难,再通过将上游数据编码成生成模型,即VQ-GAN,可以将预训练的模型转移到多个任务和领域,而无需每次都使用上游数据,而这也使得“书生”更具通用性和可扩展性。
多级微调(MF)概述:VQ-GAN模型首先在第一阶段使用上游数据进行训练,然后在第二阶段由它重构下游数据。在此之后,第三阶段只对新增任务的特定参数进行重新表示的图像训练,第四阶段则通过下游数据对整个模型进行微调。
至此,一个具有持续学习能力的通用视觉模型终于出世。
而具体有哪些提升,不如看一下更直观的实验数据对比!
3 一网打尽视觉领域四大任务
视觉领域,任务繁多,主流任务包含分类、目标检测、语义分割、深度估计四大类型。
在这四大任务中,最强大的视觉模型还是去年OpenAI发布的CLIP模型。但相比较而言,“书生”则在准确率和数据使用效率上都有所提升。
1、精度表现
通过对“书生”训练出的模型在GV-B上的评测对比,发现经过多阶段预训练的MetaNet精度表现优异。
在ImageNet等26个最具代表性的下游场景中, “书生”在分类、目标检测、语义分割及深度估计等四大任务上,平均错误率分别降低了40.2%、47.3%、34.8%和9.4%。
书生(INTERN)与CLIP-R50x16在不同样本量上的性能对比,正确率展示
2、数据使用效率
“书生”在数据效率方面的提升尤为瞩目:只需要1/10的下游数据,就能超过CLIP基于完整下游数据训练的准确度。
以CLIP-R50x16和Up-G MN-B15在GV-B的评测对比为例,分别在分类、目标检测、语义分割、深度估计四大类型的26个下游任务数据集上进行了评测,仅使用了10%数据进行训练的Up-G MN-B15模型,在绝大部分数据集上都能比使用了全部训练数据的CLIP-R50有更好的精度表现。这表明,经过多阶段预训练的MetaNet具有极强的泛化能力,能够在仅有少量的训练样本情况下,达到SOTA的精度表现。
在下游视觉场景中,小样本训练带来的是极高的训练速度,以及极低的训练成本。
例如在花卉种类识别任务上,“书生“只需要每一类型的花卉提供两个训练样本,就能实现99.7%的准确率。
这个花卉数据集由102种英国常见的花组成,每个类别有40至258张图片。其中包含有很大的比例、姿势和光线变化。
102个类别的花卉数据集:
https://www.robots.ox.ac.uk/~vgg/data/flowers/102/index.html
4 通用视觉平台,已正式开源
如此强大的通用视觉训练模型已经正式开源!
更关键的是,连同上述讲到的标签数据集、网络结构以及评测基准,均在OpenGVLab被统一打包开源。
其中的网络结构除了MetaNet,还包含大家普遍使用的ResNet, MobileNet, ViT, EfficientNet等,以满足不同场景的应用,赋能计算机视觉。
然而,“书生”的布局不止于此。
OpenGVLab将与上海人工智能实验室此前发布的OpenMMLab、OpenDILab一道,共同构筑开源体系OpenXLab,持续推进通用人工智能的技术突破和生态构建。
一位已经使用过此次开源平台的自动驾驶算法研究员表示:“书生系列模型充分覆盖了从移动可部署的小模型,到超大规模自研结构,为行业带来了希望,尤其是它的收敛速度,大幅节省了训练开销,是技术落地的一大助推器。“
不仅是自动驾驶领域,智慧城市、智慧医疗、智慧交通,以及千千万万其他的智能化领域,都将获得通用视觉模型带来的技术红利。
一位腾讯研究员大赞OpenGVLab:“能把这么大的工作开源出来真的是业界良心。简单用了一下,确实比CLIP要更fine-grained(细粒度更高)。”
而来自学界的师生也对此感慨有加:“OpenGVLab集成了大量各种量级的state-of-the-art(先进)模型,使用起来更得心应手,省去了对不同codebase、不同模型繁琐调研的烦恼。”
换句话说,当那些代码和公式脱去了枯燥乏味的外衣,人们才发现了真正的创造力。而这,也是技术创新与平台开源的魅力所在。
往近了说,用这款通用视觉模型打比赛,怕不是奖金多到飞起!在技术生产力的道路上,又诞生了一个致富小妙招!
目前,“书生”技术报告《INTERN: A New Learning Paradigm Towards General Vision》已在arXiv平台发布。
论文地址:arxiv.org/abs/2111.08687