Focal Loss:样本不均衡以及样本难易不同

现状

先来回顾一下常用的 BinaryCrossEntropyLoss 公式如下
在这里插入图片描述
不难看出,CE是个“笨学生”。

考前复习的时候,「他不会划重点,对所有知识点 “一视同仁”」。

如果教科书上有100道例题,包括: 90道加减乘除 + 10道 三角函数。CE同学就会吭哧吭哧的“平均用力”反复练习这100道例题,结果可想而知——他会精通那90道个位数加减乘除题目,然后其他题目基本靠蒙。那10道他不会的题,往往还是分值高的压轴题。

解决办法

机智如你,想必已经有办法了 —— 「给他指个方向,别再“平均用力”就好了」

方法一、分科复习

每个【科目】的难度是不同的;你要花 30%的精力在四则运算,70%的精力在三角函数。— 老师告诉CE同学 第一个技巧

对应到公式中,就是针对每个类别赋予不同的权重,即下述 α t \alpha_t αt:
在这里插入图片描述

方法二、刷题战术

每道【题目】的难度是不同的;你要根据以往刷类似题时候的正确率来合理分配精力。

— 老师告诉CE同学 第二个技巧

观察CE中的 p t p_t pt ,它反映了模型对这个样本的识别能力(即 “这个知识点掌握得有多好”);显然,对于 p t p_t pt越大的样本,我们越要打压它对loss的贡献。
FL是这么定义的:
在这里插入图片描述
这里有个超参数 γ \gamma γ; 直观来看, γ \gamma γ越大,打压越重。如下图所示:
在这里插入图片描述
在这里插入图片描述

方法三、综合上述两者

在这里插入图片描述

调参经验

在这里插入图片描述

总结

  • 机器学习分类问题中,各类别样本数差距悬殊是很常见的情况;这会干扰模型效果

  • 通过将CrossEntropyLoss替换为综合版的FocalLoss,可以有效缓解上述问题

  • 具体思路就是引入两个额外的变量来区分对待每个样本
    α t \alpha_t αt根据类别加权
    ( 1 − p t ) γ (1-p_t)^{\gamma} (1pt)γ根据难度加权

  • 代码实现很简单、调参也不复杂,详见上文

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值