【CV算法基础】FocalLoss理解

 
作者提出focal loss的出发点也是希望one-stage detector可以达到two-stage detector的准确率,同时不影响原有的速度。既然有了出发点,那么就要找one-stage detector的准确率不如two-stage detector的原因,作者认为原因是:样本的类别不均衡导致的。负样本数量太大,占总的loss的大部分,而且多是容易分类的,因此使得模型的优化方向并不是我们所希望的那样。OHEM算法(online hard example mining)虽然增加了错分类样本的权重,但是OHEM算法忽略了容易分类的样本。Focal Loss函数可以通过减少易分类样本的权重,使得模型在训练时更专注于难分类的样本。
因此可以通过设定a的值来控制正负样本对总的loss的共享权重。a取比较小的值来降低负样本(多的那类样本)的权重。
疑问:为什么α取较小的值可以降低负样本的权重??负样本占比较多。
显然前面的公式3虽然可以控制正负样本的权重,但是没法控制容易分类和难分类样本的权重,于是就有了Focal Loss:
这里的γ称作focusing parameter,γ>=0。幂次函数称为调制系数。
为什么要加上这个调制系数呢?目的是通过减少易分类样本的权重,从而使得模型在训练时更专注于难分类的样本。
两个重要性质:
  1. 当一个样本被分错的时候,pt是很小的,那么调制因子(1-Pt)接近1,损失不被影响;当Pt→1,因子(1-Pt)接近0,那么分的比较好的(well-classified)样本的权值就被调低了。因此调制系数就趋于1,也就是说相比原来的loss是没有什么大的改变的。当pt趋于1的时候(此时分类正确而且是易分类样本),调制系数趋于0,也就是对于总的loss的贡献很小。
  2. 当γ=0的时候,focal loss就是传统的交叉熵损失,当γ增加的时候,调制系数也会增加。 专注参数γ平滑地调节了易分样本调低权值的比例。γ增大能增强调制因子的影响,实验发现γ取2最好。直觉上来说,调制因子减少了易分样本的损失贡献,拓宽了样例接收到低损失的范围,增加了那些误分类的重要性。
focal loss的两个性质算是核心,其实就是用一个合适的函数去度量难分类和易分类样本对总的损失的贡献。
在实验中a的选择范围也很广,一般而言当γ增加的时候,a需要减小一点(实验中γ=2,a=0.25的效果最好)。
看了相关的博客文章,有的说到实际上focal loss是一个工程上的东西,其梯度曲线和交叉熵损失函数没有太大差别了,也就是说focal loss的设计没有起啥作用。
对于多分类呢???
多分类的focal loss就是pt是对应的结果数值,不是一个而是多个,类似于矩阵点乘,确定之后,α和γ是定值。Pt可以选择softmax,或者其他概率值函数。

二分类:

多分类

 

参考

1. Focal Loss for Dense Object Detection

2. 【trick 3】Focal Loss —— 解决one-stage目标检测中正负样本不均衡的问题

3. Focal loss原理解析

posted on 2022-08-31 19:15  鹅要长大  阅读(162)  评论(0编辑  收藏  举报

导航