深度学习中样布不平衡 | Long tail(长尾)问题如何解决?

什么是Long tail(长尾)问题?

在BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition这篇论文中提到了这个词汇的解释:

解释:少数类(头类)占用大部分数据,而大多数(尾类)只有少量的数据。(自动驾驶中的Corner cases就是属于长尾数据问题的一种)

长尾问题的影响?

举个例子,在一个欺诈识别的案例中,好坏样本的占比是1000:1,而如果我们直接拿这个比例去学习模型的话,因为扔进去模型学习的样本大部分都是好的,就很容易学出一个把所有样本都预测为好的模型,而且这样预测的概率准确率还是非常高的。

模型最终学习的并不是如何分辨好坏,而是学习到了”好 远比 坏的多“这样的先验信息,凭着这个信息把所有样本都判定为“好”就可以了。这样就背离了模型学习去分辨好坏的初衷了。

所以,样本不均衡带来的根本影响是:模型会学习到训练集中样本比例的这种先验性信息,以致于实际预测时就会对多数类别有侧重(可能导致多数类精度更好,而少数类比较差)。

如何解决长尾问题?

1. 样本层面
1.1 采样

        ·欠采样:减少多数类的数量(随机欠采样,NearMiss,ENN),但是当head class和tail class类别样本量悬殊巨大时,用欠采样是不切实际的。

        ·过采样:尽可能多地增加少数类的样本数量(随机过采样或数据增强),可能导致过拟合。

        ·还可以结合两者做混合采样(Smote+ENN)

1.2 数据增强

        ·基于样本变换的数据增强:单样本增强:几何变换、颜色变换、随机裁剪、随机擦除、添加噪声等;多样本增强:组合及转换多个样本,mixup、mosaic等。

        ·基于深度学习的数据增强:利用生成模型(如VAE、GAN)来生成样本,更复杂但生成的样本也更多样。

2. 损失函数层面
2.1 重加权

        主要在训练loss中,给不同的类别的loss设置不同的权重,对tail类别loss设置更大的权重,权重可以设置为样本数量的倒数,或者样本数量平方根的倒数(更平滑一些),这是在class level上调整权重。也可以在sample level上调整权重,困难样本的权重大,简单样本的权重小。

2.2 OHEM

        OHEM(Online Hard Example Mining),即在线难样本挖掘,选择一些hard examples作为训练的样本,针对性地改善模型效果。

2.3 Focal loss

        对标准的交叉熵损失引入系数因子,实现根据预测准确度自适应调整样本对损失的贡献程度。

3. 模型层面
3.1 采样+集成学习

        重复组合少数类样本与抽样的同样数量的多数类样本,训练若干的分类器进行集成学习。

3.2 异常检测

        类别不平衡很极端的情况下(比如少数类只有几十个样本),将分类问题考虑成异常检测(anomaly detection)问题可能会更好。异常检测是通过数据挖掘方法发现与数据集分布不一致的异常数据,也被称为离群点、异常值检测等等。

参考链接:

一文解决样本不均衡(全)

样本不平衡 | 长尾(long-tailed)问题的解决方案 - 知乎

在深度学习中的 long tail (长尾)解释-CSDN博客

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值