AutoLoss-Zero:Searching Loss Functions from Scratch for Generic Tasks

AutoLoss-Zero: Searching Loss Functions from Scratch for Generic Tasks

在这里插入图片描述

论文链接:https://arxiv.org/abs/2103.14026

项目链接:https://github.com/cpsxhao(没找到)

Abstract

深度网络中各种组件的自动化设计已经取得了重大进展。然而,对于具有各种评估指标的通用任务的损失函数的自动设计仍然没有得到充分的研究。先前手工制作损失函数的工作严重依赖于人类的专业知识,这限制了它们的可扩展性。同时,现有的搜索损失函数的努力主要集中在特定任务和特定指标上,采用特定任务的启发式。这些工作是否可以扩展到一般任务是未经验证和值得怀疑的。在本文中,我们提出了AutoLoss-Zero,这是第一个用于从头开始搜索一般任务损失函数的通用框架。具体来说,我们设计了一个仅由原始数学运算符组成的基本搜索空间,以适应异构任务和评估指标。采用进化算法的一种变体来发现初等搜索空间中的损失函数。为了提高搜索效率,提出了一种适用于一般任务的抗损失机制和梯度等价检查策略。在各种计算机视觉任务上的大量实验表明,我们的搜索损失函数与现有的损失函数相当或优于现有的损失函数,它们可以很好地泛化到不同的数据集和网络。

1. Introduction

近年来,深度学习领域的AutoML取得了令人振奋的进展[64,37,32,31,38,12]。许多组件的自动设计已经被探索,范围从架构(例如,神经架构[46]和规范化激活操作[31])到学习策略(例如,数据增强策略[12],退出模式[38]和训练超参数[13])。然而,为了自动化整个深度学习过程,一个重要的组成部分正在研究中,即通用任务的损失函数的自动设计。

损失函数是深度网络训练中不可缺少的部分。在各种任务中,包括语义分割[7,61]、目标检测[15,47]、实例分割[19,3]和姿态估计[52],交叉熵(cross-entropy, CE)和L1/L2损失分别是分类和回归的默认选择。由于默认损失函数通常是特定评估指标的近似值,因此代理损失与最终评估指标之间通常存在不一致。例如,对于目标检测中的边界盒定位,广泛使用L1损耗,而IoU度量是标准的评价度量[59]。在语义分割[27]中也观察到类似的差异,其中一些指标衡量整个图像的准确性,而其他指标则更多地关注分割边界。网络训练和评估之间的不一致导致了性能下降的次优解。

对于不同的评价指标,已经提出了许多手工制作的损失函数。由于大多数期望的指标是不可微的,不能直接用作训练目标,许多现有的工作[49,57,29,25,4,40,15]通过仔细分析具体的评估指标来设计CE和L1/L2损失的可微变体。另一系列作品[2,34,41,59,48,62,39]基于具体评价指标的数学表达式手工灵巧代理损失。尽管这些手工制作的损失函数在其目标指标上有所改进,但它们严重依赖于特定场景的专业知识和仔细分析,这限制了它们的可扩展性。

在本文中,我们的目标是自动化设计一般任务的损失函数的过程。虽然有一些关于损失函数搜索的先驱作品[26,54,33,27],但它们都局限于特定的任务和特定的评估指标,使用特定任务的启发式。这种任务特定的启发式是否可以应用于一般任务还没有得到验证和质疑。由于各种任务和评估指标的异质性,搜索一般性任务的损失函数更具挑战性。搜索空间应由基本原语运算符组成,以适应这种异质性,搜索算法应足够高效,以便为给定任务和评价指标找到基本原语的最佳组合。同时,搜索算法不应涉及特定于任务的启发式。

本文提出了第一个适用于不同任务的各种评估指标的通用损失函数搜索框架,称为AutoLoss-Zero。我们只使用原始的数学运算符来构建搜索空间,以获得较高的多样性和表现力。采用进化算法的一种变体,以最少的人工经验从零开始发现高质量的损失函数。具体来说,AutoLoss-Zero将损失函数表述为仅由原始数学算子组成的计算图(见表1)。计算图是从头随机构建的,并根据其在目标评价指标上的表现进行演化。在搜索算法中,为了提高搜索效率,我们提出了一种损失拒绝机制,该机制可以有效地过滤掉没有希望的候选损失函数,从而大大提高了搜索速度。提出了一种梯度等价检查策略,以避免等价损失函数的重复求值。损失拒绝机制和梯度等价校验策略一般适用于各种任务和度量。

我们在各种计算机视觉任务上验证了我们的框架,包括语义分割、目标检测、实例分割和姿态估计。在大规模数据集(如COCO[30]、Pascal VOC[14]和cityscape[10])上的大量实验表明,搜索的损失与现有的手工制作和专门搜索的损失函数相当或优于。研究表明,我们的搜索损失函数可以有效地推广到不同的网络和数据集。

我们的主要贡献可以总结如下:

  • AutoLoss-Zero是第一个通用的AutoML框架,可以用最少的人工专业知识从头开始搜索通用任务的损失函数。在各种计算机视觉任务中证明了该方法的有效性。
  • 开发了一种新的损失拒绝机制,以有效地过滤掉没有希望的损失函数。为了避免重复评估,还开发了梯度等效检查策略。这些技术极大地提高了搜索效率,并且通常适用于各种任务和指标。
  • 搜索到的损失函数本身就是贡献,因为它们可以在具有竞争性能的不同模型和数据集之间转移。

2. Related Work

手工制作的损失函数的普遍评价指标已经研究了许多工作。以前的大部分工作基于标准交叉熵损失和L1/L2损失开发了损失函数变体。对于分类,[49,57,29,25]通过引入不同的样本权重来缓解样本的不平衡。[4,40]建议增加边界像素的损失权重,以提供更精确的边界。对于回归,提出了平滑l1损失[15],以提高稳定性和收敛性。另一项研究[2,34,41,59,48,62,63,39]通过手工制作指标的可微扩展或替代指标作为损失函数,包括分割IoU [2, 41], F1分数[34],边界框IoU[59, 48, 62, 63]和平均精度[39],来处理损失函数与各种评估指标之间的不一致。尽管这些手工制作的损失在不同的场景下是成功的,但它们在很大程度上依赖于仔细的设计和分析特定指标属性的专业知识。相比之下,我们提出了一个自动损耗设计框架,通常适用于不同的任务和指标。

对不可微评价指标的直接优化问题也进行了研究。对于结构支持向量机[53],[22,60,42]提出了直接优化理想指标的非梯度方法。[18,51,35]应用损失增强推理从指标的期望推导梯度。然而,其计算复杂度较高,需要针对不同的指标专门设计高效的算法。策略梯度[44,43,56,1,50]也被用于直接优化不可微指标。然而,这些方法存在以下问题:1)复杂的动作空间,需要特定任务的近似;2)梯度估计的高方差和客观不稳定性[55]。最近,[5,36]采用错误驱动学习进行目标检测,但仅限于特定场景。尽管这些直接优化方法减轻了训练目标和评估指标之间的不一致问题,但它们需要对目标指标进行特定的分析和设计。

通用任务的自动学习一直是机器学习研究的热点。最近的研究包括自动搜索神经结构(NAS)[64,37,32]、归一化激活操作[31]、退出模式[38]、数据增强[12]和训练超参数[13]。大多数现有工作旨在专门构建基于专家设计的运算符 [64、37、32] 的架构,或在固定公式 [38、12、13] 中搜索特定的超参数。我们的工作与AutoML-Zero[45]和EvoNorm[31]有着相似的理念,它们使用进化算法从原始数学运算中搜索ML算法或规范化激活操作。然而,对于损失函数,搜索空间的设计是完全不同的,并且有一些独特的属性可以用来进行有效的搜索。我们引入了1)具有特定初始化和突变操作的损失函数的有效搜索空间;2)采用损失拒绝机制和梯度等价校验策略来提高搜索算法的效率。

损失函数搜索近年来也引起了研究人员的兴趣。所有先驱者的工作[26,54,33,27]都局限于特定任务和特定指标,并采用特定任务的启发式方法。具体来说,[26,54]搜索人脸识别的最佳损失。搜索的损失函数是交叉熵损失的现有手工变体的最优组合。由于得到的目标本质上是现有损失函数的积分,它不能很好地解决交叉熵损失与许多目标指标之间的不一致。最近,[27]提出用参数化函数代替度量中的逻辑运算来搜索损失函数进行语义分割。然而,这种参数化不能很容易地扩展到一般度量,例如目标检测中的mAP,其中匹配和排序过程难以参数化。另一个密切相关的工作是[33],它搜索损失函数以进行目标检测。与我们的方法类似,[33]也将损失函数表述为原语算子的组合。然而,[33]从专门用于目标检测的性能良好的手工损失函数初始化搜索,并单独搜索一个损失分支,将另一个损失分支固定为初始化。此外,[33]专门为目标检测设计了损失拒绝机制,不能应用于其他任务。相比之下,我们的方法可以从随机初始化同时搜索多个损失分支,而无需从任何人为设计的损失函数开始。我们的方法没有针对特定任务或指标的专门设计,因此适用于一般任务。

3. Method

给定一个任务(如语义分割和目标检测)和相应的评价指标(如mIoU和mAP), AutoLoss-Zero旨在从头开始自动搜索合适的损失函数来训练神经网络。提出了一个通用的搜索空间,其中每个损失函数表示为一个计算图。该图将网络预测和ground truths作为输入,并将其转换为最终损失值。在人类专业知识最少的情况下,只有原始的数学运算(见表1)被用作中间计算节点,以适应不同任务和指标之间的高度多样性。采用一种高效的进化算法来搜索给定任务和度量的损失函数。为了实现进化,定义了有效的随机初始化和突变操作。为了提高搜索效率,提出了一种新的抗损失机制和梯度等效检查策略,适用于一般任务。

3.1. 搜索空间

大多数AutoML方法的搜索空间[64,37,32,31,38,12]是专门为特定目的而设计的,不适合损失函数。在损失函数搜索中,[27]提出了一个专门用于语义分割的损失函数搜索空间,该空间不能扩展到一般任务。在[26,54]中,搜索空间只是现有损失函数的简单组合,无法形成新的损失函数。[33]的搜索空间也是基元的,这与我们的搜索空间最相似。然而,[33]的原语是目标检测特定任务的约束集。在本小节中,我们设计了一个适用于一般任务和评估指标的损失函数的一般搜索空间。

AutoLoss-Zero寻求搜索合适的损失函数用于训练最大化给定评价度量 ξ \xi ξ的网络。损失函数 L ( y ^ , y ; N ω ) L(\hat{y}, y;N_\omega) L(y^,y;Nω)定义在网络预测 y ^ \hat{y} y^及其ground-truth训练目标 y y y上,其中 N ω N_\omega Nω是用 ω \omega ω参数化的网络。搜索目标可以表述为嵌套优化,
max ⁡ L f ( L ; ξ ) = ξ ( N ω ∗ ( L ) ; S e v a l ) , s.t. ω ∗ ( L ) = arg ⁡ min ⁡ ω E ( y ^ , y ) ∈ S w a n t [ L ( y ^ , y ; N ω ) ] , (1,2) \begin{array}{ccc}\max\limits_L&f(L;\xi)=\xi\left(\mathcal{N}_{\omega^*(L)};\mathcal{S}_{\mathrm{eval}}\right),\\ \text{s.t.}&\quad\omega^*(L)=\arg\min\limits_\omega\mathbb{E}_{(\hat{y},y)\in\mathcal{S}_{\mathrm{want}}}\left[L(\hat{y},y;\mathcal{N}_\omega)\right],\end{array} \tag{1,2} Lmaxs.t.f(L;ξ)=ξ(Nω(L);Seval),ω(L)=argωminE(y^,y)Swant[L(y^,y;Nω)],(1,2)
其中 f ( L ; ξ ) f (L;\xi) f(L;ξ)是给定度量 ξ \xi ξ下损失函数 L L L的评价分数, ω ∗ ( L ) \omega^∗(L) ω(L)是用 L L L训练的网络参数。 E [ ⋅ ] \mathbb{E}[·] E[]是数学期望。 S t r a i n S_{train} Strain S v a l S_{val} Sval分别是搜索过程中使用的训练集和评估集。网络预测 y ^ \hat{y} y^与其训练目标 y y y具有相同的形状(N, C, H, W)。对于每个张量,我们分别用N、C、H、W表示它的批大小、通道大小、宽度和高度。

损失函数表示。损失函数L表示为计算图 G \mathcal{G} G,计算图是一棵有根树,其中叶节点是输入(即网络预测和训练目标),根节点是输出。中间计算节点是从一组原始数学运算(见表1)中选择的,这些运算将输入转换为最终的损失值,进一步汇总以形成最终损失值
L ( y ^ , y ) = 1 N H W ∑ n c h w o n c h w . (3) L(\hat{y},y)=\dfrac{1}{NHW}\sum_{nchw}o_{nchw}. \tag{3} L(y^,y)=NHW1nchwonchw.(3)
在这里,我们没有在通道维度之间进行归一化,遵循交叉熵损失的常见做法。

由于某些任务可能有多个损失分支(例如,目标检测中的分类和回归分支),我们将每个分支的损失表示为单个计算图,并将它们的损失值相加作为最终损失。对于具有M个分支的损失,给定预测 { y ^ 1 , y ^ 2 , … , y ^ M } \{\hat{y}_1, \hat{y}_2,…,\hat{y}_M\} { y^1,y^2,,y^M}和它们的真值训练目标 { y 1 , y 2 , … , y M } \{y_1, y_2,…, y_M\} { y1,y2yM},最终损失函数表示为
L ( y ^ , y ) = ∑ i = 1 M L i ( y ^ i , y i ) (4) L(\hat{y},y)=\sum_{i=1}^{M}L_i(\hat{y}^i,y^i) \tag{4} L(y^,y)=i=1MLi(y^i,yi)(4)
基元运算符。表1总结了搜索空间中使用的基本运算符集H,包括元素运算符和聚合运算符,它们支持跨空间和通道维度的信息交换。每个聚合运算符都是一个映射,它用聚合的值替换输入张量的元素。所有的原始算子都保留了输入张量的形状,以保证计算的有效性。

在这里插入图片描述

3.2. 搜索算法

受AutoML最近应用的启发[45,31],采用了一种进化算法的变体来搜索合适的损失函数。在现有的损失函数搜索工作中[26,54,27,33],也采用了强化学习或进化算法的变体。然而,设计了[26,54,27,33]中的搜索方法用于在特定任务和特定指标中搜索,具有特定于任务的启发式。这种启发式是否可以应用于一般任务是未经验证和值得怀疑的。在这里,AutoLoss-Zero用最少的人工经验从随机初始化中搜索通用任务的损失函数。该方法没有针对特定任务或指标的专门设计,广泛适用于一般任务。

图1展示了AutoLoss-Zero的搜索pipeline。初始化时随机生成K个损失函数(默认K = 20),形成初始总体。每次进化随机选择种群的T比率(默认T = 5%),并选择评价分数最高的作为亲代,即锦标赛选择[16]。亲本通过精心设计的突变操作来产生后代。在[31,45]之后,只保留最新的P损失函数(默认P = 2500)。

在这里插入图片描述

针对搜索空间非常稀疏且存在大量不确定损失函数的情况,提出了一种新的损失拒绝机制,以有效滤除与给定评价指标不负相关的损失函数。在搜索过程中,将重复单个损失函数的初始化/突变过程,直到得到的损失函数能够通过损失拒绝机制。

为了进一步提高搜索效率,提出了一种梯度等价检查策略,避免了对数学等价损失函数的重新评估。与其他AutoML工作类似[31,45],使用轻量级代理任务来减少评估损失函数的计算成本,这将在本小节的最后讨论。

损失函数的随机初始化。每个初始损失函数的计算图是随机生成的。图2给出了损失函数生成的过程。从一个只有根(即输出节点)的图开始,每个节点将从基本操作符集H中随机抽取一个或两个操作符(见表1),并作为子节点附加到图中。根节点有一个子节点。对于每个计算节点,子节点的数量由其算子数决定。

在这里插入图片描述

当一个计算节点到达目标深度D(默认D = 3)时,它随机选择输入张量(s)作为它的子节点。输入张量是计算图的叶节点。每个随机生成的计算图的深度为D + 1,从根到叶节点的每条路径上都有D个计算节点。

变异。变异过程受到[45]的启发,但是候选变异操作是专门为我们的搜索空间设计的。图3给出了候选变异操作,定义为:

  • 插入(Insertion)。在随机选择的非根节点和它的父节点之间插入一个从H中随机抽样的算子。如果操作符的值是2,它就会随机选择一个输入作为附加子。
  • 删除(Deletion)。随机选择并删除中间计算节点。对于被删除的节点,它的一个子节点被随机选择成为其父节点的新子节点。
  • 替换(Replacement)。从H中随机抽取一个算子来替换随机选择的非根节点。如果非根节点的子节点大于操作符的元数,则保留与元数相同的子节点的随机子集作为操作符的子节点。否则,它将随机选择输入作为附加的子节点。

在这里插入图片描述

为了产生后代,给定的计算图通过三个连续的步骤进行处理:

  1. 以10%的概率直接复制图。(直接复制父代个体)
  2. 如果不执行复制,则以50%的概率随机重新初始化整个计算图。(重新随机初始化)
  3. 如果不进行重新初始化,则依次从{插入、删除、替换}中均匀取样进行两次变异操作。

损失函数拒绝机制。我们的搜索空间是高度灵活的,其中仅使用原始操作来构造损失函数。与[31,45,33]类似,这种灵活性导致了一个大而稀疏的搜索空间。大多数候选损失函数导致的网络性能并不比随机猜测好。在损失函数搜索中,为了提高搜索效率,[33]设计了一种损失拒绝机制,在训练网络之前过滤掉没有希望的损失函数。然而,它是专门为目标检测而设计的,不能直接应用于一般任务。在这里,我们提出了一种新的损失拒绝机制,它通常适用于各种任务和指标。

受最小化适当的损失函数应该对应于最大化给定的评估度量这一事实的启发,我们为一般任务开发了一种有效的损失抑制协议。给定训练集 S t r a i n S_{train} Strain中的 B {B} B个随机样本(默认为B = 5)和一个随机初始化的网络 N ω 0 N_{\omega_0} Nω0,我们将网络预测和相应的训练目标记录为 { ( y ^ b , y b ) } b = 1 B \{(\hat{y}_b, y_b)\}^B_{b=1} {(y^b,yb)}b=1B。为了有效地估计给定评价度量 ξ \xi ξ与候选损失函数 L L L之间的相关性,相关分数 g ( L ; ξ ) g(L;\xi) g(L;ξ)计算为
g ( L ; ξ ) = 1 B ∑ b = 1 B ξ ( y ^ b ∗ ( L ) , y b ) − ξ ( y ^ b , y b ) s.t. y ^ b ∗ ( L ) = arg ⁡ min ⁡ y ^ b   L ( y ^ b , y b ) , (5,6) \begin{array}{c}g(L;\xi)=\dfrac{1}{B}\sum_{b=1}^B\xi\left(\hat y_b^*(L),y_b\right)-\xi\left(\hat y_b,y_b\right)\\ \text{s.t.}\quad\hat y_b^*(L)=\arg\min_{\hat y_b}\ L(\hat y_b,y_b),\end{array} \tag{5,6} g(L;ξ)=B1b=1Bξ(y^b(L),yb)ξ(y^b,yb)s.t.y^b(L)=argminy^b L(y^b,yb),(5,6)
其中, y ^ b ∗ ( L ) \hat{y} ^∗_b (L) y^b(L)是用损失函数 L L L优化的网络预测。 g ( L ; ξ ) g(L;\xi) g(L;ξ)表示最小化损失函数 L L L对应于最大化给定的评价度量 ξ \xi ξ。否则,若 g ( L ; ξ ) g(L;\xi) g(L;ξ)小于阈值 η \eta η,则认为损失函数 L L L是没有希望的,应予以拒绝。

在这里,为了加快拒绝过程,直接将损失函数优化应用到网络预测中,而不是网络参数 ω ω ω。由于省去了网络计算,因此拒绝过程非常高效。对于单个GPU,所提出的损失拒绝机制可以达到每分钟500 ~ 1000个损失函数的吞吐量。在搜索中,单个损失函数的初始化/变异过程会重复进行,直到最终的损失函数能够通过损失拒绝机制。

梯度等价性检测。为了避免重新评估数学上等价的损失函数,提出了一种梯度等价检测策略。对于每个损失函数L,我们计算其梯度范数w.r.t.损失抑制协议中使用的网络预测为 { ∥ ∂ L / ∂ y ^ b ∥ 2 } b = 1 B \{\|\partial L/\partial\hat{y}_b\|_2\}_{b=1}^{B} { L/y^b2}b=1B。如果对于所有B个样本,两个损失函数在两个有效数字内具有相同的梯度范数,则认为它们相等,并且重用之前的评价指标得分。

Proxy Task。损失函数的评估需要网络训练,这在搜索过程中花费的时间最多。与其他AutoML工作类似[31,45],为了加速搜索过程,在损失函数评估中使用了用于网络训练的轻量级代理任务。具体而言,采用更少的训练迭代,更小的模型和下采样图像(详见第4节和附录A)。我们通过停止无效损失值(即NaN和Inf值)的网络训练来进一步提高效率。

4. Experiments

我们在不同的计算机视觉任务上评估了AutoLoss-Zero,包括语义分割(第4.1节),目标检测(第4.2节)、实例分割(第4.3节)和姿态估计(第4.4节)。AutoLoss-Zero的搜索效率在4.5节中进行了细化。

实现细节。对于进化算法,种群初始化为K = 20个随机生成的损失函数,并限制为最近的P = 2500个损失函数。锦标赛选择[16]的比率设为T =当前人口的5%。在随机初始化和突变过程中,表1中所有算子的采样概率是相同的。计算图的初始深度为D = 3。对于损失抑制方案和梯度等效检查策略,从训练集 S t r a i n S_{train} Strain中随机选择B = 5个样本。在4个NVIDIA V100 gpu上进行了搜索和再训练实验。更多细节见附录A。

4.1. 语义分割

设置。语义分割涉及将图像中的每个像素分类到特定的类中。我们的实验使用PASCAL VOC 2012[14]和额外的注释[17]。目标评价指标包括平均IoU (mIoU)、频率加权IoU (FWIoU)、全局精度(gAcc)、平均精度(mAcc)、边界IoU (BIoU)[24]和边界F1评分(BF1)[11]。前四个指标衡量整体分割精度,另外两个指标评估边界精度。在搜索过程中,我们使用DeepLabv3+[8]与ResNet50[20]作为网络。在[27]之后,我们通过将输入图像降采样到128×128的分辨率来简化代理任务,并将训练计划减少到3个epoch(正常训练计划的1/10)。在搜索过程结束后,我们以ResNet-101[20]为主干对分割网络进行了30个epoch的重新训练。输入图像分辨率为512×512。重新训练设置与[8]相同,只是使用了搜索损失函数。更多细节见附录A.1。

结果。表2将我们搜索的损失与广泛使用的交叉熵损失、其他特定度量的手工损失函数以及ASL[27]搜索的替代损失进行了比较。请注意,ASL仅限于为语义分割设计的特定搜索空间,不能简单地扩展到处理通用指标。结果表明,我们的搜索损失始终优于手动设计的损失,并且在大多数目标指标上与ASL的搜索损失相当或更好。仅对于BIoU度量,我们的搜索损失略低于ASL,但仍然比手工制作的损失好得多。附录B给出了发现的损失函数的公式,表明非线性操作之间的中间聚合(例如Max-Pooling3×3和Meannhw)可能对mAcc、BIoU和BF1等指标有潜在的好处。

在这里插入图片描述

**搜索函数的泛化。**为了验证搜索损失的泛化能力,我们在不同的数据集和网络上进行了重新训练实验,使用CE损失和最初使用ResNet50[20]在PASCAL VOC[14]上搜索DeepLabv3+[8]的损失。由于计算资源有限,我们只比较mIoU和BF1指标。表3总结了使用DeepLabv3+ / PSPNet[61]和ResNet-50 / ResNet-101作为网络的PASCAL VOC和Cityscapes[10]的结果。结果表明,搜索损失函数在不同数据集之间具有良好的泛化性,可应用于各种语义分割网络。

在这里插入图片描述

4.2. 目标检测

设置。目标检测是检测属于特定类的实例的边界框和类别的任务。为了评估我们的算法,我们在广泛使用的COCO数据集[30]上进行了实验。目标评价指标是平均精度(mAP)。我们使用Faster R-CNN[47]、ResNet-50[20]和FPN[28]作为检测网络。有4个损失分支,分别是RPN[47]子网和Fast R-CNN[15]子网的分类和回归分支。我们从头开始同时寻找4个分支的损失函数。在[48]之后,我们使用预测框和真值框之间的交集、并集和封闭区域作为回归损失输入。在搜索过程中,我们使用1/4的COCO数据作为代理任务来训练网络。我们通过只使用FPN的最后三个特征层进一步简化了网络,并将检测头的通道减少了一半。在搜索过程之后,我们用搜索到的损失函数重新训练检测网络。重训练超参数与MMDetection[6]的默认设置相同。更多细节见附录A.2。

结果。表4将我们搜索到的损失函数与手工制作的损失函数和[33]搜索到的函数进行了比较。通过对Fast R-CNN[15]子网的2个分支和全部4个分支的搜索,验证了该方法的有效性。结果表明,我们的搜索损失与现有的手工和搜索损失函数相当。请注意,[33]专门为目标检测设计了搜索空间和策略,并使用手工制作的损失函数初始化其搜索过程,而AutoLoss-Zero是一个从头开始搜索损失函数的通用框架。所发现的损失函数的公式见附录B。搜索的边界框回归损失函数与GIoULoss[48]有相似的表达式,证实了手工制作损失函数的有效性。

在这里插入图片描述

搜索函数的泛化。我们通过表5验证了搜索损失函数的泛化能力。损失最初是用ResNet-50[20]在COCO[30]上搜索的,并用于具有不同主干(即ResNet-101)和不同数据集(即PASCAL VOC[14])的训练网络。结果表明,我们的搜索损失函数可以很好地推广到不同的目标检测网络和数据集。

在这里插入图片描述

4.3. 实例分割

设置。实例分割是检测实例的分割掩码和类别的任务。我们还对COCO[30]进行了实验,除了目标度量是在掩模上定义IoU的mAP。使用ResNet-50[20]和FPN[28]的Mask R-CNN[19]用作网络。我们同时搜索所有5个损失分支。代理任务与目标检测任务相同。我们使用MMDetection的默认超参数[6]来重新训练具有搜索损失函数的网络。更多细节见附录A.3。

结果。表6(a)总结了结果。AutoLoss Zero从头开始搜索的损失函数与现有的手动设计的损失函数不相上下。发现的损失函数如附录B所示。

在这里插入图片描述

4.4. 姿态估计

设置。姿势估计是定位人类关键点的任务。实验是在COCO[30]上进行的。目标评估度量是关键点mAP,它与目标检测中的mAP非常相似,其中对象关键点相似性(OKS)用于替代边界框IoU的作用。我们使用[58]和Resnet-50[20]作为网络。根据[9]中的实践,使用[58]提供的人员检测结果。在搜索过程中,我们将网络训练4个时期作为代理任务。在搜索过程之后,我们使用MMPose[9]的默认训练设置,用搜索到的损失函数重新训练网络。更多细节见附录A.4。

结果。表6(b)将我们搜索的损失函数的结果与广泛使用的均方误差(MSE)损失进行了比较。从随机初始化的损失函数开始,我们搜索的损失函数略好于MSE损失,证明了AutoLoss Zero的有效性。附录B给出了所发现的损失函数的公式。搜索到的函数学习正则化项以惩罚过大的预测值。

4.5. 搜索效率

我们讨论了AutoLoss-Zero在使用mIoU度量进行语义分割和使用mAP度量进行目标检测方面的搜索效率。从随机搜索开始,我们依次添加AutoLoss-Zero的每个组件,以验证其有效性。图4显示了结果。

在这里插入图片描述

所提出的损失拒绝机制大大提高了两项任务的搜索效率,梯度等效检测策略也很有帮助。对于只包含单个损失分支的语义分割,尽管进化效率低下,但它也可以发现适当的损失。对于具有4个丢失分支的目标检测,搜索空间的稀疏性呈指数级增加给搜索带来了很大的困难。因此在没有损失拒绝机制的情况下,在合理的时间内不能发现得分大于零的损失函数。表7进一步显示了AutoLoss-Zero在48小时内可以探索的损失函数的数量。可以探索超过106个损失函数,这确保了AutoLoss-Zero可以在合理的时间内探索巨大而稀疏的搜索空间。

在这里插入图片描述

5. Conclusion

AutoLoss-Zero是第一个用于从零开始搜索一般任务的损失函数的通用框架。搜索空间仅由基本的基元运算符组成。采用进化算法的一种变体进行搜索,其中开发了损失函数拒绝机制和梯度等价性检测策略来提高搜索效率。AutoLoss- Zero可以在各种任务中发现与现有损失函数相当或优于现有损失函数的损失函数,只需最少的人力专业知识。

附录

A. Implementation Details
A.1. 语义分割
A.2. 目标检测
A.3. 实例分割
A.4. 姿态估计
B. Formulas of the Discovered Loss Functions
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43790925/article/details/130395227