FTSO: Effective NAS via First Topology Second Operator
FTSO:通过第一步搜拓扑第二搜算子实现有效的NAS
这篇文章和DOTS: Decoupling Operation and Topology in Differentiable Architecture Search(https://blog.csdn.net/Douzaikongcheng/article/details/122234641)这篇文章的方法类似。将算子和架构搜索分离开来也是一种NAS的方向。
论文:https://openreview.net/pdf?id=7Z29QbHxIL
摘要
现有的one-shot神经架构搜索(NAS)方法一般包含一个巨大的超网,导致计算开销较大。我们的方法名为FTSO,将整个架构搜索分为两个子步骤。第一步只搜索拓扑,第二步只搜索算子。FTSO不仅将网络连接存储的搜索时间从几天减少到0.68秒,而且显著提高了准确性。具体来说,我们在ImageNet上的实验表明,仅在18秒内,FTSO就可以达到76.4%的测试精度,比基准PCDARTS高1.5%。此外,FTSO可以达到97.77%的测试准确率,比基线高0.27%,在CIFAR10上节省了99.8%的搜索时间。
一:介绍
可微的NAS效率仍很低下,在大规模数据集和高级任务上找到令人满意的网络体系结构仍很难。例如,当前面向速度的NAS方法通常需要几天才能在ImageNet上完成一次搜索试验,例如,对于ProxylessNAS(蔡等人,2019年)需要8.3个GPU-天。因此,我们认为有必要提出一个新的定义明确的搜索空间,它不仅具有足够的表达能力来覆盖最强大的体系结构,而且足够紧凑来过滤掉较差的体系结构。
在舒等人(2020)的证明了在已发现的体系结构中随机替换操作符不会对测试精度造成很大的损害,我们相信,如果根据拓扑结构忽略操作符和集群体系结构的影响,不仅不会降低测试精度,而且会显著提高搜索效率。因此,在本文中,我们建议分别搜索网络拓扑和算子。我们将这种新方法命名为通过第一拓扑第二算子(FTSO)的有效NAS。
FTSO将所需参数大大减少,每次迭代的浮点运算次数大大减少。FTSO通过极大地缩小搜索空间、降低操作者在数量级上的复杂性以及将所需的搜索周期从50个时期降低到一次迭代,显著地提高了精确度。更何况马太效应缓解了。在0.68秒内完成了整个体系结构的搜索。在ImageNet上,FTSO可以在18秒内实现76.4%的测试精度,比基线高1.5%。更重要的是,当我们只搜索一次迭代时,FTSO可以达到75.64%的测试精度,仅在0.68秒内就比基线高0.74%。此外,如果允许FTSO搜索19分钟,可以获得76.42%的前1名和93.2%的前5名测试准确率。此外,FTSO可以达到97.77%的测试准确率,比基线高0.27%,在CIFAR10上节省了99.8%的搜索时间。虽然在本文中,我们只在一个连续的搜索空间中实现了FTSO,但我们在第5节中说明了FTSO可以无缝地转移到其他NAS算法中。
二:相关工作
现有的网络连接存储算法可以分为三类,即基于强化学习的、基于进化算法的和可微的方法。
三:FTSO
我们注意到在Shu等人(2020)中的一个重要观察结果是,在已发现的体系结构中,随机替换运算符不会显著影响测试精度。因此,我们可以根据它们的连接拓扑对架构进行集群,这将是一个很大的启发。具体来说,假设我们已经发现一个只包含最简单操作符的体系结构在测试集上实现了高精度,如果我们用强大的操作符替换这个体系结构中的所有跳过连接,转换后的体系结构也可以在测试集上以高置信度表现良好。
在本文中,我们首先提出用简单的算子来寻找有效的网络拓扑,然后固定拓扑,并为给定的拓扑寻找最合适的算子。这样在保证测试精度的同时,搜索空间在幅度上有所收缩。
在第一阶段,我们形成一个只包含最简单算子的超网,跳过连接。因为跳过连接操作符不包含内核权重,我们只需要优化架构参数βi,j,表示节点I对节点j的重要性,事实上,如表3所示,最大池操作符也为拓扑搜索带来了令人满意的结果。我们使用跳过连接有两个原因。第一个原因是跳过连接运算符不仅要求参数为零,而且产生的计算成本最小。第二个原因是,如果网络很深,最大池化可能会导致有用信息的丢失。此外,因为我们的拓扑搜索和普通的DARTS之间的唯一区别是候选操作符的数量,所以修剪后的架构的连通性可以得到保证。
在拓扑搜索之后,对于每个中间节点j,我们只保留它与前一个节点I *的连接,前一个节点I *具有最高的两个βi,与DARTS和PC-DARTS相似。在第二阶段,我们用两种策略搜索适合于剪枝拓扑的算子。其中一个用混合算子fi,j替换修剪拓扑中的每个算子,其中fi,j是所有候选算子o的线性组合,权重为αo i,j,表示算子o在节点I和j之间的重要性。之后,我们优化架构参数αo i,j,βi,并交替地增加内核权重ωo i,j。在超网收敛后,对于每两个连通节点I和j,我们只保留一个具有最高αo i,j的算子o∫。另一个是用一个具有最高模型容量的单个算子,例如卷积算子,直接替换修剪拓扑中的所有算子。在本文中,我们将第二种策略作为默认配置,因为它效率更高,并且避免了过度拟合。第一个策略输出的最终架构只是超级网的一小部分。如果子图能够在测试集上完美地泛化,那么超网一定是过拟合的。因此,在这种情况下,训练集上的最优超网不是测试集上的最优超网,子图也不是。PC-DARTS已经提到了这个问题,并通过只计算部分输入通道来缩小超级网络的规模。而在第二种策略中,由于没有采用超网,子图中所有简单的操作符都被强大的运营商,最终架构的模型容量得到提升。这两种策略之间的额外经验比较可以在第4.4节中找到。
算法一:拓扑结构的搜索
算法二:算子的搜索
在DARTS中,网络拓扑和算子是联合搜索的,这使得超网的规模和计算成本都非常高。除了操作数量的减少,FTSO还极大地降低了操作的内部成本,因为在拓扑搜索期间,所有强大的操作符都被简单的操作符所取代。
FTSO允许算法只在几次迭代中收敛,并防止过度拟合。这是因为当从超网中提取离散子图时,许多体系结构参数被设置为0。引入的扰动对过拟合超网的影响更大,因为它们更喜欢更尖锐的局部极小值。此外,它避免了马太效应。在DARTS中,每个架构只有一次迭代来调整其内核权重。然而,在一次迭代中,只有参数较少的算子才能收敛,因此,在超网中,简单的算子优于强大的算子,然后获得更大的梯度来扩大它们的优势。这样,所发现的体系结构往往只包含最简单的操作符,并且在训练和测试集上都表现不佳。
图2: FTSO发现的建筑。(a)和(b):在CIFAR10上搜索一个时期后发现的正常细胞和还原细胞;(c)和(d):经过一个时期的搜索,在整个图像网上发现的正常细胞和缩小细胞;(e)和(f):在CIFAR10上找到的正常和约简单元,我们采用算子搜索,并使用3 ×3可分卷积来搜索拓扑;(g):FTSO在NATS-Bench上发现的FTSO细胞;(h):DARTS在NA TS-Bench上发现的飞镖细胞。
四:实验
数据集:
CIFAR10,ImageNet和NATS-Bench
搜索空间八个候选算子(与darts相同):
'none', 'max_pool_3x3', 'avg_pool_3x3', 'skip_connect', 'sep_conv_3x3', 'sep_conv_5x5', 'dil_conv_3x3', 'dil_conv_5x5' 3 * 3,5 * 5 separable convolutions, 3 * 3,5 * 5 dilated separable convolutions,3 * 3 max and average pooling, skip connection (i.e., output = input),zero (i.e., output = 0),
当搜索拓扑时,我们只从候选集中选择一个算子。如第3节所述,我们有两种策略来确定运算符,包括基于梯度的策略和直接替换的策略。在第4.1节和第4.2节中,我们更关注第二种配置。在部分4.4,我们对这两种策略进行了全面的比较。所有详细的配置都在附录A.1的表4中显示。此外,我们的大多数实验只搜索一个时期或一次迭代,因为FTSO极大地减少了参数数量。更多实验支持,请参考第4.4节。请注意,现有模型仅通过搜索一个历元或一次迭代几乎不可能获得令人满意的结果,因为它们的超网包含大量参数,需要长时间来调整。
4.1 RESULTS ON CIFAR10
在实验中,我们只搜索具有跳跃连接的拓扑,然后用3 × 3的可分离卷积来代替它们。之所以不采用5×5可分卷积,是因为预处理后的输入图像分辨率不够,网络比较深。经过几层后,卷积的感受野已经大于整个图像。到那时,较大的卷积核可能不会带来好处。相反,较大的内核大小带来的额外参数可能会导致过度拟合。另一方面,假设图像的分辨率和数据集的规模都足够大,并且评估周期足够长,则5 × 5可分离卷积可能是更好的选择。经过一个时期的搜索,找到的体系结构如图2所示。因为FTSO只包含几个可训练的参数,它甚至可以通过一次梯度更新达到与PC-DARTS相当的精度。在这种配置下,只需要0.68秒,节省了99.993%的搜索时间。此外,如表3所示,当用强大的运算符长时间搜索拓扑时,附加的运算符搜索通常会有所帮助。然而,当我们在短时间内用简单算子搜索拓扑时,省略算子搜索可能会得到更好的结果。这是因为使用简单的操作符和很少的更新,所发现的拓扑已经可以很好地推广。
4.2 RESULTS ON IMAGENET
在IMAGENET上,我们使用与CIFAR10类似的配置。搜索时,我们有两种配置。我们在表1中的实验表明,FTSO在效率和有效性上都明显优于现有的方法。显示了在CIFAR10和整个ImageNet上搜索一个时期后找到的体系结构在图2中。令人惊讶的是,我们在ImageNet上找到的最好的架构是最浅最宽的。与图2(e)和图2(f)所示的更“合理”的架构相比,包含相同数量的浮点运算和参数的“异常”架构可以实现0.78%的更高测试精度,图2(e)和图2(f)中的拓扑搜索仅包含3 × 3可分离卷积和在CIFAR10上的额外运算符搜索。我们认为这是因为整个模型是由许多单元堆叠而成的。如果每个细胞的深度太高,就会导致非常深的神经网络。那时,因为我们发现的体系结构中的所有操作符都是卷积,所以我们不能使用跳过连接来以ResNet的方式促进梯度的传播。通过这种方式,渐变的消失和爆发可能会阻止更深层次的模型获得更高的性能。
4.3 RESULTS ON NATS-BENCH
4.4 ABLATION STUDY
就仅拓扑搜索而言,一个时期就足够了,这要归功于FTSO所包含的更少的核权重,并且更多的搜索时期由于过度拟合而带来明显的缺点。由于一个时期比多个时期表现更好,这就提出了一个问题,即一次迭代是否也优于多次迭代。在图3(c)中,我们展示了虽然一次迭代不能超过一个纪元,但它比几次迭代要好。这是因为当我们只搜索一次迭代时,模型确实过度拟合了数据,因此模型很好地概括了。当我们只搜索了几次迭代的时候,模型看到的不同图像的数量不够大。然而,由于超级网络只包含跳跃连接,这样的梯度更新的数量已经足以使体系结构参数被过度拟合。这就是几次迭代比一次迭代性能差的原因。在我们搜索了整整一个时代之后,超级网看到了大量不同的图像,这有助于它在测试集上更好地概括。这就是一个纪元表现最好的原因。就我们应该搜索一次迭代还是两次迭代而言,在图3(d)中,我们表明两种选择都很有效。当我们在拓扑搜索之后不搜索算子时,我们给所有剩余的边分配一个固定的算子。因此,我们应该选择哪个运营商成为一个关键问题。图3(e)表明,3 × 3可分离卷积在精度方面确实优于所有其他算子。
我们发现在不同数量的评估时期下,同一架构的测试精度的绝对值和相对排名可能会有所不同;即,一些在600代内表现良好的架构在1200代后表现不佳。图3(l)揭示了在CIFAR10上长期评估后表现良好的架构通常可以在ImageNet上更好地泛化,相关系数为0.7;然而,如图3(k)所示,不能保证那些在有限的评估期内在CIFAR10上工作良好的人也能在ImageNet上占据主导地位,因为这只能证明他们能快速收敛,而不能证明他们能收敛到全局最优。在图3(g)和3(h)中,我们表明一个时期不仅是在CIFAR10上的最佳选择,而且对于在CIFAR100上的仅拓扑搜索也是足够的。此外,随着搜索周期和迭代次数的增加,验证集上损失的Hessian矩阵的最大特征值增加,并且由于模型的泛化能力下降,测试精度通常降低。这种现象在历史上尤为明显,因为经过几次迭代,模型就可以在训练集上已经达到相当的精度。然后,模型在测试集上的性能开始与其泛化能力相关。
表3:不同配置对FTSO的影响“3op”表示最大池3x3,跳过连接和无;“4op”表示:sep conv 3x3,max pool3x3,skip connect,nonem.p . '表示:max pool 3x3“sep3”的意思是:sep conv3x3。'CIF '指的是CIFAR10Topo(skip,1it)'表示在一次迭代中只搜索具有跳过连接的拓扑;“1ep”表示1个纪元;“部分图像网”是指搜索图像网的一部分。
五:对其他任务和搜索空间的概括
如第4节所示,FTSO在不同的搜索空间和节点数下工作良好。理论上,当搜索空间和节点数增加时,FTSO对飞镖的优势可以扩大。这是因为FTSO将计算成本从0(n3)降低到0(N2),并避免了过度拟合。尽管在本文中,我们在可微搜索空间内建立了FTSO,但实际上,第一拓扑第二算子策略并不局限于任何特定的搜索空间或任务。无论搜索空间是离散的还是连续的,我们首先收缩候选算子集,只保留最简单的算子。此后,整个搜索空间的大小在幅度上减小。然后,我们用任何搜索算法搜索最佳拓扑。这样就可以找到有前途的拓扑。然后,我们可以直接给每条边分配一个强大的算子,或者使用梯度来搜索算子。一般直接替换策略精度更高,基于梯度的策略降低了模型复杂度。
六:结论
结论在本文中,我们提出了一种计算效率极高的神经架构搜索方法——FTSO搜索法,它将网络连接存储的搜索时间成本从几天减少到不到0.68秒,同时在ImageNet和CIFAR10上分别实现了1.5%和0.27%的准确率提升。我们的主要想法是将搜索过程分为两个子阶段。在第一阶段,我们只使用简单的操作符搜索网络拓扑。然后在第二阶段,我们修复拓扑,只考虑应该选择哪些算子。我们的策略在理论和实现上都是简洁的,我们有希望的实验结果表明,当前的网络连接存储方法包含太多的冗余,这严重影响了效率,并成为更高精度的障碍。此外,我们的方法不受可微搜索空间的限制,它也可以与现有的NAS方法很好地合作。
附录
附录A.1配置细节我们所有的搜索实验都是在同一个11GB VRAM约束下,在一个RTX2080 I GPU上完成的。对于在CIFAR10上的实验配置,遵循DARTS,我们以单元方式搜索架构,其中每个单元在搜索期间具有四个中间节点和16个初始通道。我们将训练集中的一半图像(25K)用于内核权重更新,另一半用于架构参数更新。在评估时,我们堆叠18个正常电池和两个还原电池以形成整个网络。对于ImageNet上实验的配置,在搜索的时候,我们有两种配置。在第一种配置中,在PC-DARTS之后,我们只从训练集中分别选取10%和2.5%的图像用于内核权重和架构参数的优化;在第二种配置中,由于FTSO巨大的计算成本降低,我们可以用整个ImageNet进行搜索。为了评估,我们堆叠12个正常细胞和两个还原细胞以形成整个网络,并从头开始训练它250个时期。详细配置如表4所示。