Focal loss 出自ICCV2017 RBG和Kaiming大神的论文 Focal Loss for Dense Object Detection
对标准的交叉熵损失做了改进,效果如下图所示。
标准的交叉熵损失函数见:loss函数之NLLLoss,CrossEntropyLoss_ltochange的博客-CSDN博客_nll函数
图中,横坐标为,代表样本实际类别的预测概率, 越大,代表样本越容易进行分类,纵坐标为loss。
通过引入调制系数
可减少loss中易分类样本的权重,从而使得模型在训练时更专注于难分类的样本。
具体来说:
- 当一个样本被分错的时候(难分类样本),很小, 接近1,loss不被影响;当趋向于1(易分类样本), 接近0,调制系数降低,对loss的贡献减小。当增加的时候,调制系数也会增加。 参数平滑地调节了易分样本调低权值的比例。实验发现最好。直觉上来说,当一定的时候,比如,易分类样本的loss要比标准的交叉熵loss小100+倍,当时,要小1000+倍,但是对于难分类样本,loss最多小了4倍。因此,难分类样本的权重相对就提升了很多。
Focal loss最后使用的公式为:
其中, 用于控制正负样本的权重,处理样本不均衡问题(pytorch中已有实现)。
用于控制难易样本的权重,使得模型更关注难样本。
当,时,即为标准交叉熵损失函数
论文实验如下图:
在物体检测任务中,,结果表现最好。
后期补上代码,并在nlp领域尝试
参考:
Focal loss论文详解 - 知乎
Focal Loss 的Pytorch 实现以及实验 - 知乎



