翻译不好还请谅解!
卷积神经网络在计算机视觉领域取得了巨大的成功。然而,大多数可用的网络架构都是手工制作的,通常需要专业知识和精心设计。在本文中,我们提供了一个名为BlockQNN的分块网络生成管道,它使用具有epsilon-greedy探索策略的Q-Learning范式自动构建高性能网络。最佳网络块由学习代理构建,该学习代理被顺序训练以选择组件层。我们堆叠块来构造整个自动生成的网络。为了加快生成过程,我们还提出了分布式异步框架和早期停止策略。块生成带来了独特的优势: (1)与手工制作的最先进的图像分类网络相比,具有较强的竞争力。此外,BlockQNN生成的最佳网络在CIFAR-10上达到3.54%的top-1错误率,超过了所有现有的自动生成网络。(2)同时,它在设计网络中大大减少了搜索空间,只花了3天时间用32个GPU,(3)而且它具有很强的通用性,建立在CIFAR上的网络在更大规模的ImageNet数据集上也表现良好。
二、引言
在过去的几十年里,卷积神经网络(CNNs)在计算机视觉社会的各个领域都显示出了巨大的潜力[17]。例如,由于网络从AlexNet[16]、VGG[25]、Inception[30]到ResNet[10]网络的演进,ImageNet challenge上排名前5的性能稳步从83.6%上升到96.43%。然而,由于性能提升通常需要增加网络容量,因此高性能网络架构通常具有关于层数,每层中的超参数和每层的类型的大量可能配置。因此,手工详尽搜索是不可行的,而成功的手工网络设计在很大程度上依赖于专家知识和经验。因此,如何以智能、自动化的方式构建网络仍然是一个悬而未决的问题。
虽然最近的一些工作尝试了计算机辅助或自动化网络设计[2,37],但仍有一些挑战尚未解决: (1)现代神经网络总是由数百个卷积层组成,每个卷积层在类型和超参数上都有众多的选择。它给网络的生成带来了巨大的搜索空间和计算成本。(2)一个典型设计的网络通常局限于一个特定的数据集或任务上,因此很难转移到其他任务或推广到具有不同输入数据大小的另一个数据集。在本文中,我们提出了一种新的快速Q-learning框架(称为BlockQNN)来自动设计网络架构,以解决上述挑战,如图1所示。
特别地,为了提高网络生成的效率和可推广性,我们引入了块式网络生成,即,我们将网络架构构建为个性化块的灵活堆栈,而不是冗长的每层网络堆叠。事实上,大多数现代CNN架构,如Inception[30, 14, 31]和ResNet [10,11],都是作为基本块结构的堆栈进行组装的。例如,图1所示的初始和残余块被反复连接起来,构成整个网络。利用这种块式网络结构,生成的网络具有对其他任务域或不同数据集的强大泛化能力。
图1所示。提出的块qnn(右红色框)与手工制作的(用黄色标记)网络和现有的(用绿色标记)自动生成的网络相比。自动生成蓝色标记的普通网络[2,37],对于每一个单层的最优层类型和超参数的搜索需要耗费大量的计算成本,而块式网络则大大降低了只搜索一个块的结构的成本。然后通过叠加生成的块来构造整个网络。类似的块概念在手工制作的网络中,如标记为红色的接收块和剩余块,已经证明了它的优越性。
与之前的NAS[37]和MetaQNN[2]等方法相比,如图1所示,我们提出了一种更容易、更优雅的模型生成方法,专门用于块生成。在无监督强化学习范式的激励下,我们采用了著名的Q-learning[33],结合rearXiv play[19]和epsilon-greedy策略[21],来有效地搜索最优块结构。网络块由学习代理构成,其被训练顺序来选择组件层。然后,我们将数据块堆叠起来,构建整个自动生成的网络。此外,我们还提出了一种早期停止策略,以实现快速收敛的高效搜索。设计了一种新的奖励函数,以保证早期停止网络与聚合网络具有正相关的准确性。利用这一特性,我们可以在较短的训练时间内获得较好的块。利用这种加速策略,我们可以构造一个Q-learning agent,以便利用有限的资源(例如gpu少或时间短),来学习给定任务的最优块级网络结构。与其他自动网络生成方法生成的网络相比,生成的网络结构简洁并且具有较强的泛化能力。
提出的分组网络生成方法具有以下优点:
有效性:自动生成的网络与人工制作的网络相比,具有相当的性能。该方法也优于现有的方法,在CIFAR-10上取得了最先进的性能,错误率为3.54%。
高效性:在自动网络生成中,我们是第一个考虑分段设置的。与所提出的早期停止策略相结合,该方法具有快速搜索的特点。CIFAR任务的网络生成在3天内达到32个gpu的收敛,比NAS[37]在28天内达到800个gpu的收敛效率要高得多。
转移性:它提供了令人惊讶的卓越的可转移能力,为CIFAR生成的网络可以通过很少的修改就能转移到ImageNet,而且仍然取得了出色的性能。
2.相关工作
早在20世纪80年代,神经网络设计的自动化工作就已经开始,通常采用遗传算法或其他进化算法来搜索好的架构[24,27,26,28,23,7,34]。然而,据我们所知,这些作品与手工制作的网络相比,并没有竞争力。最近的工作,如神经架构搜索(NAS)[37]和MetaQNN[2],采用强化学习来自动搜索良好的网络架构。尽管在CIFAR-10、CIFAR-100等小型数据集上可以获得良好的性能,但是直接使用MetaQNN或NAS在ImageNet[6]等大型数据集上进行架构设计,通过在巨大的空间中搜索,计算成本非常昂贵。此外,这种方法生成的网络是特定于任务或特定于数据集的,即不能很好地传输到其他任务或不同输入数据大小的数据集。例如,为CIFAR-10设计的网络不能推广到ImageNet。
相反,我们的方法是通过一种高效的搜索方法设计网络块架构,这种搜索方法具有分布式异步Q-learning框架和早期停止策略。块的设计理念遵循了Inception[30,14,31]和Resnet[10,11]等现代卷积神经网络。inception-based网络构造初始模块通过一个手工制作的多层次特征提取器策略通过计算1×1,3×3和5×5的隆起,而Resnet使用残留块与快捷连接更容易代表身份映射,允许一个很深的网络。我们的方法自动生成的块具有类似的结构,比如一些块包含了短连接和类初始化的多分支组合。我们将在5.1节中详细讨论。
另一组相关工作包括超参数优化[3]、元学习[32]和学会学习方法[12,1]。然而,这些工作的目的是利用元数据来提高现有算法的性能,如寻找优化方法的最优学习率或构建网络的最优隐含层数。在本文中,我们主要学习网络块的整体拓扑结构来提高性能。
3.方法论
3.1 卷积神经网络模块
现代的CNNs,如Inception和Resnet,是通过堆叠几个块来设计的,每个块都有相似的结构,但是有不同的权重和过滤号来构建网络。该网络采用分块设计,不仅具有较高的性能,而且对不同的数据集和任务具有较强的泛化能力。与以往直接生成整个网络的神经网络自动设计的研究不同,我们的目标是设计块结构。
表1。网络结构代码空间。该空间包含7种常用的层。层索引表示当前层在块中的位置,参数范围设为T ={1,2,3,…,最大层指数}。卷积层考虑三种内核大小,池化层考虑两种内核大小。 Pred1和Pred2指的是前驱参数,用于表示前一层的索引,允许的范围为K ={1,2,…,当前图层索引-1}
图2。具有代表性的块示例及其网络结构代码(NSC)分别是:具有多分支连接的块(左)和具有快捷连接的块(右)。
由于CNN包含一个前馈计算过程,我们用一个有向无环图(DAG)来表示,其中每个节点对应于CNN中的一个层,而有向边代表从一个层到另一个层的数据流。为了将这种图形转化为统一的表示形式,我们提出了一种新的层表示形式,称为网络结构代码(NSC),如表1所示。然后,每个块由一组5维的NSC向量表示。在NSC中,前三个数字代表层索引、操作类型和内核大小。后两个参数是指结构代码中一个层的前一个层的位置的前一个参数。设置第二个前辈(Pred2),对于拥有两个前辈的图层,对于只有一个前辈的图层,Pred2将被设置为0。这个设计是由目前强大的手工制作的网络驱动的,比如Inception和Resnet,它们拥有自己特殊的块结构。这种块结构与普通网络(如AlexNet)的简单连接相比,具有类似的属性,例如包含更复杂的连接,例如快捷连接或多分支连接。因此,提出的NSC可以对复杂体系结构进行编码,如图2所示。此外,块中没有后续层的所有层都连接在一起,以提供最终输出。注意,与Resnet[11]中的声明相同,每一个卷积操作都是指一个预激活卷积细胞(Pre-activation tional Cell, PCC),它由ReLU、卷积和批处理归一化三部分组成。与三分量独立搜索相比,该算法的搜索空间更小,因此采用PCC算法可以得到更好的初始化效果,从而快速训练出最优的块结构。
图3。CIFAR-10(左)和ImageNet(右)上的自动生成网络。每个网络从几个卷积层开始学习低级特征,然后是多个重复的块,其中插入了多个池化层以进行下采样。
在上述定义的块的基础上,我们将这些块结构依次叠加,将普通的普通网络转换成对应的块版本,从而构建完整的网络。CIFAR和ImageNet任务上两个具有代表性的自动生成网络如图3所示。在每个块中没有向下采样操作。我们通过池化层直接执行下采样。如果通过池化操作将特征映射的大小减半,那么块的权重将增加一倍。由于输入大小不同,ImageNet的架构比CIFAR包含更多的池化层,即ImageNet为224×224,CIFAR为32×32。更重要的是,块可以重复N次以满足不同的需求,甚至可以用其他方式放置块,例如将块插入到Network-in-Network [20] 框架中,或者设置不同块之间的快捷连接。
3.2 用Q学习设计网络块
虽然我们专注于构建网络块来压缩整个网络设计的搜索空间,但是仍然有大量的可能结构需要寻找。因此,我们采用强化学习而不是随机抽样的自动设计。我们的方法基于Q-learning,这是一种强化学习,它关注的是一个代理人应该如何采取行动来最大化累积的奖励。Q-learning模型由agent、state和一组action组成。
在本文中,状态 表示当前层的状态,定义为3.1节中声明的网络结构代码(NSC),即5维向量{层索引,层类型,内核大小,pred1,pred2}。动作 是下一个连续层的决策。由于定义的NSC集合具有有限的选择,因此状态空间和动作空间都是有限的和离散的,从而保证了相对较小的搜索空间。状态转换过程 如图4(a)所示,其中t为当前层。图4(b)中的块实例是由图4(a)中的红色实线生成的。学习代理的任务是顺序地选择块的NSC。块的结构可以看作是一个动作选择轨迹 ,即NSC的序列。我们将层选择过程建模为马尔可夫决策过程,假设在一个块中表现良好的层在另一个块[2]中也应该表现良好。为了找到最优的结构,我们要求我们的agent在所有可能的轨迹上最大化它的期望权重,用R表示,
其中R是累积奖励。对于这个最大化问题,通常采用递归Bellman方程来求解最优性。给定状态 ,以及随后的行为 ,我们定义最大期望总报酬为 称为状态-动作对的q值。然后可以将递归Bellman方程写为:
求解上述量的经验假设是将其表示为迭代更新:
其中 为决定新获得信息如何覆盖旧信息的学习率, 是衡量未来奖励重要性的折现因子。 为当前状态 观测到的中间奖励, 为最终状态,即终端层。 是针对 的训练集的相应网络训练的收敛的验证准确度,即最终状态的动作。由于奖励 不能在我们的任务中明确测量,我们使用奖励塑造[22]来加速训练。形成的中间奖励定义为:
图4. Q学习过程图。 (a)通过不同的行动选择进行的状态过渡进程。 (b)中的块结构由(a)中的红色实线产生。 (c)Q学习程序的流程图。
之前的工作[2]在迭代过程中忽略了这些奖励,即将它们设置为0,这可能会在一开始导致收敛缓慢。这就是所谓的时间信用分配问题,使RL耗费时间[29]。在这种情况下,在训练的早期阶段, 的q值要比其他的高很多,导致agent在一开始就倾向于停止搜索,即倾向于构建具有较少层次的小块。我们在图5中给出了一个比较结果,在我们的形状奖励 下,agent的学习过程比之前的方法收敛得更快。
我们总结了图4(c)中的学习过程。agent首先对一组结构代码进行采样,构建块体系结构,在此基础上,通过对这些块进行顺序叠加,构建整个网络。然后对生成的网络进行某项任务的训练,以验证精度作为更新Q值的奖励。然后,agent选择另一组结构代码以获得更好的块结构。
图5。Q-learning在有和没有形成中间奖励的情况下的比较结果。在同样的探索中,通过我们的形成奖励,学习过程比没有形成奖励的学习过程收敛得更快。
3.3 早期停止策略
引入块式生成确实提高了效率。然而,完成搜索过程仍然很耗时间。为了进一步加速学习过程,我们引入了一个早期停止策略。我们都知道,早期停止训练过程可能会导致较差的准确性。图6为一个例子,其中黄线表示的早期停止精度远低于黄线表示的最终停止精度,这意味着一些好的块在早期停止训练时,表现比坏块差。同时,我们注意到,FLOPs和相应块密度与最终精度呈负相关关系。因此,我们将奖励函数重新定义为:
其中FLOPs[8]是对块计算复杂度的估计,密度是块的边数除以块在DAG中的点数。有两个超参数u和p来平衡FLOP和密度的权重。通过重新定义奖励函数后,奖励与最终的准确性更加相关。
这种提前停止策略和网络块的小搜索空间,仅用32个gpu完成搜索过程只需3天,优于[37],用800个gpu完成搜索过程需要28天。
图6。早期停止训练的表现比完整训练的最终准确性。在FLOPs和密度的帮助下,缩小了重新定义的奖励函数与最终精度之间的差距。
4.框架和培训细节
4.1 分布式异步框架
为了加快对agent的学习,我们使用了如图7所示的分布式异步框架。它由主节点、控制器节点和计算节点三部分组成。agent首先在主节点中对一批块结构进行采样。然后,我们将它们存储在控制器节点中,控制器节点使用块结构来构建整个网络,并将这些网络分配给计算节点。它可以看作是一个简化的参数服务器[5,18]。具体来说,在每个计算节点上并行训练网络,并由控制器节点返回验证精度作为对更新agent的奖励。利用该框架,我们可以在多台具有多gpu的机器上高效地生成网络。
图7。分布式异步框架。它包括三个部分:主节点、控制器节点和计算节点。
4.2 培训细节
Epsilon-greedy策略。使用Q-learning对agent进行训练,并进行经验重放[19]和贪婪策略[21]。利用epsilon-greedy策略,以概率 进行随机操作,以概率 选择贪心操作,按照表2所示的时间表将epsilon从1.0减小到0.1,使agent能够顺利地从勘探到开发。我们发现,随着搜索时间的延长,搜索范围会变大,agent在随机搜索期间可以看到更多的块结构,搜索结果会更好。
表2。ε时间表。代理在每个(ε)状态下训练的迭代次数。
经验重播。在[2]之后,我们使用重放内存来存储每次迭代后的验证精度和块描述。在给定的时间间隔内,即每次训练迭代,agent从内存中采样64个块,并对其验证精度进行相应的验证,对q值进行64次更新。
BlockQNN生成。
Q-learning更新过程中,学习率 设置为0.01,折现系数 为1。我们将重新定义的奖励函数中的超参数 分别设置为1和8。agent一次采样64组NSC向量以组成一个小批量,并将块的最大层索引设置为23。我们对agent进行178次迭代,即总共采样11392个块。
在块搜索阶段,计算节点使用3.3节中描述的早期top策略,将生成的每个网络训练为CIFAR-100上的12个固定时间段。CIFAR-100包含60000个样本,100个类,分为训练集和测试集,比例为5:1。我们在没有任何数据扩充程序的情况下训练网络。批量大小设置为256。我们使用Adam优化器[15], b1 = 0.9, b2 = 0.999,”E= 10-8。初始学习率设置为0.001,并且每5个周期减少0.2个因子。所有权值都按照[9]进行初始化。如果第一个周期后的训练结果比随机猜测的结果差,我们将学习率降低0.4倍,并重新开始训练,重新开始操作的次数最多为3次。
在得到一个最优的块结构后,我们用堆叠块构建整个网络,并对网络进行训练直到收敛,以得到验证精度作为选择最优网络的标准。在这个阶段,我们通过随机裁剪图像大小的32×32和水平翻转来增加数据。所有模型都使用SGD优化器,动量率设置为0.9,权重衰减设置为0.0005。我们从0.1的学习率开始,对300个时期的模型进行训练,降低了第150和225个时期的学习率。批处理大小设置为128,所有权重都使用MSRA初始化[9]初始化。
可转让的BlockQNN。我们还评估了在CIFAR-100上搜索到的最佳自动生成块结构到较小的数据集CIFAR-10(只有10个类)和较大的数据集ImageNet(包含1.2M图像和1000个类)之间的可移植性。所有实验设置与上述CIFAR-100相同。训练采用256小批处理的方式进行,每幅图像都有随机裁剪和翻转的数据增强,并使用SGD策略进行优化。初始学习率、权值衰减和动量分别设为0.1、0.0001和0.9。我们把学习速率除以10倍,分别是第30和第60周期。该网络共经过90个时期的训练。对中心裁剪的测试图像进行了精度评价。
我们的框架是在PyTorch科学计算平台下实现的。我们使用了CUDA后端和cuDNN加速库来实现高性能GPU加速。我们的实验是在32个NVIDIA TitanX gpu上进行的,大约需要3天的时间来完成搜索。
5.结果
5.1 块搜索分析
图8(a)提供了CIFAR-100上178个批次以上的早期停止精度,每个批次在每个小批次内平均超过64个自动生成的块级网络候选。经过随机探索,早期停止精度稳定增长直至收敛。平均精度的时期内随机勘探是56%,而最终达到65%ε= 0:1的阶段。我们选择前100个块候选人,并训练他们各自的网络来验证最佳区块结构。我们在图8(b-c)中展示了top-2的块结构,表示为block - qnna和block - qnn - b。如图8(a)所示,这两个top-2块都是在Q-learning过程的最后阶段找到的,证明了该方法搜索最优块结构的有效性,而不是随机搜索大量模型。此外,我们注意到生成的块与那些最先进的手工网络具有相似的属性。例如,block - qn - a和block - qn -b包含了在基于残差和基于感知的网络中手工设计的快捷连接和多分支结构。与其他自动生成方法相比,该方法生成的网络更加优秀,能够自动有效地揭示优化网络结构的有益特性。
图8。(a) CIFAR-100的Q-learning性能。精度随着epsilon减少而增加,顶级模型都在最后阶段找到,表明我们的agent可以学习生成更好的块结构,而不是随机搜索。(b-c)我们的方法生成的前2个块结构拓扑。我们称之为Block-QNN-A和Block-QNN-B。(d)用有限参数生成的最佳块结构拓扑,称为Block- qnn - s。
为了压缩搜索空间,如3.1节所述,我们定义了一个预激活卷积单元(PCC),它由ReLU、卷积和批处理归一化(BN)三部分组成。在图9中,我们展示了PCC搜索三个组件组合与单独搜索每个组件相比的优越性。单独搜索这三个组件更容易产生“坏”块,也需要更多的搜索空间和时间来追求“好”块。
图9。在CIFAR-100上具有不同NSC的Q学习结果。红线表示用PCC进行搜索,即ReLU、Conv和BN的组合。蓝色代表使用ReLU, BN, Conv进行单独搜索,红线从一开始就比蓝色好,有很大的差距。
5.2 CIFAR的结果
由于CIFAR中的图像尺寸很小(例如32×32),我们将块堆栈数设为N = 4。我们将生成的最佳体系结构与表3中最先进的手工网络或自动生成网络进行比较。
表3。Block-QNN的结果(错误率)与CIFAR-10 (C-10)和CIFAR-100 (C-100)数据集的最新方法进行了比较。
与手工制作的网络相比,我们的Block- qnn网络优于大多数手工制作的网络。DenseNet-BC [13]在每个复合函数和压缩过渡层中使用额外的1×1卷积来减少参数并提高性能,这在们的设计中没有采用。利用这些先验知识,我们的性能可以得到进一步提高。
与自动生成的网络相比,我们的方法对MetaQNN[2]实现了显著的改进,甚至优于NAS大脑提出的最优模型(即NASv3多过滤器)[37],该模型需要昂贵的时间成本和GPU资源。如表4所示,NAS在28天内在800个gpu上对整个系统进行训练,而我们在3天内只需要32个gpu就可以获得最先进的性能。
表4.与其他自动设计网络方法相比,我们的方法所需的计算资源和时间。
从CIFAR-100转移到CIFAR-10 -我们将从CIFAR-100学习到的top block转移到CIFAR-10数据集,所有实验设置都是相同的。如表3所示,这些block还可以在CIFAR-10数据集上以3.60%的错误率得到最先进的结果,证明Block-QNN网络具有强大的可移植性。
网络参数分析-由于我们在训练期间没有添加任何约束,我们的方法生成的网络可能很复杂,参数数量很多。我们进一步进行了有限参数和自适应块数网络搜索实验。我们将最大参数设置为10M,得到一个在参数较少的情况下优于NASv3的最优块(block - qnn - s),如图8(d)所示。此外,在每一卷积层中加入更多的滤波器(例如从[32,64,128]到[80,160,320]),我们可以得到更好的结果(3.54%)。
5.3 转移到ImageNet
为了证明我们方法的可通用性,我们将从CIFAR学到的块结构转换为ImageNet数据集。
对于ImageNet任务,我们设置块重复次数N=3,并在block之前增加更多的下采样操作,不同级别块中卷积层的滤波器为[64,128,256,512]。我们直接使用CIFAR-100中学习到的最好的块结构,不需要任何微调,生成的网络使用MSRA初始化进行初始化,如上所述。实验结果如表5所示。该框架生成的网络与其他人工设计的模型相比具有较强的竞争力。最近提出的方法如Xception[4]和ResNext[35]采用特殊的深度卷积运算来减少其参数总数,以提高性能。在我们的工作中,我们没有使用这个新的卷积运算,所以不能公平的比较,我们会在以后的工作中考虑这个来进一步提高性能。
表5所示。在ImageNet-1K数据集上,Block-QNN的结果(单作物错误率)与现代方法进行了比较。
据我们所知,以往的自动生成网络的工作大多没有在大规模的图像分类数据集上报告竞争结果。有了块学习的概念,我们可以很容易地将在小数据集中学习到的架构转移到像ImageNet任务这样的大数据集。在未来的实验中,我们将尝试将生成的块应用到其他任务中,如目标检测和语义分割。
6、结论
本文介绍了如何利用Q-learning高效地设计高性能网络块。我们使用一个分布式异步q学习框架和一个专注于快速块结构搜索的早期停止策略。为了构建良好的卷积网络,我们将该框架应用于块的自动生成。我们的Block-qnn网络在图像分类任务方面优于现代手工制作的网络和其他自动生成的网络。在CIFAR上达到最先进性能的最好的块结构可以很容易地转移到大型数据集ImageNet上,并且与最好的手工制作的网络相比,可以产生具有竞争力的性能。研究表明,采用块设计策略进行搜索可以得到更优雅的可解释的网络结构模型。在未来,我们将继续从不同的方面改进所提出的框架,例如使用更强大的卷积层,使搜索过程更快。我们也会尝试搜索具有有限FLOP的块,并在检测或分割等其他任务上进行实验。
致谢
本研究得到国家自然科学基金(NSFC) 61721004和61633021的资助。
附录
A. BlockQNN的效率
我们证明了我们提出的Block-qnn在CIFAR-100数据集上的网络架构生成的有效性,与给定相等数量的训练迭代(即采样网络的数量)的随机搜索相比。我们定义了网络架构自动生成的有效性 算法作为从最初的随机探索到开发的顶级自动生成网络性能的增加,因为我们的目标是获得最优的自动生成网络,而不是提高平均性能。
图10显示了BlockQNN和random search (RS)对于一个完整的训练过程的性能,即总共采样11,392个块。我们可以发现,在CIFAR-100数据集的开发阶段,BlockQNN生成的最佳模型明显优于RS发现的最佳模型,比RS发现的最佳模型好1%以上。我们在BlockQNN生成的前5个模型与RS相比的平均性能中观察到这一点。注意,为了公平起见,比较随机搜索方法与BlockQNN从相同的探索阶段开始。
图10。测量Block-qnn对学习随机搜索(RS)神经架构的效率。x轴表示训练迭代次数(批大小为64次),即采样的体系结构总数,y轴表示CIFAR-100训练12次后的早期停止性能。每一对曲线测量的是每个算法生成的顶级模型的平均精度。最好是彩色的。
图11显示了具有有限参数和自适应块号(BlockQNN-L)的BlockQNN和具有有限参数和自适应块号(RS-L)的随机搜索对于一个完整的训练过程的性能。我们可以看到同样的现象,BlockQNN-L在开发阶段的表现优于RS-L超过1%。这些结果证明,我们的BlockQNN可以学习生成更好的网络架构,而不是随机搜索。
图11。测量具有有限参数的BlockQNN和自适应块号(BlockQNN-L)对具有有限参数的随机搜索和具有自适应块号(RS-L)的学习神经结构的效率。x轴表示训练迭代次数(批大小为64次),即采样的体系结构总数,y轴表示CIFAR-100训练12次后的早期停止性能。每一对曲线测量的是每个算法生成的顶级模型的平均精度。最好是彩色的。
B.自动生成块的演进过程
我们采用我们的方法在不同阶段,即在迭代[1;30;60;90;110;130;150;170],以显示进化过程。如图12和图13所示,即BlockQNN和BlockQNN- l,随机勘探阶段生成的块结构要比开发阶段生成的块结构简单得多。
图12. BlockQNN生成的块的演化过程。 我们在迭代时用中值性能对块结构进行采样[1;30;60;90;110;130;150; [170]比较随机探索阶段中的块与开发阶段中的块之间的差异。
图13. BlockQNN使用有限参数和自适应块编号生成的块的演化过程(BlockQNN-L)。 我们在迭代时用中值性能对块结构进行采样[1;30;60;90;110;130;150; 170]比较随机探索阶段中的块与开发阶段中的块之间的差异。
在开发阶段,多分支结构频繁出现。注意,连接数逐渐增加,块倾向于选择“Concat”作为最后一层。我们发现,在开发阶段,短路连接和元素添加层是常见的。此外,由于参数的限制,blockqn - l生成的块具有较少的“Conv,5”层,即核大小为5的卷积层。
这些都证明了我们的方法可以学习到好的网络块的通用设计概念。与其他自动网络架构设计方法相比,我们生成的网络更优雅,模型更易于解释。
C.附加实验
我们还使用BlockQNN在人员关键点任务上生成最佳模型。通过对MPII数据集的训练,将MPII中发现的最优模型转化为COCO挑战。完成搜索过程需要5天时间。自动生成的关键点任务网络优于最先进的沙漏2栈网络,即70.5 AP与COCO验证数据集上的70.1 AP相比。
实用的分块神经网络架构生成
卷积神经网络在计算机视觉领域取得了巨大的成功。然而,大多数可用的网络架构都是手工制作的,通常需要专业知识和精心设计。在本文中,我们提供了一个名为BlockQNN的分块网络生成管道,它使用具有epsilon-greedy探索策略的Q-Learning范式自动构建高性能网络。最佳网络块由学习代理构建,该学习代理被顺序训练以选择组件层。我们堆叠块来构造整个自动生成的网络。为了加快生成过程,我们还提出了分布式异步框架和早期停止策略。块生成带来了独特的优势: (1)与手工制作的最先进的图像分类网络相比,具有较强的竞争力。此外,BlockQNN生成的最佳网络在CIFAR-10上达到3.54%的top-1错误率,超过了所有现有的自动生成网络。(2)同时,它在设计网络中大大减少了搜索空间,只花了3天时间用32个GPU,(3)而且它具有很强的通用性,建立在CIFAR上的网络在更大规模的ImageNet数据集上也表现良好。
二、引言
在过去的几十年里,卷积神经网络(CNNs)在计算机视觉社会的各个领域都显示出了巨大的潜力[17]。例如,由于网络从AlexNet[16]、VGG[25]、Inception[30]到ResNet[10]网络的演进,ImageNet challenge上排名前5的性能稳步从83.6%上升到96.43%。然而,由于性能提升通常需要增加网络容量,因此高性能网络架构通常具有关于层数,每层中的超参数和每层的类型的大量可能配置。因此,手工详尽搜索是不可行的,而成功的手工网络设计在很大程度上依赖于专家知识和经验。因此,如何以智能、自动化的方式构建网络仍然是一个悬而未决的问题。
虽然最近的一些工作尝试了计算机辅助或自动化网络设计[2,37],但仍有一些挑战尚未解决: (1)现代神经网络总是由数百个卷积层组成,每个卷积层在类型和超参数上都有众多的选择。它给网络的生成带来了巨大的搜索空间和计算成本。(2)一个典型设计的网络通常局限于一个特定的数据集或任务上,因此很难转移到其他任务或推广到具有不同输入数据大小的另一个数据集。在本文中,我们提出了一种新的快速Q-learning框架(称为BlockQNN)来自动设计网络架构,以解决上述挑战,如图1所示。
特别地,为了提高网络生成的效率和可推广性,我们引入了块式网络生成,即,我们将网络架构构建为个性化块的灵活堆栈,而不是冗长的每层网络堆叠。事实上,大多数现代CNN架构,如Inception[30, 14, 31]和ResNet [10,11],都是作为基本块结构的堆栈进行组装的。例如,图1所示的初始和残余块被反复连接起来,构成整个网络。利用这种块式网络结构,生成的网络具有对其他任务域或不同数据集的强大泛化能力。
图1所示。提出的块qnn(右红色框)与手工制作的(用黄色标记)网络和现有的(用绿色标记)自动生成的网络相比。自动生成蓝色标记的普通网络[2,37],对于每一个单层的最优层类型和超参数的搜索需要耗费大量的计算成本,而块式网络则大大降低了只搜索一个块的结构的成本。然后通过叠加生成的块来构造整个网络。类似的块概念在手工制作的网络中,如标记为红色的接收块和剩余块,已经证明了它的优越性。
与之前的NAS[37]和MetaQNN[2]等方法相比,如图1所示,我们提出了一种更容易、更优雅的模型生成方法,专门用于块生成。在无监督强化学习范式的激励下,我们采用了著名的Q-learning[33],结合rearXiv play[19]和epsilon-greedy策略[21],来有效地搜索最优块结构。网络块由学习代理构成,其被训练顺序来选择组件层。然后,我们将数据块堆叠起来,构建整个自动生成的网络。此外,我们还提出了一种早期停止策略,以实现快速收敛的高效搜索。设计了一种新的奖励函数,以保证早期停止网络与聚合网络具有正相关的准确性。利用这一特性,我们可以在较短的训练时间内获得较好的块。利用这种加速策略,我们可以构造一个Q-learning agent,以便利用有限的资源(例如gpu少或时间短),来学习给定任务的最优块级网络结构。与其他自动网络生成方法生成的网络相比,生成的网络结构简洁并且具有较强的泛化能力。
提出的分组网络生成方法具有以下优点:
有效性:自动生成的网络与人工制作的网络相比,具有相当的性能。该方法也优于现有的方法,在CIFAR-10上取得了最先进的性能,错误率为3.54%。
高效性:在自动网络生成中,我们是第一个考虑分段设置的。与所提出的早期停止策略相结合,该方法具有快速搜索的特点。CIFAR任务的网络生成在3天内达到32个gpu的收敛,比NAS[37]在28天内达到800个gpu的收敛效率要高得多。
转移性:它提供了令人惊讶的卓越的可转移能力,为CIFAR生成的网络可以通过很少的修改就能转移到ImageNet,而且仍然取得了出色的性能。
2.相关工作
早在20世纪80年代,神经网络设计的自动化工作就已经开始,通常采用遗传算法或其他进化算法来搜索好的架构[24,27,26,28,23,7,34]。然而,据我们所知,这些作品与手工制作的网络相比,并没有竞争力。最近的工作,如神经架构搜索(NAS)[37]和MetaQNN[2],采用强化学习来自动搜索良好的网络架构。尽管在CIFAR-10、CIFAR-100等小型数据集上可以获得良好的性能,但是直接使用MetaQNN或NAS在ImageNet[6]等大型数据集上进行架构设计,通过在巨大的空间中搜索,计算成本非常昂贵。此外,这种方法生成的网络是特定于任务或特定于数据集的,即不能很好地传输到其他任务或不同输入数据大小的数据集。例如,为CIFAR-10设计的网络不能推广到ImageNet。
相反,我们的方法是通过一种高效的搜索方法设计网络块架构,这种搜索方法具有分布式异步Q-learning框架和早期停止策略。块的设计理念遵循了Inception[30,14,31]和Resnet[10,11]等现代卷积神经网络。inception-based网络构造初始模块通过一个手工制作的多层次特征提取器策略通过计算1×1,3×3和5×5的隆起,而Resnet使用残留块与快捷连接更容易代表身份映射,允许一个很深的网络。我们的方法自动生成的块具有类似的结构,比如一些块包含了短连接和类初始化的多分支组合。我们将在5.1节中详细讨论。
另一组相关工作包括超参数优化[3]、元学习[32]和学会学习方法[12,1]。然而,这些工作的目的是利用元数据来提高现有算法的性能,如寻找优化方法的最优学习率或构建网络的最优隐含层数。在本文中,我们主要学习网络块的整体拓扑结构来提高性能。
3.方法论
3.1 卷积神经网络模块
现代的CNNs,如Inception和Resnet,是通过堆叠几个块来设计的,每个块都有相似的结构,但是有不同的权重和过滤号来构建网络。该网络采用分块设计,不仅具有较高的性能,而且对不同的数据集和任务具有较强的泛化能力。与以往直接生成整个网络的神经网络自动设计的研究不同,我们的目标是设计块结构。
表1。网络结构代码空间。该空间包含7种常用的层。层索引表示当前层在块中的位置,参数范围设为T ={1,2,3,…,最大层指数}。卷积层考虑三种内核大小,池化层考虑两种内核大小。 Pred1和Pred2指的是前驱参数,用于表示前一层的索引,允许的范围为K ={1,2,…,当前图层索引-1}
图2。具有代表性的块示例及其网络结构代码(NSC)分别是:具有多分支连接的块(左)和具有快捷连接的块(右)。
由于CNN包含一个前馈计算过程,我们用一个有向无环图(DAG)来表示,其中每个节点对应于CNN中的一个层,而有向边代表从一个层到另一个层的数据流。为了将这种图形转化为统一的表示形式,我们提出了一种新的层表示形式,称为网络结构代码(NSC),如表1所示。然后,每个块由一组5维的NSC向量表示。在NSC中,前三个数字代表层索引、操作类型和内核大小。后两个参数是指结构代码中一个层的前一个层的位置的前一个参数。设置第二个前辈(Pred2),对于拥有两个前辈的图层,对于只有一个前辈的图层,Pred2将被设置为0。这个设计是由目前强大的手工制作的网络驱动的,比如Inception和Resnet,它们拥有自己特殊的块结构。这种块结构与普通网络(如AlexNet)的简单连接相比,具有类似的属性,例如包含更复杂的连接,例如快捷连接或多分支连接。因此,提出的NSC可以对复杂体系结构进行编码,如图2所示。此外,块中没有后续层的所有层都连接在一起,以提供最终输出。注意,与Resnet[11]中的声明相同,每一个卷积操作都是指一个预激活卷积细胞(Pre-activation tional Cell, PCC),它由ReLU、卷积和批处理归一化三部分组成。与三分量独立搜索相比,该算法的搜索空间更小,因此采用PCC算法可以得到更好的初始化效果,从而快速训练出最优的块结构。
图3。CIFAR-10(左)和ImageNet(右)上的自动生成网络。每个网络从几个卷积层开始学习低级特征,然后是多个重复的块,其中插入了多个池化层以进行下采样。
在上述定义的块的基础上,我们将这些块结构依次叠加,将普通的普通网络转换成对应的块版本,从而构建完整的网络。CIFAR和ImageNet任务上两个具有代表性的自动生成网络如图3所示。在每个块中没有向下采样操作。我们通过池化层直接执行下采样。如果通过池化操作将特征映射的大小减半,那么块的权重将增加一倍。由于输入大小不同,ImageNet的架构比CIFAR包含更多的池化层,即ImageNet为224×224,CIFAR为32×32。更重要的是,块可以重复N次以满足不同的需求,甚至可以用其他方式放置块,例如将块插入到Network-in-Network [20] 框架中,或者设置不同块之间的快捷连接。
3.2 用Q学习设计网络块
虽然我们专注于构建网络块来压缩整个网络设计的搜索空间,但是仍然有大量的可能结构需要寻找。因此,我们采用强化学习而不是随机抽样的自动设计。我们的方法基于Q-learning,这是一种强化学习,它关注的是一个代理人应该如何采取行动来最大化累积的奖励。Q-learning模型由agent、state和一组action组成。
在本文中,状态 表示当前层的状态,定义为3.1节中声明的网络结构代码(NSC),即5维向量{层索引,层类型,内核大小,pred1,pred2}。动作 是下一个连续层的决策。由于定义的NSC集合具有有限的选择,因此状态空间和动作空间都是有限的和离散的,从而保证了相对较小的搜索空间。状态转换过程 如图4(a)所示,其中t为当前层。图4(b)中的块实例是由图4(a)中的红色实线生成的。学习代理的任务是顺序地选择块的NSC。块的结构可以看作是一个动作选择轨迹 ,即NSC的序列。我们将层选择过程建模为马尔可夫决策过程,假设在一个块中表现良好的层在另一个块[2]中也应该表现良好。为了找到最优的结构,我们要求我们的agent在所有可能的轨迹上最大化它的期望权重,用R表示,
其中R是累积奖励。对于这个最大化问题,通常采用递归Bellman方程来求解最优性。给定状态 ,以及随后的行为 ,我们定义最大期望总报酬为 称为状态-动作对的q值。然后可以将递归Bellman方程写为:
求解上述量的经验假设是将其表示为迭代更新:
其中 为决定新获得信息如何覆盖旧信息的学习率, 是衡量未来奖励重要性的折现因子。 为当前状态 观测到的中间奖励, 为最终状态,即终端层。 是针对 的训练集的相应网络训练的收敛的验证准确度,即最终状态的动作。由于奖励 不能在我们的任务中明确测量,我们使用奖励塑造[22]来加速训练。形成的中间奖励定义为:
图4. Q学习过程图。 (a)通过不同的行动选择进行的状态过渡进程。 (b)中的块结构由(a)中的红色实线产生。 (c)Q学习程序的流程图。
之前的工作[2]在迭代过程中忽略了这些奖励,即将它们设置为0,这可能会在一开始导致收敛缓慢。这就是所谓的时间信用分配问题,使RL耗费时间[29]。在这种情况下,在训练的早期阶段, 的q值要比其他的高很多,导致agent在一开始就倾向于停止搜索,即倾向于构建具有较少层次的小块。我们在图5中给出了一个比较结果,在我们的形状奖励 下,agent的学习过程比之前的方法收敛得更快。
我们总结了图4(c)中的学习过程。agent首先对一组结构代码进行采样,构建块体系结构,在此基础上,通过对这些块进行顺序叠加,构建整个网络。然后对生成的网络进行某项任务的训练,以验证精度作为更新Q值的奖励。然后,agent选择另一组结构代码以获得更好的块结构。
图5。Q-learning在有和没有形成中间奖励的情况下的比较结果。在同样的探索中,通过我们的形成奖励,学习过程比没有形成奖励的学习过程收敛得更快。
3.3 早期停止策略
引入块式生成确实提高了效率。然而,完成搜索过程仍然很耗时间。为了进一步加速学习过程,我们引入了一个早期停止策略。我们都知道,早期停止训练过程可能会导致较差的准确性。图6为一个例子,其中黄线表示的早期停止精度远低于黄线表示的最终停止精度,这意味着一些好的块在早期停止训练时,表现比坏块差。同时,我们注意到,FLOPs和相应块密度与最终精度呈负相关关系。因此,我们将奖励函数重新定义为:
其中FLOPs[8]是对块计算复杂度的估计,密度是块的边数除以块在DAG中的点数。有两个超参数u和p来平衡FLOP和密度的权重。通过重新定义奖励函数后,奖励与最终的准确性更加相关。
这种提前停止策略和网络块的小搜索空间,仅用32个gpu完成搜索过程只需3天,优于[37],用800个gpu完成搜索过程需要28天。
图6。早期停止训练的表现比完整训练的最终准确性。在FLOPs和密度的帮助下,缩小了重新定义的奖励函数与最终精度之间的差距。
4.框架和培训细节
4.1 分布式异步框架
为了加快对agent的学习,我们使用了如图7所示的分布式异步框架。它由主节点、控制器节点和计算节点三部分组成。agent首先在主节点中对一批块结构进行采样。然后,我们将它们存储在控制器节点中,控制器节点使用块结构来构建整个网络,并将这些网络分配给计算节点。它可以看作是一个简化的参数服务器[5,18]。具体来说,在每个计算节点上并行训练网络,并由控制器节点返回验证精度作为对更新agent的奖励。利用该框架,我们可以在多台具有多gpu的机器上高效地生成网络。
图7。分布式异步框架。它包括三个部分:主节点、控制器节点和计算节点。
4.2 培训细节
Epsilon-greedy策略。使用Q-learning对agent进行训练,并进行经验重放[19]和贪婪策略[21]。利用epsilon-greedy策略,以概率 进行随机操作,以概率 选择贪心操作,按照表2所示的时间表将epsilon从1.0减小到0.1,使agent能够顺利地从勘探到开发。我们发现,随着搜索时间的延长,搜索范围会变大,agent在随机搜索期间可以看到更多的块结构,搜索结果会更好。
表2。ε时间表。代理在每个(ε)状态下训练的迭代次数。
经验重播。在[2]之后,我们使用重放内存来存储每次迭代后的验证精度和块描述。在给定的时间间隔内,即每次训练迭代,agent从内存中采样64个块,并对其验证精度进行相应的验证,对q值进行64次更新。
BlockQNN生成。
Q-learning更新过程中,学习率 设置为0.01,折现系数 为1。我们将重新定义的奖励函数中的超参数 分别设置为1和8。agent一次采样64组NSC向量以组成一个小批量,并将块的最大层索引设置为23。我们对agent进行178次迭代,即总共采样11392个块。
在块搜索阶段,计算节点使用3.3节中描述的早期top策略,将生成的每个网络训练为CIFAR-100上的12个固定时间段。CIFAR-100包含60000个样本,100个类,分为训练集和测试集,比例为5:1。我们在没有任何数据扩充程序的情况下训练网络。批量大小设置为256。我们使用Adam优化器[15], b1 = 0.9, b2 = 0.999,”E= 10-8。初始学习率设置为0.001,并且每5个周期减少0.2个因子。所有权值都按照[9]进行初始化。如果第一个周期后的训练结果比随机猜测的结果差,我们将学习率降低0.4倍,并重新开始训练,重新开始操作的次数最多为3次。
在得到一个最优的块结构后,我们用堆叠块构建整个网络,并对网络进行训练直到收敛,以得到验证精度作为选择最优网络的标准。在这个阶段,我们通过随机裁剪图像大小的32×32和水平翻转来增加数据。所有模型都使用SGD优化器,动量率设置为0.9,权重衰减设置为0.0005。我们从0.1的学习率开始,对300个时期的模型进行训练,降低了第150和225个时期的学习率。批处理大小设置为128,所有权重都使用MSRA初始化[9]初始化。
可转让的BlockQNN。我们还评估了在CIFAR-100上搜索到的最佳自动生成块结构到较小的数据集CIFAR-10(只有10个类)和较大的数据集ImageNet(包含1.2M图像和1000个类)之间的可移植性。所有实验设置与上述CIFAR-100相同。训练采用256小批处理的方式进行,每幅图像都有随机裁剪和翻转的数据增强,并使用SGD策略进行优化。初始学习率、权值衰减和动量分别设为0.1、0.0001和0.9。我们把学习速率除以10倍,分别是第30和第60周期。该网络共经过90个时期的训练。对中心裁剪的测试图像进行了精度评价。
我们的框架是在PyTorch科学计算平台下实现的。我们使用了CUDA后端和cuDNN加速库来实现高性能GPU加速。我们的实验是在32个NVIDIA TitanX gpu上进行的,大约需要3天的时间来完成搜索。
5.结果
5.1 块搜索分析
图8(a)提供了CIFAR-100上178个批次以上的早期停止精度,每个批次在每个小批次内平均超过64个自动生成的块级网络候选。经过随机探索,早期停止精度稳定增长直至收敛。平均精度的时期内随机勘探是56%,而最终达到65%ε= 0:1的阶段。我们选择前100个块候选人,并训练他们各自的网络来验证最佳区块结构。我们在图8(b-c)中展示了top-2的块结构,表示为block - qnna和block - qnn - b。如图8(a)所示,这两个top-2块都是在Q-learning过程的最后阶段找到的,证明了该方法搜索最优块结构的有效性,而不是随机搜索大量模型。此外,我们注意到生成的块与那些最先进的手工网络具有相似的属性。例如,block - qn - a和block - qn -b包含了在基于残差和基于感知的网络中手工设计的快捷连接和多分支结构。与其他自动生成方法相比,该方法生成的网络更加优秀,能够自动有效地揭示优化网络结构的有益特性。
图8。(a) CIFAR-100的Q-learning性能。精度随着epsilon减少而增加,顶级模型都在最后阶段找到,表明我们的agent可以学习生成更好的块结构,而不是随机搜索。(b-c)我们的方法生成的前2个块结构拓扑。我们称之为Block-QNN-A和Block-QNN-B。(d)用有限参数生成的最佳块结构拓扑,称为Block- qnn - s。
为了压缩搜索空间,如3.1节所述,我们定义了一个预激活卷积单元(PCC),它由ReLU、卷积和批处理归一化(BN)三部分组成。在图9中,我们展示了PCC搜索三个组件组合与单独搜索每个组件相比的优越性。单独搜索这三个组件更容易产生“坏”块,也需要更多的搜索空间和时间来追求“好”块。
图9。在CIFAR-100上具有不同NSC的Q学习结果。红线表示用PCC进行搜索,即ReLU、Conv和BN的组合。蓝色代表使用ReLU, BN, Conv进行单独搜索,红线从一开始就比蓝色好,有很大的差距。
5.2 CIFAR的结果
由于CIFAR中的图像尺寸很小(例如32×32),我们将块堆栈数设为N = 4。我们将生成的最佳体系结构与表3中最先进的手工网络或自动生成网络进行比较。
表3。Block-QNN的结果(错误率)与CIFAR-10 (C-10)和CIFAR-100 (C-100)数据集的最新方法进行了比较。
与手工制作的网络相比,我们的Block- qnn网络优于大多数手工制作的网络。DenseNet-BC [13]在每个复合函数和压缩过渡层中使用额外的1×1卷积来减少参数并提高性能,这在们的设计中没有采用。利用这些先验知识,我们的性能可以得到进一步提高。
与自动生成的网络相比,我们的方法对MetaQNN[2]实现了显著的改进,甚至优于NAS大脑提出的最优模型(即NASv3多过滤器)[37],该模型需要昂贵的时间成本和GPU资源。如表4所示,NAS在28天内在800个gpu上对整个系统进行训练,而我们在3天内只需要32个gpu就可以获得最先进的性能。
表4.与其他自动设计网络方法相比,我们的方法所需的计算资源和时间。
从CIFAR-100转移到CIFAR-10 -我们将从CIFAR-100学习到的top block转移到CIFAR-10数据集,所有实验设置都是相同的。如表3所示,这些block还可以在CIFAR-10数据集上以3.60%的错误率得到最先进的结果,证明Block-QNN网络具有强大的可移植性。
网络参数分析-由于我们在训练期间没有添加任何约束,我们的方法生成的网络可能很复杂,参数数量很多。我们进一步进行了有限参数和自适应块数网络搜索实验。我们将最大参数设置为10M,得到一个在参数较少的情况下优于NASv3的最优块(block - qnn - s),如图8(d)所示。此外,在每一卷积层中加入更多的滤波器(例如从[32,64,128]到[80,160,320]),我们可以得到更好的结果(3.54%)。
5.3 转移到ImageNet
为了证明我们方法的可通用性,我们将从CIFAR学到的块结构转换为ImageNet数据集。
对于ImageNet任务,我们设置块重复次数N=3,并在block之前增加更多的下采样操作,不同级别块中卷积层的滤波器为[64,128,256,512]。我们直接使用CIFAR-100中学习到的最好的块结构,不需要任何微调,生成的网络使用MSRA初始化进行初始化,如上所述。实验结果如表5所示。该框架生成的网络与其他人工设计的模型相比具有较强的竞争力。最近提出的方法如Xception[4]和ResNext[35]采用特殊的深度卷积运算来减少其参数总数,以提高性能。在我们的工作中,我们没有使用这个新的卷积运算,所以不能公平的比较,我们会在以后的工作中考虑这个来进一步提高性能。
表5所示。在ImageNet-1K数据集上,Block-QNN的结果(单作物错误率)与现代方法进行了比较。
据我们所知,以往的自动生成网络的工作大多没有在大规模的图像分类数据集上报告竞争结果。有了块学习的概念,我们可以很容易地将在小数据集中学习到的架构转移到像ImageNet任务这样的大数据集。在未来的实验中,我们将尝试将生成的块应用到其他任务中,如目标检测和语义分割。
6、结论
本文介绍了如何利用Q-learning高效地设计高性能网络块。我们使用一个分布式异步q学习框架和一个专注于快速块结构搜索的早期停止策略。为了构建良好的卷积网络,我们将该框架应用于块的自动生成。我们的Block-qnn网络在图像分类任务方面优于现代手工制作的网络和其他自动生成的网络。在CIFAR上达到最先进性能的最好的块结构可以很容易地转移到大型数据集ImageNet上,并且与最好的手工制作的网络相比,可以产生具有竞争力的性能。研究表明,采用块设计策略进行搜索可以得到更优雅的可解释的网络结构模型。在未来,我们将继续从不同的方面改进所提出的框架,例如使用更强大的卷积层,使搜索过程更快。我们也会尝试搜索具有有限FLOP的块,并在检测或分割等其他任务上进行实验。
致谢
本研究得到国家自然科学基金(NSFC) 61721004和61633021的资助。
附录
A. BlockQNN的效率
我们证明了我们提出的Block-qnn在CIFAR-100数据集上的网络架构生成的有效性,与给定相等数量的训练迭代(即采样网络的数量)的随机搜索相比。我们定义了网络架构自动生成的有效性 算法作为从最初的随机探索到开发的顶级自动生成网络性能的增加,因为我们的目标是获得最优的自动生成网络,而不是提高平均性能。
图10显示了BlockQNN和random search (RS)对于一个完整的训练过程的性能,即总共采样11,392个块。我们可以发现,在CIFAR-100数据集的开发阶段,BlockQNN生成的最佳模型明显优于RS发现的最佳模型,比RS发现的最佳模型好1%以上。我们在BlockQNN生成的前5个模型与RS相比的平均性能中观察到这一点。注意,为了公平起见,比较随机搜索方法与BlockQNN从相同的探索阶段开始。
图10。测量Block-qnn对学习随机搜索(RS)神经架构的效率。x轴表示训练迭代次数(批大小为64次),即采样的体系结构总数,y轴表示CIFAR-100训练12次后的早期停止性能。每一对曲线测量的是每个算法生成的顶级模型的平均精度。最好是彩色的。
图11显示了具有有限参数和自适应块号(BlockQNN-L)的BlockQNN和具有有限参数和自适应块号(RS-L)的随机搜索对于一个完整的训练过程的性能。我们可以看到同样的现象,BlockQNN-L在开发阶段的表现优于RS-L超过1%。这些结果证明,我们的BlockQNN可以学习生成更好的网络架构,而不是随机搜索。
图11。测量具有有限参数的BlockQNN和自适应块号(BlockQNN-L)对具有有限参数的随机搜索和具有自适应块号(RS-L)的学习神经结构的效率。x轴表示训练迭代次数(批大小为64次),即采样的体系结构总数,y轴表示CIFAR-100训练12次后的早期停止性能。每一对曲线测量的是每个算法生成的顶级模型的平均精度。最好是彩色的。
B.自动生成块的演进过程
我们采用我们的方法在不同阶段,即在迭代[1;30;60;90;110;130;150;170],以显示进化过程。如图12和图13所示,即BlockQNN和BlockQNN- l,随机勘探阶段生成的块结构要比开发阶段生成的块结构简单得多。
图12. BlockQNN生成的块的演化过程。 我们在迭代时用中值性能对块结构进行采样[1;30;60;90;110;130;150; [170]比较随机探索阶段中的块与开发阶段中的块之间的差异。
图13. BlockQNN使用有限参数和自适应块编号生成的块的演化过程(BlockQNN-L)。 我们在迭代时用中值性能对块结构进行采样[1;30;60;90;110;130;150; 170]比较随机探索阶段中的块与开发阶段中的块之间的差异。
在开发阶段,多分支结构频繁出现。注意,连接数逐渐增加,块倾向于选择“Concat”作为最后一层。我们发现,在开发阶段,短路连接和元素添加层是常见的。此外,由于参数的限制,blockqn - l生成的块具有较少的“Conv,5”层,即核大小为5的卷积层。
这些都证明了我们的方法可以学习到好的网络块的通用设计概念。与其他自动网络架构设计方法相比,我们生成的网络更优雅,模型更易于解释。
C.附加实验
我们还使用BlockQNN在人员关键点任务上生成最佳模型。通过对MPII数据集的训练,将MPII中发现的最优模型转化为COCO挑战。完成搜索过程需要5天时间。自动生成的关键点任务网络优于最先进的沙漏2栈网络,即70.5 AP与COCO验证数据集上的70.1 AP相比。