分类模型:类别不均衡问题之loss设计

2022-12-20 10:30 900 阅读 ID:613
机器学习算法与自然语言处理
机器学习算法与自然语言处理

1.『前言』

数据类别不均衡是很多场景任务下会遇到的一种问题。比如 NLP 中的命名实体识别 NER,文本中许多都是某一种或者几种类型的实体,比如无需识别的不重要实体;又或者常见的分类任务,大部分数据的标签都是某几类。

而我们又无法直接排除这些很少的类别的数据,因为这些类别也很重要,仍然需要模型去预测这些类别。

2.『数据采样』

有时会从数据层面缓解这种类别不均衡带来的影响,主要是过采样和欠采样。

  • 过采样:对于某些类别数据比较少,对它们进行重复采样,以达到相对平衡,重复采样的时候,有时也会对数据加上一点噪声;
  • 欠采样:对于某些类别数据特别多,只使用部分数据,抛弃一些数据;

过采样可能导致这些类别产生过拟合的现象,而欠采样则容易导致模型的泛化性变差。

另外,比较常用的则是结合 ensemble 方法,则将数据切分为 N 部分,每部分都包含数据少的类别的所有样本和数据多的类别的部分样本,训练 N 个模型,最后进行集成。

缺点是,使用 ensemble 则会提高部署成本和带来性能问题。

3.『损失函数』

如果在损失函数方面下功夫,针对这种类别不均衡的场景设计一种 loss,能够兼顾数据少的类别,这其实是一种更理想的做法,因为不会破坏原数据的分布,并且不会带来性能问题(对训练速度可能有轻微的影响,但不影响推理速度)。

下面,我们就介绍在这方面几种常用的 loss 设计。

4.『Focal Loss』

Focal Loss 是一种专门为类别不均衡设计的loss,在《Focal Loss for Dense Object Detection》这篇论文中被提出来,应用到了目标检测任务的训练中,但其实这是一种无关特定领域的思想,可以应用到任何类别不均衡的数据中。

首先,还是从二分类的cross entropy(CE)loss入手:

为了符号的方便,

 为模型对于 label=1(ground-truth)的类别的预测概率。

4.1 问题分析

下图的蓝色曲线为原生的 CE loss,容易看出来,那些容易分类

的样本也会产生不小的 loss,但这些大量的容易样本的 loss 加起来,会压过那些稀少类别的样本的 loss。

                                                                              ▲ 图1

4.2 CE改进

但是,这种做法只是平衡了正负样本的重要性,无法区分容易(easy)样本和困难(hard)样本,这也是类别不均衡的数据集很容易出现的问题:容易分类的样本贡献了大部分的 loss,并且主导了梯度。

因此,Focal Loss 的主要思想就是让 loss 关注那些困难样本,而降低容易样本的重要性。

5.『GHM(Gradient Harmonizing Mechanism)』

梯度调和机制 Gradient Harmonizing Mechanism 的设计目的也是为了解决不均衡类别的问题而对 loss 函数进行优化,出自《Gradient Harmonized Single-stage Detector》。

5.1 介绍

GHM 同样表述了关于容易样本和困难样本的观点 A:模型从容易分类的样本的到收益很少,模型应该关注那些困难分类的样本,不管它属于哪一种类别,但大量的容易样本加起来的贡献会盖过困难样本,使得训练效益很低;

进一步指出 Focal Loss 的问题,提出不同的观点 B:

1. Focal Loss 存在两个超参数,并且是互相影响,构成许多参数组合,会导致调参需要很多尝试成本;并且,Focal Loss 是一种静态的 loss,那么同一种超参数无法适用于不同的数据分布

2. 有一些特别困难分类的样本,它们很可能是离群点,加入这些样本的训练,会影响模型的稳定性

3. 提出了gradient density(梯度密度)的梯度调和机制,来缓解这种类别不均衡的问题。

下图左展示了上述观点 A,梯度范数 gradient norm 的大小则代表样本的分类难易程度,收益实际即对应为梯度;

下图中和右展示了通过 GHM 的梯度调和之后,容易样本的 gradient norm 会被削弱许多,并且特别困难的样本也会被轻微削弱,分别对应观点 A 和观点 B-2 的解决方案。

5.2 理论

基于这些分析,论文提出了一种梯度调和机制 GHM(Gradient Harmonizing Mechanism),其主要思想是:首先仍然是降权大量容易样本贡献的梯度总和,其次是对于那些特别困难样本即离群点,也应当相对地降权

对于二分类问题,同样的交叉熵 loss 如下:

这里的 g 为 gradient norm,可以用来表示一个样本的分类难易程度以及对在全局梯度中的影响程度,g 越大则分类难度越高。

下图 2 展示了在目标检测模型中 gradient norm 的分布情况,表明了容易样本在梯度中会占主导地位,以及模型无法处理一些特别困难的样本,这些样本的数量甚至超过了中等困难的样本,但模型不应过于关注这些样本,因为它们可以认为是离群点。(对应上述观点 A 和观点 B-2)

                                                                                   ▲ 图2

为了解决这种 gradient norm 的分布问题,论文提出了一种调和手段:Gradient Density

N 为样本数量。

可以看作是梯度上在第 i 个样本周边样本频率的一种正则化:

1. 如果所有样本的梯度是均匀分布的,那么对于每个样本

意味着每个样本都没起到任何改变;

2. 见上图 2,容易样本的频率很高,那么β就会变得很小,起到降低这些样本的权重的效果;并且特别困难样本即离群点的频率会比中等困难的样本频率多,意味着这些离群点的β会相对较小,那么也会相对地轻微降低这些样本的权重;

3. 从第 2 点可以看出,GHM 其实只适用于那些容易样本和特别困难样本的数量比中等困难样本多的场景。

因此,经过 GHM 调和之后的 loss 为:

5.3 计算优化

则,梯度密度的近似函数如下,得到计算复杂度优化的 GHM Loss:

这里怎么理解这种近似思想呢:

5.4 结合EMA

最后,在使用 Unit Region 优化之后,还结合 Exponential moving average(EMA)的思想,让梯度密度更加平滑,减少对极端数据的敏感度:

为在 t 次遍历中,落入第 j 个 Unit Region 的数量;

α即为 EMA 中的 momentum 参数。

5.5 超参数实验

6.『Dice Loss』

Dice Loss 来自《Dice Loss for Data-imbalanced NLP Tasks》这篇论文,阐述在 NLP 的场景中,这种类别数据不均衡的问题也是十分常见,比如机器阅读理解machine reading comprehension(MRC),与上述论文表明的观点大致相同:

  • 负样本数量远超过正样本,导致容易的负样本会主导了模型的训练;
  • 另外,还指出交叉熵其实是准确率(accuracy)导向的,导致了训练和测试的不一致。在训练过程中,每一个样本对目标函数的贡献是相同,但是在测试的时候,像分类任务很重要的指标 F1 score,由于正样本数量很少,每一个正样本就对于 F1 score 的贡献则更多了。

6.1 Dice Coeffificient

dice coeffificient 是一种 F1 导向的统计,用于计算两个集合的相似度:

对应到二分类场景中,A 是模型预测为正样本的样本集合,B 是真实的正样本集合。此时,dice coefficient 其实等同于 F1:

对于每一个样本

它对应 dice coefficient 的为:

但是,显而易见,这样会导致负样本

对目标的贡献为 0。因此,为了避免负样本的作用为 0,让训练更加平滑,在分子和分母中同时加入一个因子 γ:

为了更快地收敛,分母可以为平方的形式,那么 Dice Loss(DL)则变为:

(修改为 1-DSC,目的是让 DSC 最大化变成目标函数最小化,这是 loss 函数常用的转换套路了,并且让 loss 为正数)

另外,以计算 set-level 的 dice coefficient,而不是独立样本的 dice coefficient 加起来,这样可以让模型更加容易学习:

6.2 自调节

上述未经过平滑的 DSC 公式其实是 F1 的 soft 版本,因为对于 F1 score,只存在正判或误判。模型预估通常以 0.5 为边界来判断是否为正样本:

DSC 使用连续的概率 p,而不是使用二分

,这种 gap 对于均衡的数据集不是什么大问题。但是对于大部分为容易的负样本的数据集来说,是存在极端的害处:

  • 容易分类的负样本很容易主导整个训练过程,因为它们的预测概率相对来说更容易接近 0;
  • 同时,模型会变得难以区分困难分类的负样本和正样本,这对于 F1 score 的表现有着很大的负向影响。

为了解决这种问题,DSC 在原来的基础上,给 soft 概率 p 乘上一个衰减因子(1-p):

6.3 实验结果

7.『Label Smoothing』

最后再讲一下标签平滑,它不是针对不均衡类别设计的 loss 优化,但不失为一种提升分类模型泛化能力的有效措施。出自这篇论文《Rethinking the Inception Architecture for Computer Vision》,它是交叉熵 loss 的另外一种正则化形式:Label Smoothing。

7.1 cross-entropy

在 K 分类模型中,第 k 个 label 的预估概率为:

那么,对应的交叉熵 loss 则为:

7.2 存在问题

  1. 它可能会造成过拟合。如果模型学习到了为每个样本的 ground-truth label 赋予完全的概率,那这无法保证泛化性;
  2. 它鼓励最大的 logit 和其他的 logits 差别尽可能大,再加上梯度的边界仅在 -1 到 1,这会降低模型的适应(adapt)能力。

7.3 正则化

基于上述分析,作者提出了一种优化的交叉熵,增加了正则化:label-smoothing regularization

8.『总结』

本文介绍了几种针对类别不均衡的数据集提出的解决思路,主要的观点都是数量很多的类别存在许多容易分类的样本,这些对于模型训练的贡献很小,但由于数据巨大,会主导模型的训练过程。

FocalLoss和DiceLoss思想比较接近,都是为了减少模型对容易样本的关注而进行的loss优化,而GHMLoss除了对容易样本降权,还实现了对特别困难样本的轻微降权,因为特别困难的样本可以认为是离群点。

GHM Loss 仅适用于二分类,而 Focal Loss 和 Dice Loss 很容易扩展到多分类,但实际使用中 Focal Loss对于多分类调参比较困难(每种类别对应的α-balanced,加上 γ,参数组合过于多)。

最后介绍的 Label Smoothing 虽然不是针对类别不均衡的问题,但在分类模型中,其效果往往比原生的交叉熵有些小提升。

代码实现

tensorflow 及 torch 的实现:github:https://github.com/QunBB/DeepLearning/tree/main/Trick/unbalance

免责声明:作者保留权利,不代表本站立场。如想了解更多和作者有关的信息可以查看页面右侧作者信息卡片。
反馈
to-top--btn