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改进 针对类别不均衡,普遍的做法是 -balanced CE。给 CE loss 增加一个权重因子 ,正样本权重因子为 ,负样本为 。
实际使用中,一般设置为类别的逆反频率,即频率低的类别权重应该更大,比如稀少的正样本的 为负样本的频率。或者当作一个超参数。 但是,这种做法只是平衡了正负样本的重要性,无法区分容易(easy)样本和困难(hard)样本,这也是类别不均衡的数据集很容易出现的问题:容易分类的样本贡献了大部分的 loss,并且主导了梯度。 因此,Focal Loss 的主要思想就是让 loss 关注那些困难样本,而降低容易样本的重要性。
如上式,在 CE 的基础增加一个调节因子 。上图 1 可以看出, 越大,容易样本的 loss 贡献越小。 Focal Loss 具有以下两个属性: 1. 当一个样本被错误分类时,且 很小时(即为困难样本),那么调节因子是接近 1 的,loss 则基本不受影响。而相反的,当 ,分类很好的样本(容易样本),调节因子则会偏于 0,loss 贡献变得很小;2. 不同的 参数可以平滑地调整容易样本的重要性降低的比率。当 时,则等同于普通的 CE。而当 变大时,那么调节因子的影响也会同样变大,即容易样本的重要性会降低。 论文在实验中,Focal Loss 还保留上述的权重因子 :
5.3 计算优化 很容易算出,GHM 的计算复杂度是 ,论文通过 Unit Region 的方法来逼近原生的梯度密度,大大降低了计算复杂度。 首先,将 gradient norm 的值域空间 [0,1] 划分为 M 个长度为 的 Unit Region。对于第 j 个 Unit Region: 。 接着,让 等于落在 的样本数量;并且,定义 ,即计算 g 所在的 Unit Region 的索引的函数 则,梯度密度的近似函数如下,得到计算复杂度优化的 GHM Loss: 这里怎么理解这种近似思想呢: 1. 先回忆原生 GHM 的梯度密度计算:g 的梯度密度即 表示落于以 g 为中心,长度为 的中心区域的样本数量,然后除以有效长度进行标准化; 2. 将 gradient norm 划分了 M 个 Unit Region 之后,假如第 i 个样本的 落入第 j 个 Unit Region,那么同样落入该 Unit Regio 的样本可以认为是落于以 为中心的中心区域,并且有效长度为 ,即得到上述的近似梯度密度函数。
5.4 结合EMA 最后,在使用 Unit Region 优化之后,还结合 Exponential moving average(EMA)的思想,让梯度密度更加平滑,减少对极端数据的敏感度:
为在 t 次遍历中,落入第 j 个 Unit Region 的数量; 即为 EMA 中的 momentum 参数。
5.5 超参数实验
Dice Loss
Dice Loss 来自《Dice Loss for Data-imbalanced NLP Tasks》这篇论文,阐述在 NLP 的场景中,这种类别数据不均衡的问题也是十分常见,比如机器阅读理解machine reading comprehension(MRC),与上述论文表明的观点大致相同:
负样本数量远超过正样本,导致容易的负样本会主导了模型的训练;
另外,还指出交叉熵其实是准确率(accuracy)导向的,导致了训练和测试的不一致。在训练过程中,每一个样本对目标函数的贡献是相同,但是在测试的时候,像分类任务很重要的指标 F1 score,由于正样本数量很少,每一个正样本就对于 F1 score 的贡献则更多了。
最后再讲一下标签平滑,它不是针对不均衡类别设计的 loss 优化,但不失为一种提升分类模型泛化能力的有效措施。 出自这篇论文《Rethinking the Inception Architecture for Computer Vision》,它是交叉熵 loss 的另外一种正则化形式:Label Smoothing。