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,但为简单起见,本文只关注整数幂()。

相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
【实操】涨点神器你还不会,快点进来学习Label Smooth
【实操】涨点神器你还不会,快点进来学习Label Smooth
489 1
|
Python
python、十六进制的颜色对照表
英文代码  形像颜色  HEX格式  RGB格式 LightPink 浅粉色 #FFB6C1 255,182,193 Pink 粉红 #FFC0CB 255,192,203 Crimson 猩红 #DC143C 220,20,60 LavenderBlush 脸红的淡紫色 #FFF0F5 255.
8540 0
python、十六进制的颜色对照表
|
机器学习/深度学习 数据可视化 算法框架/工具
Keras中神经网络可视化模块keras.utils.vis_util 的安装
Keras中神经网络可视化模块keras.utils.vis_util 的安装
907 0
|
Kubernetes 负载均衡 网络安全
Kubernetes 网络模型与实践
【8月更文第29天】Kubernetes(K8s)是当今容器编排领域的佼佼者,它提供了一种高效的方式来管理容器化应用的部署、扩展和运行。Kubernetes 的网络模型是其成功的关键因素之一,它支持服务发现、负载均衡和集群内外通信等功能。本文将深入探讨 Kubernetes 的网络模型,并通过实际代码示例来展示服务发现和服务网格的基本概念及其实现。
565 2
|
机器学习/深度学习
损失函数大全Cross Entropy Loss/Weighted Loss/Focal Loss/Dice Soft Loss/Soft IoU Loss
损失函数大全Cross Entropy Loss/Weighted Loss/Focal Loss/Dice Soft Loss/Soft IoU Loss
713 2
|
机器学习/深度学习 计算机视觉
ICML 2024:人物交互图像,现在更懂你的提示词了,北大推出基于语义感知的人物交互图像生成框架
【8月更文挑战第30天】在计算机视觉和机器学习领域,人物交互图像生成一直充满挑战。然而,北京大学团队在ICML 2024上提出的SA-HOI(Semantic-Aware Human Object Interaction)框架带来了新突破。该框架通过评估人物姿态质量和检测交互边界区域,结合去噪与细化技术,显著提升了生成图像的合理性与质量。广泛实验表明,SA-HOI在多样化和细粒度的人物交互类别上表现出色,为该领域提供了新的解决方案。尽管存在数据集质量和计算复杂度等局限,未来仍有很大改进空间和应用潜力。
327 3
|
机器学习/深度学习 存储 算法
持续学习中避免灾难性遗忘的Elastic Weight Consolidation Loss数学原理及代码实现
在本文中,我们将探讨一种方法来解决这个问题,称为Elastic Weight Consolidation。EWC提供了一种很有前途的方法来减轻灾难性遗忘,使神经网络在获得新技能的同时保留先前学习任务的知识。
1088 1
|
机器学习/深度学习 自然语言处理
彻底改变语言模型:全新架构TTT超越Transformer,ML模型代替RNN隐藏状态
【7月更文挑战第25天】近年来,NLP领域取得显著进展但也面临挑战,如长上下文建模与计算效率的平衡。为此,研究人员提出Test-Time Training (TTT) 模型架构。TTT由多机构合作开发,旨在解决长上下文建模难题及提高计算效率。通过将隐藏状态视为可学习更新的模型,TTT能随输入增长提升表示能力;采用自监督学习更新规则确保线性计算复杂度的同时保持高性能。实验显示TTT在多种NLP任务中表现优秀,尤其在长上下文处理方面超越Transformer。尽管如此,TTT仍面临训练资源需求高及自监督学习鲁棒性等挑战。[论文](https://arxiv.org/abs/2407.04620)
437 5
|
机器学习/深度学习 存储 并行计算
深入解析xLSTM:LSTM架构的演进及PyTorch代码实现详解
xLSTM的新闻大家可能前几天都已经看过了,原作者提出更强的xLSTM,可以将LSTM扩展到数十亿参数规模,我们今天就来将其与原始的lstm进行一个详细的对比,然后再使用Pytorch实现一个简单的xLSTM。
701 2
|
机器学习/深度学习 并行计算 PyTorch
【已解决】RuntimeError: CUDA error: device-side assert triggeredCUDA kernel errors might be asynchronous
【已解决】RuntimeError: CUDA error: device-side assert triggeredCUDA kernel errors might be asynchronous
10282 2