Zhangzhe's Blog

The projection of my life.

0%

Class-Balanced Loss Based on Effective Number of Samples

URL

https://arxiv.org/pdf/1901.05555.pdf

TL;DR

  • 本文提出一种在 不平衡数据分类 场景使用的 Loss —— Class-Balanced Loss
  • 提出一个理论模型,对每类的 有效样本数量 进行估计,从而对每类设计损失权重
  • 理论可概括为:对某一类的所有样本(样本容量为 n)进行采样,每一次采样,有 p 的概率和之前采样过的样本 重复,有 1-p 的概率不重复,n 越大,冲突可能越大,所以 p 越大
  • 该理论模型简化后可用数学归纳法证明,Class-Balanced Loss 最终化简为包含一个超参 β\beta 的权重系数

Algorithm

常用的不平衡数据处理方法

  • 重采样
    • 对大类欠采样
      • 缺点:学习能力变差
    • 对小类过采样
      • 缺点:过拟合
      • 缺点:训练变慢
    • both
  • 重赋权
    • 以类间样本容量比例直接作为权重
      • 缺点:虽然最为常用,但不科学,因为样本容量的比值不能代替样本中有效样本的比值

有效样本

  • 本文提出一种类中有效样本的计算方式,类中样本容量用 nZ>0n \in \mathbb Z_{>0} 表示,有效样本量用 NZ>0N \in \mathbb Z_{>0} 表示,有效样本的期望用 EnZ>0E_n \in \mathbb Z_{>0} 表示
    En=1βn1β,    β=N1NE_n = \frac{1-\beta^n}{1-\beta},\ \ \ \ \beta=\frac{N-1}{N}
    cbloss1.png
  • 实际使用时,β\beta 为一个超参,取值范围:{0.9, 0.99, 0.999, 0.9999}

实际使用时的损失函数

  • 理论模型只提供一个权重,实际使用时还需要结合其他的分类损失函数,例如 [Softmax Loss(交叉熵), Sigmoid Loss, Focal Loss]

    CB(p,y)=1EnyL(p,y)=1β1βnyL(p,y)CB(p, y) = \frac{1}{E_{n_y}} L(p, y)=\frac{1-\beta}{1-\beta^{n_y}}L(p, y)

    其中,p[0,1]p \in [0, 1] 表示输入样本 x 后模型输出的各类的概率分布,yy 表示样本 xlabelβ\beta 是一个超参数,L(p,y)L(p, y) 是分类常用损失函数

  • class-balanced softmax cross-entropy loss
    CBsoftmax(z,y)=1β1βnylog(exp(zy)j=1Cexp(zj))CB_{softmax}(z, y) = -\frac{1-\beta}{1-\beta^{n_y}}log(\frac{exp(z_y)}{\sum_{j=1}^C exp(z_j)})

  • class-balanced sigmoid cross-entropy loss
    CBsigmoid(z,y)=1β1βnyi=1Clog(11+exp(zit))CB_{sigmoid}(z, y) = -\frac{1-\beta}{1-\beta^{n_y}}\sum_{i=1}^C log(\frac{1}{1+exp(-z_i^t)})

  • class-balanced focal loss
    CBfocal(z,y)=1β1βnyi=1C(1pit)γlog(pit)CB_{focal}(z, y) = -\frac{1-\beta}{1-\beta^{n_y}}\sum_{i=1}^C (1-p_i^t)^\gamma log(p_i^t)
    γ{0.5,1,2}\gamma \in \{0.5, 1, 2\}

Thought

  • 理论被不停简化,条件过于理想化,最后变成一个很简单的公式
  • 和其他损失函数结合后,准确率比较随机

效果

  • 其中 Imbalanced factor=Sample size for largest classSample size for least classImbalanced\ factor = \frac{Sample\ size\ for\ largest\ class}{Sample\ size\ for\ least\ class}
    cbloss2.png
    cbloss3.png
    cbloss4.png
    cbloss5.png