一、focal loss
对每个类别的loss设置不同的权重,通常是对样本比较少的类别的loss给一个稍大的权重,权重一般由样本数量的比例决定。典型的就是focal loss。
1.正负样本数量不平衡的问题
二分类中,经常用交叉熵作为损失函数:
解决方法:对每一类样本设置一个权重,正样本的权重为α,负样本的权重为1−α,则损失函数可以写为:
2.难易样本数量不平衡的问题
解决方法:给难易样本的loss分别加一个权重,权重设为(1−P)γ,其中P表示模型认为某样本属于正样本的概率,此概率越大,则说明该样本越简单,则导致1−P的值越小,即简单样本的权重越小。损失函数loss可以写为:
focal loss的计算方法:
α正样本的权重,(1−P)γ被称为是正样本中难易样本的调制系数,当P趋近于0时,调制系数趋近于1,对总的loss贡献较大。因此通过控制γ的大小就可以控制模型对难样本的关注程度。但加入了γ后,样本的权重个α其实也会受到影响,所以在多分类中,用focal loss调参的工作量比较大。
(不用刻意在损失函数中区分难样本和简单样本,只对每个类别按样本数设置不同比例的权重。)
二、GHM Loss
Focal Loss 注重了对 hard example 的学习,但不是所有的 hard example 都值得关注,有一些 hard example 很可能是离群点,这种离群点当然是不应该让模型关注的。
GHM (gradient harmonizing mechanism) 是一种梯度调和机制。
GHM Loss 首先规定了一个梯度模长 g:
其中, p是模型预测概率值, y是 ground-truth 的标签值,这里以二分类为例,取值为 0 或 1。可发现, g表示检测的难易程度, g越大则检测难度越大。
三、Dice Loss
Dice Loss 主要来自于 dice coefficient,dice coefficient 是一种用于评估两个样本的相似性的度量函数。
定义:取值范围在 0 到 1 之间,值越大表示越相似。若令 X 是所有模型预测为正的样本的集合,Y 为所有实际上为正类的样本集合,dice coefficient 可重写为:
连续:
当样本为负样本时,y1=0,loss 就为 0 了,需要加一个平滑项。加上一个调节系数: