Focal Loss损失函数理解

Focal Loss是在Focal Loss for Dense Object Detection这篇论文里提出来的。ICCV2017 RBG和Kaiming的论文。提出Focal Loss是为了使得一阶段检测能达到和二阶段检测一样的准确率,同时还能保证速度。
作者认为one-stage和two-stage的表现差异主要原因是大量前景背景类别不平衡导致。在双阶段算法中,在候选框阶段,通过得分和nms筛选过滤掉了大量的负样本,然后在分类回归阶段又固定了正负样本比例,使得前景和背景相对平衡。而one-stage需要产生约100k的候选位置,虽然有类似的采样,但是训练仍然被大量负样本所主导。

损失函数形式

Focal loss是在交叉熵损失函数基础上进行的修改,二分类交叉熵损失:
Focal Loss损失函数理解可见普通的交叉熵对于正样本而言,输出概率越大损失越小。对于负样本而言,输出概率越小则损失越小。此时的损失函数在大量简单样本的迭代过程中比较缓慢且可能无法优化至最优。
Focal Loss首先在原有的基础上加了一个因子
Focal Loss损失函数理解Focal Loss损失函数理解
其中γ>0更关注于困难的、错分的样本(概率在0.5附近的,离0和1都很远的),减少易分类样本的损失。

例如γ为2,对于正类样本而言,预测结果为0.95肯定是简单样本,所以(1-0.95)的gamma次方就会很小,这时损失函数值就变得更小。而预测概率为0.3的样本其损失相对很大。对于负类样本而言同样,预测0.1的结果应当远比预测0.7的样本损失值要小得多。对于预测概率为0.5时,损失只减少了0.25倍,所以更加关注于这种难以区分的样本。
Focal Loss损失函数理解加入平衡因子α,用来平衡正负样本本身的比例不均:文中α取0.25,因为负例易分,所以占比会变小,要用α来平衡。
即γ调节简单和困难样本权重降低的速率,α用来平衡正负样本的重要性。