【原创】正负例样本失衡及focal loss

2023-10-17 04:20

本文主要是介绍【原创】正负例样本失衡及focal loss,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前段时间在解决分类任务时,发现当正负例比例相差较大时,分类算法更倾向于优化比例较大的类别的loss,最终导致正负例上的正确率有极大悬殊(正例正确率远低于负例)。
这其实是做分类任务时经常遇到的问题,即正负例比例不均衡,解决此类问题的办法除了较常用的over-samping/under-sampling之外,还有一类方法是修改loss函数,使其能更均衡的去学习正负样本。
比较容易想到的方法是直接对正负样本的loss加上不同的权重,比如正样本loss的权重为alpha,负样本的权重为(1 - alpha),在我看来,这种方法本质上和over-sampling/under-sampling没有区别,针对的是所有的正样本或者所有的负样本去调整weight,粒度显得略大,因为有些正样本或者负样本是被正确分类的,它们的loss不应该被放大。
于是,何恺明大神在Focal Loss for Dense Object Detection这篇论文中提出使用focal loss替换分类问题中常用的cross entropy loss,有效的解决了正负例样本失衡问题。
正常的ce loss为:
交叉熵损失
从上式可以看出,正样本的loss为-log(p),即p越小,loss越大,同理,对负样本,p越大,loss越大;但在正负例比例有较大悬殊的时候,使用ce loss模型依然不能很好的学习(如本文开头所言),此时需要去更加强化那些不容易分对的样本的loss,而去弱化那些分类正确的样本,因此一个比较自然的想法就是用残差去对loss做一个进一步的加强或者减弱,于是便有了focal loss(下式为正例loss,负例loss可参考 何恺明大神的「Focal Loss」,如何更好地理解?):
focal loss
focal loss中,(1-Pt)是残差(对负例而言残差就是Pt),gamma是超参数,当残差(1 - Pt)或Pt较大时,说明该样本不容易被正确分类,所以相应的loss做一个(1 - Pt)gamma的加强,乘以一个权重(1 - Pt)gamma,(负例样本的权重为 Ptgamma),这样便能使得模型更加重视不容易分对的那部分样本,一定程度上去平衡类别不均衡的问题。
在我看来focal loss就是在ce loss的基础上增加了一个类似于均方误差(MSE)的loss,只不过这个地方的gamma不是固定的2,用这个类似于均方误差的loss对原本的ce loss做了一个加强或者减弱。
回到本文刚开始提到的正负例准确率悬殊的问题,focal loss是否解决了这个问题呢?答案是肯定的,因为当在loss中多加入(1 - Pt)gamma或者Ptgamma这一项时,模型不再一味的去减小那些容易优化的负例样本的loss,而是去减小那些难以优化的正例的loss,因为这些正例的focal loss远大于那些负例。但是,focal loss本质上并不是去针对正负样本不均衡问题优化的,而是针对正确分类的困难与否优化的,只是正负例比例失衡恰好有这个问题,为了更大程度的去平衡正负例loss,可以在上述focal loss的基础上再对正负例loss加一个不同的权重:
正负例平衡的focal loss


FAQ

  1. 有人可能会问Pt在(0, 1)之间,无论是(1 - Pt)gamma还是Ptgamma都是在(0, 1)之间的,这样对loss永远是在减弱,并没有增强啊?
    其实这里要看的不是绝对的增强或者减弱,因为loss的绝对值本身就没有意义,这里要看的是相对的增强/减弱,如果对容易分错的样本的减弱比不容易分错的样本的减弱要小,则这个loss就是有效的;又因为多项式函数(y = xgamma)是递增函数,所以只要残差(1 - Pt或者Pt)越大,权重就会越大,因此对残差更大的样本减弱得更少,以此达到重视难分样本的目的。
  2. 超参数gamma和alpha的选择?他们跟正负例比例有何关系?
    参考paper中的曲线,gamma越大,loss越陡,对错误分类的样本的权重增强效果就越明显,因此越强调错误分类的样本(或越弱化正确分类的样本),则gamma应该越大,gamma与正负例比例并没有本质上的关系。如果只调整gamma并不能解决正负例准确率失衡的问题,则需要调节alpha的值,正例比例越小,alpha越大。
    Pt与FL loss的关系

参考文献

  • Focal Loss for Dense Object Detection
  • Focal Loss
  • 何恺明大神的「Focal Loss」,如何更好地理解?

这篇关于【原创】正负例样本失衡及focal loss的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/222915

相关文章

JavaScript中使用正则判断一个值是否是数字,包含正负,小数点

使用正则表达式来判断: if(/^[+-]?\d*\.?\d*$/.test(str)){//为数字} 实际情况中可以将+去掉,

医院检验系统LIS源码,LIS系统的定义、功能结构以及样本管理的操作流程

本文将对医院检验系统LIS进行介绍,包括LIS系统的定义、功能结构以及样本管理的操作流程方面。 LIS系统定义 LIS系统(Laboratory Information System)是一种专门为临床检验实验室开发的信息管理系统,其主要功能包括实验室信息管理、样本管理、检验结果管理、质量控制管理、数据分析等。其主要作用是管理医院实验室的各项业务,包括样本采集、检验、结果录入和报告生成等。Li

2024高教社杯全国大学生数学建模竞赛B题原创python代码

以下均为python代码。先给大家看看之前文章的部分思路: 接下来我们将按照题目总体分析-背景分析-各小问分析的形式来 1 总体分析 题目提供了一个电子产品生产的案例,要求参赛者建立数学模型解决企业在生产过程中的一系列决策问题。以下是对题目的总体分析: 问题一需要企业需要从供应商购买零配件,并且需要设计一个抽样检测方案,来决定是否接受供应商提供的零配件。题目要求设计一个能够尽可能减少检测次

PDF样本图册转换为一个二维码,随时扫码打开无需印刷

在这个数字化时代,纸质样本图册已成为过去。如今,一切都变得触手可及,包括我们的PDF样本图册。想象一下,将这些图册转换为一个二维码,让客户随时扫码打开,无需印刷,这将带来多大的便利和环保效益!接下来就让我来教你如何轻松实现PDF样本图册到二维码的转换,让您与时俱进,走在环保科技的前沿吧。 1. 准备好制作工具:FLBOOK在线制作电子杂志平台 2. 转换文档:点击开始

怎样写原创内容才能快速被收录呢?

网站原创文章怎么写才能收录?站长们都知道,文章对SEO的重要性,一篇高质量的原创文章要胜过N篇采集来的文章。那么,我们应该如何根据用户需求写出用户需要的文章呢?下面,曾庆平SEO就为大家讲一下如何写出既符合用户需求,又符合搜索引擎的高质量原创文章。 请牢记,发文章的最终目的是用来解决用户需求而不是一味的满足搜索引擎。请不要为了搜索引擎而刻意的在文章里面大量堆砌关键词,这样做只会让用户感觉文章没

SEO如何提高原创内容输出增量?

对于任何一个网站建设运营而言,我们在一个长周期的运营过程中,在某一个时间点,总会遇到发展瓶颈,比如: 流量停止不前。 百度权重,没有明显变化。 特定关键词排名,长期稳定,不升不降。 这个时候我们就需要思考一个问题,我们该如何推动网站继续前进,是增加品牌影响力,还是持续的拓展更多相关性的栏目,从SEO的角度来讲,我们通常会推荐从横行拓展相关性内容来入手,毕竟这样的运营成本相对是非常低的。

2024全国大学省数学建模竞赛A题-原创参考论文(部分+第一问代码)

一问题重述 1.1 问题背景  "板凳龙",又称"盘龙",是浙闽地区的传统地方民俗文化活动。这种独特的表演艺术形式融合了中国传统龙舞的精髓和地方特色,展现了人们对美好生活的向往和对传统文化的传承。 在板凳龙表演中,人们将少则几十条,多则上百条的板凳首尾相连,形成蜿蜒曲折的"龙"形。这种创新的表演方式不仅展现了民间艺术的智慧,也体现了集体协作的精神。盘龙时,龙头在前领头,龙身和龙尾相随盘旋,整

2024高教社杯全国大学生数学建模竞赛C题原创python代码

2024高教社杯全国大学生数学建模竞赛C题原创python代码 C题题目:农作物的种植策略 思路可以参考我主页之前的文章 以下均为python代码,推荐用anaconda中的notebook当作编译环境 from gurobipy import Modelimport pandas as pdimport gurobipy as gpfrom gurobipy import GR

论文速读|利用局部性提高机器人操作的样本效率

项目地址:SGRv2  本文提出了SGRv2,一个系统的视觉运动政策框架,通过整合动作局部性提高了样本效率。在多个模拟和真实世界环境中进行的广泛评估表明,SGRv2在数据有限的情况下表现出色,并且在不同的控制模式下保持一致的性能。未来的工作可以进一步探索将扩散政策与局部性框架结合,以增强在现实世界中的性能,并扩展泛化测试的范围。 论文初读:

在目标检测模型中使用正样本和负样本组成的损失函数。

文章目录 背景例子说明1. **样本和标签分配**2. **计算损失函数**3. **组合损失函数** 总结 背景 在目标检测模型中,损失函数通常包含两个主要部分: 分类损失(Classification Loss):用于评估模型对目标类别的预测能力。定位损失(Localization Loss):用于评估模型对目标位置的预测准确性。 例子说明 假设我们有一个目标检测模