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

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

4理解多项式系数的影响


在前面的谈论中建立了PolyLoss框架,并展示了Cross-entropy lossFocal loss简单地对应于不同的多项式系数,其中Focal loss就可以表达为水平移动了多项式系数的Cross-entropy loss

这里要深入研究了垂直调整多项式系数对于训练可能的影响。具体来说,作者探索了3种分配多项式系数的不同策略:

  • 去掉高阶项
  • 调整多个靠前多项式系数
  • 调整第1个多项式系数

image.png

作者发现,调整第1个多项式系数(Poly-1)便可以最大的增益,而且仅仅需要很小的代码更改和超参数调整。

4.1 :回顾高阶多项式项的删除

已有研究表明,降低高阶多项式和调整前置多项式可以提高模型的鲁棒性和性能。作者采用相同的损失公式,并在ImageNet-1K上比较它们与基线Cross-entropy loss的性能。

image.png

如图2a所示,需要求和超过600个多项式项才能匹配Cross-entropy loss的精度。值得注意的是,去除高阶多项式不能简单地解释为调整学习率。为了验证这一点,图2b比较了在不同的截止条件下不同学习率下的性能:无论从初始值0.1增加或减少学习率,准确率都会变差

为了理解为什么高阶项很重要,作者对Cross-entropy loss中去除前N个多项式项后的结果进行了求和:

定理1:对于任何小的ζ>0,δ>0,如果N>ζ,那么对于任何p∈[δ,1],都有|R_N(p)|<ζ和|R'_N(p)|<ζ。

因此,从损失和损失导数[δ,1]的角度来看,需要取一个大的N来确保尽可能地接近。对于固定ζ,当δ接近0时,N迅速增大。作者的实验结果与定理一致。

高阶(j>N+1)多项式在训练的早期阶段发挥重要作用,此时通常接近于零。例如,当时,根据公式,第500项的梯度系数为,这是相当大的。与前面的工作不同,本文作者的实验结果表明,不能轻易地减少高阶多项式

PolyLoss框架中,丢弃高阶多项式等价于将所有高阶(j>N+1)多项式系数垂直推到0。

4.2 :扰动重要的多项式系数

在本文中提出了在PolyLoss框架中设计一个新的损失函数的替代方法,其中调整了每个多项式的系数。一般来说,有无穷多个多项式系数需要调节。因此,对最一般损失进行优化是不可行的:

image.png

第4.1小节已经表明,在训练中需要数百个多项式来很好地完成诸如ImageNet-1K分类等任务。如果天真地将方程中的无限和截断到前几百项,那么对这么多多项式的调优系数仍然会带来一个非常大的搜索空间。此外,综合调整许多系数也不会优于Cross-entropy loss

为了解决这一问题,作者提出扰动交叉熵损失中的重要的多项式系数(前N项),同时保持其余部分不变。将所提出的损失公式表示为,其中N表示将被调整的重要系数(前N项)的数量。

image.png

这里,用来替代第个Cross-entropy loss项的系数,其中是扰动项。这使得可以精确地定位第1个N个多项式,而不需要担心无限多个高阶(j>N+1)系数。

表3显示了的性能优于Cross-entropy loss的。

作者还探索了在N=1~3的中对j的N维网格搜索和贪婪网格搜索,发现简单地调整第1个多项式的系数(N=1)便可以获得更好的分类精度。

4.3 :简单而有效

如前一节所示,作者发现调整第1个多项式项会带来最显著的增益。在本节中,进一步简化了Poly-N公式,并重点计算了Poly-1,其中只修改了Cross-entropy loss中的第1个多项式系数。

作者还研究了不同第1项缩放对精度的影响,并观察到增加第1个多项式系数可以提高ResNet-50的精度,如图3a所示。

这一结果表明,Cross-entropy loss在多项式系数值上是次优的,增加第1个多项式系数可以得到一致的改善。

图3b显示了在训练的大部分时间内,多项式贡献了Cross-entropy梯度的一半以上,这突出了第1个多项式项与无限多项的其他项相比的重要性。

因此,在本文的其余部分中,都采用了的形式,并主要关注于调整重要前几项多项式系数。从方程中可以明显看出,它只通过一行代码来修改了原始的损失实现(在Cross-entropy loss的基础上添加一个项)。

注意,所有训练超参数都针对Cross-entropy loss进行了优化。即便如此,对Poly-1公式中的第1个多项式系数进行简单的网格搜索可以显著提高分类精度。作者还发现对LPoly-1的其他超参数进行优化还可以获得更高的精度。

4.4 PolyLoss的Tensorflow实现

1、PolyLoss-CE

def poly1_cross_entropy(logits, labels, epsilon=1.0):
    # pt, CE, and Poly1 have shape [batch].
    pt = tf.reduce_sum(labels * tf.nn.softmax(logits), axis=-1)
    CE = tf.nn.softmax_cross_entropy_with_logits(labels, logits)
    Poly1 = CE + epsilon * (1 - pt)
    return Poly1

2、PolyLoss-Focal Loss

def poly1_focal_loss(logits, labels, epsilon=1.0, gamma=2.0):
    # p, pt, FL, and Poly1 have shape [batch, num of classes].
    p = tf.math.sigmoid(logits)
    pt = labels * p + (1 - labels) * (1 - p)
    FL = focal_loss(pt, gamma)
    Poly1 = FL + epsilon * tf.math.pow(1 - pt, gamma + 1)
    return Poly1


5实验


5.1 图像分类

image.png

image.png

5.2 目标检测

image.png

5.3 3D目标检测


6参考文献


[1].POLYLOSS: A POLYNOMIAL EXPANSION PERSPECTIVE OF CLASSIFICATION LOSS FUNCTIONS


7推荐阅读


NAS-ViT | 超低FLOPs与Params实现50FPS的CPU推理,精度却超越ResNet50!!!

超越 Swin、ConvNeXt | Facebook提出Neighborhood Attention Transformer

CVPR2022 Oral | CosFace、ArcFace的大统一升级,AdaFace解决低质量图像人脸识

相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
【实操】涨点神器你还不会,快点进来学习Label Smooth
【实操】涨点神器你还不会,快点进来学习Label Smooth
489 1
|
存储 搜索推荐 数据挖掘
使用selenium库模拟浏览器行为,获取网页的cookie值
使用selenium库模拟浏览器行为,获取网页的cookie值
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
305 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
Cloud Native 安全 应用服务中间件
云原生网关哪家强:Sealos 网关血泪史
云原生网关哪家强:Sealos 网关血泪史
763 91
|
机器学习/深度学习 编解码
【论文笔记】图像修复MPRNet:Multi-Stage Progressive Image Restoration 含代码解析2
【论文笔记】图像修复MPRNet:Multi-Stage Progressive Image Restoration 含代码解析
655 2
|
机器学习/深度学习 测试技术 网络架构
【YOLOv8改进】MSCA: 多尺度卷积注意力 (论文笔记+引入代码).md
SegNeXt是提出的一种新的卷积网络架构,专注于语义分割任务,它证明了卷积注意力在编码上下文信息上优于自注意力机制。该模型通过结合深度卷积、多分支深度卷积和1x1逐点卷积实现高效性能提升。在多个基准测试中,SegNeXt超越了现有最佳方法,如在Pascal VOC 2012上达到90.6%的mIoU,参数量仅为EfficientNet-L2 w/ NAS-FPN的1/10。此外,它在ADE20K数据集上的mIoU平均提高了2.0%,同时保持相同的计算量。YOLOv8中引入了名为MSCAAttention的模块,以利用这种多尺度卷积注意力机制。更多详情和配置可参考相关链接。
|
计算机视觉
PolyLoss | 统一CE Loss与Focal Loss,PolyLoss用1行代码+1个超参完成超车!!!(一)
PolyLoss | 统一CE Loss与Focal Loss,PolyLoss用1行代码+1个超参完成超车!!!(一)
457 0
|
机器学习/深度学习 数据采集 自然语言处理
24 LLM错误代码补全:机器学习顶会NeurIPS‘23 智能体评估:自行构建数据集Buggy-HumanEval、Buggy-FixEval+错误代码补全+修复模型【网安AIGC专题11.22】
24 LLM错误代码补全:机器学习顶会NeurIPS‘23 智能体评估:自行构建数据集Buggy-HumanEval、Buggy-FixEval+错误代码补全+修复模型【网安AIGC专题11.22】
734 0
|
网络虚拟化
在torch_geometric.datasets中使用Planetoid手动导入Core数据集及发生相关错误解决方案
在torch_geometric.datasets中使用Planetoid手动导入Core数据集及发生相关错误解决方案
1210 1
在torch_geometric.datasets中使用Planetoid手动导入Core数据集及发生相关错误解决方案
|
计算机视觉 机器学习/深度学习 编解码
【轻量化网络系列(4)】ShuffleNetV1论文超详细解读(翻译 +学习笔记+代码实现)
【轻量化网络系列(4)】ShuffleNetV1论文超详细解读(翻译 +学习笔记+代码实现)
1014 0
【轻量化网络系列(4)】ShuffleNetV1论文超详细解读(翻译 +学习笔记+代码实现)