如果解决长尾数据(样本不均衡)

最近突然高产,苦逼的秋招开始了,哭哭
有几种已经常用的方法:

  1. 过采样和重采样
  2. 每个Batch对每类样本设置比例,保证在一个Batch里是相对均衡的

以上这些的缺点很明显:对于大样本采样过少,会导致某张图片只训练了一次,这样使得大样本训练不好,导致整体的正确率都会下降,并且小样本会过拟合。

  1. focal loss(多用于检测中二分类,不是严格意义上的长尾数据)
    这里介绍一下focal loss,他的目的在于通过减少易分类样本的权重,从而使得模型在训练时更专注于难分类的样本,他是在CE loss上做的修改。
    在这里插入图片描述假设一个二分类,样本x1属于类别1的pt=0.9,样本x2属于类别1的pt=0.6,显然前者更可能是类别1,假设γ=1,那么对于pt=0.9,调制系数则为0.1;对于pt=0.6,调制系数则为0.4,这个调制系数就是这个样本对loss的贡献程度,也就是权重,所以难分的样本(pt=0.6)的权重更大。Figure1中γ=0的蓝色曲线就是标准的交叉熵损失。
    在这里插入图片描述
    一般而言当 γ γ γ增加的时候,a需要减小一点(实验中 γ γ γ=2,a=0.25的效果最好)
    但是这里有坑一定要多注意: focal loss多用于检测,在正样本和负样本比例1:1000的情况下比较有效,对于一般的样本不均衡其实效果不大,对于 easy sample dominant有作用,这两个问题并不等价。用这个loss预测出得概率都会比较低一点。若 γ γ γ过大时,可以理解其实对小样本过于over fit,这样效果也不好,所以这是为什么在机器学习里,对于小样本尽可能使用插值法构建新样本,也不会用小样本反复训练。
  2. loss reweight 一篇新出的CVPR,目前实验表示有效:Class-Balanced Loss Based on Effective Number of Samples

下面来介绍这篇文章
在这里插入图片描述
如果对loss不加约束的话,大样本数据占主导,影响小样本,如果加约束的话,则会大大压缩大样本数据的训练,所以要找到一个中和的约束方法。这个模型想要可以区别major class和minor class,他的操作是在loss里面添加了一个和有效样本数量成反比的类平衡加权项。论文有两点贡献:

  1. 提供一种可以学习有效样本数量的方案来设计模型
  2. 提供了如何在sigmoid CE loss,softmax CE loss,focal loss上进行修改,并且通过实验验证提升

他引申出每个类都存在一个容量为 N N N的特征空间 S S S,那么每一群数量为 n n n的样例都存在一个有效样本数量 E n E_n En,手推了一下
在这里插入图片描述
在这里插入图片描述
En的渐近性质表明,当N较大时,有效样本数与样本数N相同。在这种情况下,我们认为唯一原型数N较大,因此没有数据重叠,每个样本都是唯一的。在另一个极端࿰

  • 17
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值