focal loss的提出是在目标检测领域,为了解决难分样本和易分样本不均衡的问题。主要思想就是添加一个一个抑制参数,使得在训练计算损失时,抑制容易分类的样本的权重,从而让模型能够重点学习辨别那些不易区分的样本。是由log loss改进而来的,为了于log loss进行对比,公式如下:
其基本思想就是,对于类别极度不均衡的情况下,如果添加
(
1
−
p
i
)
γ
(1−p_i)^{\gamma}
(1−pi)γ则会使预测概率大的样本(易分样本)得到的loss变小,而预测概率小的样本(难分样本),loss变得大,从而加强对难分样本的关注度。可以改善目标不均衡的现象,对此情况比 binary_crossentropy 要好很多。
目前在图像分割上只是适应于二分类。
详情参考retinanet
有两个参数可调, alpha和gamma.
alpha是控制类别不平衡的.
gamma是控制难易样本的.
alpha越大,recall会越高,precision会越低.
文中alpha取0.25,即正样本要比负样本占比小,这是因为负例易分
-
当alpha增大时,比如说增大到1, 以一个检测的二分类为背景, 这时候focal loss就不会包含负样本的loss了, 想要focal loss最小我只要全预测为正即可, 这时候自然recall就会100%, precision也会降低.
-
当alpha减小,比如减小到0, 这时候focal loss中只有负样本的loss, 那只要网络对所有样本全预测成负的就可以了.这时候recall就变成了0, precision也就100%了.
gamma越大,易分类样本的重要性越低,通常取gamma=2。