【论文笔记_目标检测_2022】POLYLOSS: A POLYNOMIAL EXPANSION PERSPECTIVE OF CLASSIFICATION LOSS FUNCTIONS

请添加图片描述

多元损失:分类损失函数的多项式展开观点

摘要

交叉熵损失和焦点损失是为分类问题训练深度神经网络时最常见的选择。然而,一般来说,一个好的损失函数可以采取更加灵活的形式,并且应该针对不同的任务和数据集进行定制。受如何通过泰勒展开来近似函数的启发,我们提出了一个简单的框架,名为PolyLoss,以将损失函数视为多项式函数的线性组合来进行设计。我们的PolyLoss允许根据目标任务和数据集轻松调整不同多项式基的重要性,同时自然地将前述交叉熵损失和焦点损失作为特例。大量的实验结果表明,PolyLoss中的最优选择确实取决于任务和数据集。简单地通过引入一个额外的超参数并添加一行代码,我们的Poly-1公式在2D图像分类、实例分割、对象检测和3D对象检测任务上优于交叉熵损失和焦点损失,有时是大幅度的。

1.介绍

损失函数在训练神经网络中很重要。原则上,损失函数可以是将预测和标签映射到标量的任何(可微分)函数。因此,由于其较大的设计空间,设计一个好的损失函数通常具有挑战性,而设计一个跨不同任务和数据集工作的通用损失函数更具挑战性:例如,L1 / L2损失通常用于回归任务,但很少用于分类任务;焦点损失通常用于缓解不平衡对象检测数据集的交叉熵损失的过拟合问题(Lin等人,2017),但它并未显示出对其他任务的一贯帮助。最近的许多工作也通过元学习、集成或合成不同的损失来探索新的损失函数(Hajiabadi等人,2017;徐等,2018;冈萨雷斯&米库拉宁,2020ba;李等,2019)。

在本文中,我们提出了PolyLoss:一种理解和设计损失函数的新框架。我们的关键见解是将常用的分类损失函数,如交叉熵损失和焦点损失,分解成一系列加权多项式基。它们以请添加图片描述的形式分解,其中αj ∈ R+是多项式系数,Pt是目标类标签的预测概率。每个多项式基(1 Pt)j由相应的多项式系数αj加权,因此我们可以针对不同应用轻松调整不同基的重要性。当所有j的αj = 1/j时,我们的PolyLoss变得等同于常用的交叉熵损耗,但这种系数分配可能不是最佳的。

请添加图片描述
表1: PolyLoss在各种模型和任务上优于交叉熵和焦点损失。结果是最简单的Poly-1,它只有一个超参数。在ImageNet上(Deng等人,2009),我们的PolyLoss改进了最近的EfficientNetV2的预训练和微调(Tan & Le,2021);在COCO上(林等,2014),PolyLoss改进了Mask-RCNN的2D检测和分割AR(何等,2017);在Waymo开放数据集(WOD)(孙等,2020)上,PolyLoss改进了广泛使用的点柱(郎等,2019)和最近的范围稀疏网(RSN)(孙等,2021)的3D检测AP。详情见表4、5、7。

我们的研究表明,为了获得更好的结果,有必要针对不同的任务和数据集调整多项式系数αj。由于不可能调整无限数量的αj,我们探索了自由度较小的各种策略。也许令人惊讶的是,我们观察到,简单地调整主多项式的单个多项式系数(我们将其表示为LPoly-1)就足以实现对常用的交叉熵损失和焦点损失的显著改善。总的来说,我们的贡献可以概括为:
对常见损失的见解:我们提出了一个统一的框架,命名为PolyLoss,以重新思考和重新设计损失函数。这个框架有助于解释交叉熵损失和焦损失是PolyLoss家族的两个特例(通过水平移动多项式系数),这是以前没有认识到的。这一新发现促使我们研究垂直调整多项式系数的新损失函数,如图1所示
新的损失公式:我们评估了垂直操作多项式系数的不同方法,以简化超参数搜索空间。我们提出了一个简单有效的Poly-1损失公式,它只引入了一个超参数和一行代码
新发现:我们发现焦损失虽然对许多检测任务有效,但对不平衡的ImageNet-21K来说不是最佳的。我们发现前导多项式在训练期间对梯度的大部分有贡献,并且其系数与预测置信度Pt相关。此外,我们提供了一个直观的解释,说明如何利用这种相关性来设计适合不平衡数据集的良好多边形
广泛的实验:我们在不同的任务、模型和数据集上评估我们的PolyLoss。结果显示,PolyLoss在所有方面都不断提高性能,如表1所示,其中包括最先进的分类器EfficientNetV2和检测器RSN。

2.相关工作

交叉熵损失用于流行和当前最先进的感知任务模型,如分类、检测和语义分割(Tan & Le,2021;何等,2017;Zoph等人,2020;陶等,2020)。提出了各种损失来改善交叉熵损失(林等,2017;法&邓,2018;崔等,2019;赵等,2021)。与以前的工作不同,本文的目标是为系统地设计更好的分类损失函数提供统一的框架

类别不平衡的损失。训练检测模型,尤其是单级检测器的loss是困难的。常见的方法,如hard样本挖掘和重新加权,是为了解决类不平衡的问题(宋,1996;维奥拉&琼斯,2001;Felzenszwalb等人,2010年;Shrivastava等人,2016年;刘等,2016;布洛等人,2017)。作为这些方法中的一种,焦点损失旨在通过关注硬示例来缓解类别不平衡问题,并用于训练最先进的2D和3D检测器(Lin等人,2017;谭等,2020;杜等,2020;石等,2020;孙等,2021)。在我们的工作中,我们发现焦点损失对于不平衡的ImageNet-21K来说是次优的。使用PolyLoss框架,我们发现了一个更好的损失函数,它执行与焦点损失相反的角色。我们进一步直观地理解了为什么使用PolyLoss框架为不同的不平衡数据集设计不同的损失函数非常重要。

针对噪声标签的鲁棒性损失。另一个研究方向是设计对标签噪声鲁棒的损失函数(Ghosh等人,2015;2017;张&萨本库,2018;王等,2019;Oksuz等人,2020;梅农等人,2019)。一种常用的方法是将诸如平均绝对误差(MAE)的噪声鲁棒损失函数结合到交叉熵损失中。特别地,泰勒交叉熵损失被提议通过在(1-Pt)j多项式基中扩展交叉熵损失来统一MAE和交叉熵损失(冯等人,2020)。通过截断高阶多项式,他们显示截断的交叉熵损失函数更接近于MAE,其对于具有合成标签噪声的数据集上的标签噪声更鲁棒。相比之下,我们的PolyLoss提供了一个更通用的框架,通过操纵多项式系数来设计不同数据集的损失函数,这包括放弃冯等人(2020)提出的高阶多项式。我们在4.1小节中的实验表明,在干净的ImageNet数据集上,冯等人(2020)提出的损失比交叉熵损失表现得更差。

学习到的损失函数。最近的几项工作证明了通过梯度下降或元学习在训练期间学习损失函数(Hajiabadi等人,2017;徐等,2018;冈萨雷斯&米库拉宁,2020a李等,2019;2020).值得注意的是,TaylorGLO利用CMA-ES来优化训练期间损失函数和学习率计划的多变量Taylor参数化(Hansen & Ostermeier,1996;Gonzalez & Miikkulainen,2020b)。由于搜索空间的尺度与多项式的阶有关,本文证明了使用三阶参数化(8个参数),学习损失函数调度在10类分类问题上优于交叉熵损失。另一方面,我们的论文(图2a)显示,对于1000类分类任务,需要数百个多项式。这导致了非常大的搜索空间。我们提出的Poly-1公式减轻了大搜索空间的挑战,并且不依赖于高级黑盒优化算法。相反,我们展示了在一个超参数上的简单网格搜索可以导致我们研究的所有任务的显著改进。

请添加图片描述
图1:交叉熵损耗、聚焦损耗和多损耗的统一视图。poly loss Σ j = 1 [ αj(1-pt)j ]是一个更通用的框架,其中Pt代表目标类的预测概率。左图:Polyloss更灵活:它可以比交叉熵损失(黑色)更陡(深红色),也可以比焦点损失(绿色)更平(浅红色)。右图:以(1-Pt)j为基的不同损失函数的多项式系数,其中j ∈ Z+。黑色虚线表示多项式系数的趋势。在PolyLoss框架中,聚焦损耗只能水平移动多项式系数(绿色箭头),见等式2,而提议的PolyLoss框架更通用,它还允许对每个多项式项的多项式系数进行垂直调整(红色箭头)。

3.PolyLoss

PolyLoss为理解和改进常用的交叉熵损失和聚焦损失提供了一个框架,如图1所示。其灵感来自于交叉熵损耗(等式1)和聚焦损耗(等式2)在(1-pt)j基础上的泰勒展开式:
请添加图片描述
其中Pt是目标真实类的模型预测概率。

交叉熵损失作为多元损失使用梯度下降法来优化交叉熵损失需要采用相对于Pt的梯度。在PolyLoss框架中,一个有趣的观察结果是,系数1/j正好抵消多项式基的第j次幂,参见等式1。因此,交叉熵损失的梯度就是多项式(1-Pt)j之和,如公式3所示。
请添加图片描述
梯度展开式中的多项式项捕捉了相对于Pt的不同灵敏度。前导梯度项是1,它提供了一个恒定的梯度,而与Pt的值无关。相反,当j远大于1,当Pt接近1时,第j个梯度项被强烈抑制。

PolyLoss中的聚焦损失。在PolyLoss框架(等式2)中,很明显,聚焦损耗只是将幂次j移动了调制因子γ。这相当于将所有多项式系数水平移位γ,如图1所示。为了从梯度的角度理解聚焦损失,我们采用聚焦损失相对于Pt的梯度(等式2):
请添加图片描述
对于正γ,聚焦损失的梯度降低了交叉熵损失中的恒定领先梯度项1,见等式3。正如上一段所讨论的,这个常数梯度项导致模型强调多数类,因为它的梯度只是每个类的示例总数。通过将所有多项式项的幂移动γ,第一项变成(1-Pt)γ,它被γ的幂抑制,以避免过度拟合到已经有把握的(意味着Pt接近1)多数类。更多详情见第12节。

请添加图片描述
表2:比较PolyLoss框架中的不同损失。在先前的工作中提出的丢弃高阶多项式截断了所有高阶(N + 1 → ∞)多项式项。我们提出了Poly-N损失,它扰动了前N个多项式系数。Poly-1是最终的损耗公式,它进一步简化了Poly-N,只需要在一个超参数上进行简单的网格搜索。与交叉熵损失相比的差异用红色突出显示。

与回归和一般形式的联系。与回归的联系和在PolyLoss框架中表示损失函数的一般形式提供了与回归的直观联系。对于分类任务,其中y = 1是真实标签的有效概率,多项式基(1-pt)j可以表示为(y-pt)j。因此,交叉熵损失和焦点损失都可以解释为预测和标签之间距离的第j次幂的加权集合。然而,这些损失中的一个基本问题是:回归项前面的系数是最优的吗?

一般来说,PolyLoss是[0,1]上的单调递减函数,可以表示为请添加图片描述,并提供了一个灵活的框架来调整每个系数。PolyLoss可以推广到非整数j,但为了简单起见,本文只关注整数幂(j ∈ Z+)。在下一节中,我们将研究通过操纵αj在PolyLoss框架中设计更好损失函数的几种策略。

4.了解多项式系数的影响

在上一节中,我们建立了PolyLoss框架,并表明交叉熵损失和聚焦损失简单地对应于不同的多项式系数,其中聚焦损失水平移动交叉熵损失的多项式系数。

在本节中,我们提出了最终损耗公式Poly-1。我们深入研究了如何垂直调整多项式系数,如图1所示,可能会影响训练。具体来说,我们探索了三种不同的策略来分配多项式系数:丢弃高阶项;调整多个前导多项式系数;以及调整表2中总结的第一多项式系数。我们发现调整第一多项式系数(Poly-1公式)导致最大增益,同时需要最小的代码变化和超参数调谐。

在这些探索中,我们实验了1000类ImageNet(邓等,2009)分类,我们将其缩写为ImageNet-1K,以区别于包含21K个类的完整版本,我们使用ResNet-50(何等人,2016年)及其训练超参数,无需修改。
4.1 L-Drop:再谈丢弃高次多项式项
前期工作(冯等,2020;Gonzalez & Miikkulainen,2020b)已经表明,丢弃高阶多项式并调整前导多项式可以提高模型的鲁棒性和性能。我们采用与Feng等人(2020年)相同的损失公式请添加图片描述,并在ImageNet-1K上将它们的性能与基线交叉熵损失进行比较。如图2a所示,我们需要对600多项多项式求和,以匹配交叉熵损失的精度。值得注意的是,去除高阶多项式不能简单地解释为调整学习速率。为了验证这一点,图2b比较了不同学习率和各种截止值的性能:无论我们从初始值0.1开始增加或减少学习率,准确性都会恶化。第9节显示了额外的超参数调整。

请添加图片描述
(a)将交叉熵损失中多项式的无穷和截断为N会降低精度。
(b)调整LDrop的学习速率(默认为0.1)并不能提高分类精度。
图2:在ImageNet-1K上训练ResNet-50需要数百个多项式项才能重现与交叉熵损失相同的精度。

为了理解为什么高阶项很重要,我们考虑从交叉熵损失中去除前N个多项式项后的残差和:请添加图片描述
理论1.请添加图片描述

因此,从[δ,1]上的损失和损失导数的角度来看,取大的N是必要的,以确保LDrop一致地接近LCE。对于固定的ζ,随着δ趋近于0,N迅速增长。我们的实验结果与理论相符。高阶(j > N + 1)多项式在训练的早期阶段起着重要作用,此时Pt通常接近于零。例如,当Pt~0.001时,根据等式3,第500项的梯度的系数是0.999499≈0.6,这是相当大的。与前面提到的工作不同,我们的结果表明,我们不能通过排除高阶多项式来轻易减少多项式系数αj的数量。

丢弃高阶多项式相当于在PolyLoss框架中将所有高阶(j > N +1)多项式系数αj垂直推至零。由于简单地将系数设置为零对于训练ImageNet-1K来说是次优的,因此在下面的部分中,我们将研究如何在PolyLoss框架中将多项式系数设置为零之外对其进行操作。特别是,我们的目标是提出一个简单有效的损失函数,需要最小的调整。

4.2 LPOLY-N:扰动前导多项式系数

在本文中,我们提出了一种在PolyLoss框架中设计新损失函数的替代方法,其中我们调整每个多项式的系数。一般来说,有无穷多个多项式系数αj需要调整。因此,优化最一般的损失是不可行的:
请添加图片描述
前一节(第4.1小节)已经表明,在训练中需要数百个多项式来很好地完成诸如ImageNet-1K分类的任务。如果我们天真地将等式5中的无穷和截断为前几百项,那么为如此多的多项式调整系数仍然会导致非常大的搜索空间。此外,共同调整许多系数也不会优于交叉熵损失,详见第10节。

为了应对这一挑战,我们建议扰动交叉熵损失中的主要多项式系数,同时保持其余部分不变。我们将建议的损耗公式表示为Poly-N,其中N代表将被调谐的前导系数的数量。
请添加图片描述

这里我们用1/j +εj代替交叉熵损失1/j中的第j个多项式系数,其中请添加图片描述是扰动项。这使我们能够精确定位前N个多项式,而无需担心无限多的高阶(j > N + 1)系数,如等式5所示。

表3:在ImageNet-1K上,LPoly-N的性能优于交叉熵损失。
请添加图片描述

请添加图片描述
(a)PolyLoss系列Lpoly-1 =- log(Pt)+ε1(1-Pt),其中ε1 ∈ {−1, 0, 1, .。。, 8}.
(b)第一个多项式相对于其余(无限多个)多项式的梯度百分比。
图3:第一个多项式对于在ImageNet1K上训练ResNet-50起着重要的作用。(a)增加第一多项式项的系数(ε1 > 0)持续提高ResNet50预测精度。红色虚线表示使用交叉熵损失时的精确度。绘制了三次运行的平均值和标准偏差。(b)在训练步骤的最后65%,第一个多项式(1-Pt)贡献了超过一半的交叉熵梯度,这突出了调整第一个多项式的重要性。红色虚线表示交叉。

表3显示LPoly-N优于基线交叉熵损失精度。我们探索n维网格搜索和贪婪网格搜索εj直到N = 3,并且发现简单地调整第一多项式(N = 1)的系数导致更好的分类精度。执行2D网格搜索(N = 2)可以进一步提高精度。然而,与仅调整第一个多项式(+0.4)相比,额外的增益很小(+0.1)。

4.3 LPoly-N的样本和有效性
如前一节所示,我们发现调整第一个多项式项可以获得最显著的增益。在本节中,我们进一步简化Poly-N公式,并重点评估Poly-1,其中仅修改了交叉熵损失中的第一个多项式系数。
请添加图片描述
我们研究了不同的第一项缩放对精度的影响,并观察到增加第一多项式系数可以系统地提高ResNet-50精度,如图3a所示。该结果表明,交叉熵损失在多项式系数值方面是次优的,并且增加第一多项式系数导致一致的改善,这与其他训练技术相当(第11节)。

图3b显示了在训练期间的大部分时间里,前导多项式对交叉熵梯度的贡献超过一半,这突出了第一个多项式项(1-Pt)相对于其他无数项的重要性。因此,在本文的剩余部分,我们采用LPoly-1的形式,并且主要集中于调整前导多项式系数。从等式7可以明显看出,它仅通过一行代码修改了原始的损耗实现(在交叉熵损失之上增加一个 ε1(1-Pt))

注意,所有训练超参数都针对交叉熵损失进行了优化。即使如此,对Poly-1公式中的第一多项式系数的简单网格搜索显著增加了分类精度。我们发现优化LPoly-1的其他超参数会导致更高的精度,并在第8节中显示更多细节。

5.实验结果

在本节中,我们将我们的PolyLoss与各种任务、模型和数据集上常用的交叉熵损失和焦点损失进行比较。对于下面的实验,我们采用公共存储库中的默认训练超参数,而不进行任何调整。然而,Poly-1公式以简单的网格搜索为代价,导致了相对于违约损失函数的持续优势。

6.结论

在本文中,我们提出了PolyLoss框架,它为分类问题提供了一个统一的通用损失函数。我们认识到,在多项式展开下,与交叉熵损失相比,焦点损失是多项式系数的水平移动。这种新的见解激励我们去探索另一个维度,即垂直修改多项式系数。

我们的PolyLoss框架提供了通过调整多项式系数来改变损失函数形状的灵活方法。在这个框架中,我们提出了一个简单有效的Poly-1公式。通过仅仅用一个额外的超参数简单地调整前导多项式系数的系数ε1,我们展示了我们的简单Poly-1改进了跨多个任务和数据集的各种模型。我们希望Poly-1公式的简单性(一行额外的代码)和有效性将导致在分类的更多应用中被采用,而不是我们试图探索的那些。

更重要的是,我们的工作强调了常见损失函数的局限性,简单的修改甚至可以改善现有的模型。我们希望这些发现将鼓励探索和反思损失函数设计,超越常用的交叉熵和焦点损失,以及最简单的Poly-1损失在这项工作中提出。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值