PolyLoss | 统一CE Loss与Focal Loss,PolyLoss用1行代码+1个超参完成超车!!!(一)

简介: PolyLoss | 统一CE Loss与Focal Loss,PolyLoss用1行代码+1个超参完成超车!!!(一)

1简介


原则上,损失函数可以是将预测和标签映射到任何(可微)函数。但是,由于损失函数具有庞大的设计空间,导致设计一个良好的损失函数通常是具有挑战性的,而在不同的工作任务和数据集上设计一个通用的损失函数更是具挑战性。

例如,L1/L2 Loss通常用于回归的任务,但很少用于分类任务;对于不平衡的目标检测数据集,Focal loss通常用于缓解Cross-entropy loss的过拟合问题,但它并不能始终应用到其他任务。近年来,许多研究也通过元学习、集成或合成不同的损失来探索新的损失函数。

在本文中,作者提出了PolyLoss:一个新的框架来理解和设计损失函数。

作者认为可以将常用的分类损失函数,如Cross-entropy lossFocal loss,分解为一系列加权多项式基

它们可以被分解为的形式,其中为多项式系数,为目标类标签的预测概率。每个多项式基由相应的多项式系数进行加权,这使PolyLoss能够很容易地调整不同的多项式基。

  • 当时,PolyLoss等价于常用的Cross-entropy loss,但这个系数分配可能不是最优的。

研究表明,为了获得更好的结果,在不同的任务和数据集需要调整多项式系数。由于不可能调整无穷多个的,于是作者便探索具有小自由度的各种策略。作者实验观察到,只需调整单多项式系数,这里表为示,足以实现比Cross-entropy lossFocal loss的更好的性能。


2主要贡献


image.png图1

  1. Insights on common losses:提出了一个统一的损失函数框架,名为PolyLoss,以重新思考和重新设计损失函数。这个框架有助于将Cross-entropy lossFocal loss解释为多损失族的2种特殊情况(通过水平移动多项式系数),这是以前没有被认识到的。这方面的发现促使研究垂直调整多项式系数的新损失函数,如图1所示。
  2. New loss formulation:评估了垂直移动多项式的不同方法,以简化超参数搜索空间。提出了一个简单而有效的Poly-1损失,它只引入了一个超参数和一行代码。
  3. New findings:作者发现Focal loss虽然对许多检测任务有效,但对于不平衡的ImageNet-21K并不是很优秀。作者还发现多项式在训练过程中对梯度有很大的贡献,其系数与预测置信度相关。
  4. Extensive experiments:在不同的任务、模型和数据集上评估了PolyLoss。结果显示PolyLoss持续提高了所有方面的性能。

image.png


3PolyLoss


PolyLoss为理解和改进常用的Cross-entropy lossFocal loss提供了一个框架,如图1所示。它的灵感来自于Cross-entropy lossFocal loss的基于泰勒展开式:

image.png

式中为模型对目标类的预测概率。

3.1 Cross-entropy loss as PolyLoss

使用梯度下降法来优化交叉熵损失需要对Pt进行梯度。在PolyLoss框架中,一个有趣的观察是系数正好抵消多项式基的第次幂。因此,Cross-entropy loss的梯度就是多项式的和:

image.png

梯度展开中的多项式项捕获了对的不同灵敏度。第一个梯度项是1,它提供了一个恒定的梯度,而与的值无关。相反,当时,接近1时,第项被强烈抑制。

3.2 Focal loss as PolyLoss

PolyLoss框架中,Focal loss通过调制因子γ简单地将移动。这相当于水平移动所有的多项式系数的γ。为了从梯度的角度理解Focal loss,取关于的Focal loss梯度:

image.png

对于正的γ,Focal loss的梯度降低了Cross-entropy loss中恒定的梯度项1。正如前段所讨论的,这个恒定梯度项导致模型强调多数类,因为它的梯度只是每个类的示例总数。

通过将所有多项式项的幂移动γ,第1项就变成,被γ抑制,以避免过拟合到(即接近1)多数类。

3.3 与回归和一般形式的联系

PolyLoss框架中表示损失函数提供了与回归的直观联系。对于分类任务,是GT标签的有效概率,多项式基可以表示为;

因此,Cross-entropy lossFocal loss都可以解释为预测到标签的距离的j次幂的加权集合。

因此,交叉熵损失和焦点损失都可以解释为预测和标记到第j次幂之间的距离的加权集合。

然而,在这些损失中有一个基本的问题:回归项前的系数是最优的吗?

一般来说,PolyLoss是[0,1]上的单调递减函数,可以表示为,并提供了一个灵活的框架来调整每个系数。PolyLoss可以推广到非整数j,但为简单起见,本文只关注整数幂()。

相关文章
|
7月前
|
计算机视觉
如何理解focal loss/GIOU(yolo改进损失函数)
如何理解focal loss/GIOU(yolo改进损失函数)
|
7月前
|
机器学习/深度学习 监控 数据可视化
训练损失图(Training Loss Plot)
训练损失图(Training Loss Plot)是一种在机器学习和深度学习过程中用来监控模型训练进度的可视化工具。损失函数是衡量模型预测结果与实际结果之间差距的指标,训练损失图展示了模型在训练过程中,损失值随着训练迭代次数的变化情况。通过观察损失值的变化,我们可以评估模型的拟合效果,调整超参数,以及确定合适的训练停止条件。
1315 5
Focal Loss升级 | E-Focal Loss让Focal Loss动态化,类别极端不平衡也可以轻松解决(二)
Focal Loss升级 | E-Focal Loss让Focal Loss动态化,类别极端不平衡也可以轻松解决(二)
213 0
|
移动开发 数据挖掘 TensorFlow
PolyLoss | 统一CE Loss与Focal Loss,PolyLoss用1行代码+1个超参完成超车!!!(二)
PolyLoss | 统一CE Loss与Focal Loss,PolyLoss用1行代码+1个超参完成超车!!!(二)
258 0
【学习】loss图和accuracy
【学习】loss图和accuracy
417 0
|
机器学习/深度学习 测试技术 PyTorch
Focal Loss升级 | E-Focal Loss让Focal Loss动态化,类别极端不平衡也可以轻松解决(一)
Focal Loss升级 | E-Focal Loss让Focal Loss动态化,类别极端不平衡也可以轻松解决(一)
241 0
|
PyTorch 算法框架/工具 图计算
Pytorch中autograd.Variable.backward的grad_varables参数个人理解浅见
Pytorch中autograd.Variable.backward的grad_varables参数个人理解浅见
138 0
Pytorch中autograd.Variable.backward的grad_varables参数个人理解浅见
|
机器学习/深度学习 人工智能 计算机视觉
Focal Loss详解以及为什么能够提高处理不平衡数据分类的表现
Focal Loss详解以及为什么能够提高处理不平衡数据分类的表现
454 0
Focal Loss详解以及为什么能够提高处理不平衡数据分类的表现
|
机器学习/深度学习
概率视角的Linear Regression
概率视角的Linear Regression
110 0
概率视角的Linear Regression
|
算法 固态存储 计算机视觉
目标检测的Tricks | 【Trick3】IoU loss与focal loss(包含一些变体介绍)
目标检测的Tricks | 【Trick3】IoU loss与focal loss(包含一些变体介绍)
502 0
目标检测的Tricks | 【Trick3】IoU loss与focal loss(包含一些变体介绍)