- 论文:Class-Balanced Loss Based on Effective Number of Samples
1. 概述
(1)现实中经常存在训练样本长尾分布的现象,目前常用的方法包括重采样(re-sampling
)以及基于样本数量的加权(re-weighting
)。但是,我们发现当样本数达到一定量的时候,通过增加新样本带来的收益会消失。
(2)本文提出了一种新的理论框架,通过将每一个样例和一个小的邻域而不是单独的样本点关联,来衡量数据是否存在重叠。将样本的有效数据量定义为样本的体积volume
,可以通过一个简单的公式进行计算。
本文设计了一种基于每种类别有效样本数的加权策略,来重新平衡损失,得到类别平衡的损失函数。
2. 计算有效样本数
(1)随机覆盖的数据采样方法
给定一个类别,定义这个类特征空间的所有可能的数据集合为。假设的体积为并且。定义每一个数据都是的子集并且体积都是单位体积1
,每个数据都有可能和其他数据重叠。考虑随机覆盖数据采样的过程,每个数据(也就是子集)都有可能被采样,最终目的是能够覆盖集合的全部可能。采样的数据越多,对集合的覆盖越好。采样数据的期望体积会随机数据量的增加而增加,最终的边界是。
(2)定义1:样本的有效数据量是样本的期望体积(expected volume)。
为了保证这个问题是可解的,我们假设一个新的采样数据只能通过两种方式和之前采样的数据进行交互:
- 新样本存在于之前采样数据中的可能性为
;
- 新样本在之前采样数据之外的可能性为
。
随着采样数据点的增多,
(3)定义有效样本数为
现在假设
- 上式表明样例的有效数据量是总数
的指数函数,超参数控制随着的增长速度。
(4)通过
- 当
很大时,有效数据量的大小等于样本数,这表明没有数据时重叠的,所以的样例都是唯一的。
- 当
时,则表明所有的数据都只有一个原型,其他数据都是从该原型经过数据增强得到的。
3. 类别平衡损失函数
(1)类别平衡损失用来处理不平衡数据集的问题,方法主要是通过引入一个加权因子,这个因子则和有效样本数成反比。
(2)假设输入样例
- 通常来说,如果没有更多关于数据的信息,那么对每个类别来说很难找到合适的超参
。所以,通常假设N_i = N, ; beta = frac{N-1}{N}$。
(3)为了平衡损失,引入权重因子
(4)对于一个类别为
-
表示训练集中类别为的数量。
4. 如何将平衡项用于3种常见的损失函数
(1)Softmax Cross-Entropy
假设模型的输出为
(2)Sigmoid Cross-Entropy
使用sigmoid函数的多分类假设不同类别之间是互相独立的,其实就是一种OvA
的分类思想,转化为多个二分类问题;对于每一个类别,都是预测属于这个类和不属于这个类的概率。这种损失函数的两个优势
- Sigmoid函数不具有排他性,而在现实世界中,一些类可能和另外的类非常相似,尤其在一些类别数比较多的细粒度分类场景下。
- 由于每个类别被认为是独立的,都有自己的概率值,非常适用于多标签预测的场景。
使用和上面相同的标记,定义
类别平衡的sigmoid cross-entropy
(3)Class-Balanced Focal Loss
FL通过添加一个修正因子来降低已经比较好进行分类的样例的损失,关注比较难分类的样例。假设
类别平衡后的损失为:
- 其实原始的Focal Loss存在
平衡系数,而这里的类别平衡系数则取代了的功能。
5. 参数的选择
(1)Focal Loss中的
[0.5, 1.0, 2.0]
之间进行选择,具体视情况而定;类别平衡系数的超参
[0.999, 0.99, 0.9]
等,值越大,表示有效样本数越接近样本总数。