背景
目标检测中,one-stage相比two-stage,要在更稠密的样本中进行筛选和学习(即Dense Predict),而且后者基于proposal的思想,已经初筛掉大部分easy background。因此前景背景(foreground-background)的不平衡(imbalance)是one-stage训练时的主要问题。
one-stage在训练时都会面临class-imbalance的问题,会导致两个弊端:
- 训练不高效,大多数位置都是Easy Negative,贡献很少的有用学习信号(useful learning signal)
- Easy Negative 会主导(overwhelm)训练,导致退化的模型(degenerate models)
常用的解决思路是用难分类负样本挖掘(hard negative mining)。
而focal loss能根据置信度的大小,动态地缩放交叉熵。随着正确类别的置信度提高,它的尺度因子会衰减置零。也就是说,这个尺度因子能自动降低训练时easy samples的贡献占比,让模型专注于hard samples。
Cross Entropy Loss
常用的CELoss为:
为方便标记,记:
重写CELoss为:
当大量的easy samples loss叠加,这些小的损失值可以主导那些稀少,缺乏训练的类。
Balanced Cross Entropy
针对class imbalance的常用方法是用一个权重参数α∈[0,1]对类别进行权重的倾斜。
对y=1(数量较少)的类别提供较大的权重,对背景(数量较多)的类别提供较小的权重。
Balanced CELoss:
然而这种权重方式太依赖超参数α的选定,且只能缓解样本数量的不平衡问题,不能缓解样本难易程度的问题。
例如某个背景样本缺很难学,这种情况则无法优化。
Focal Loss
因此作者从难易的侧重入手,旨在为学得好的样本提供更小的权重,学得糟糕的样本提供更大的权重。
这种学习的角度,即能有效较低易样本对模型训练的主导,又能缓解样本类别数量不平衡的问题。因为类别数量的不平衡,通常情况下也会让模型对数量多的类别学得更好(因为拥有足够的训练),Focal Loss就能对易且量大的samples降低影响力。
Focal Loss:
下图为γ取不同值时的loss值:
当label为正样本,模型预测为正的置信度很低时,这可以理解为难样本,就很小。
当label为负样本,模型却预测为正的置信度很高,这也可以理解为难样本,同时也是很小。
所以我们可以用的大小来统称难易样本,且不论正负样本。
小代表难样本,大代表易样本。
那么显而易见,难样本有更大的权重,易样本有更小的权重。
举个例子,当γ=2时,的样本损失比CELoss的损失要小100倍,大大降低了高置信度样本的影响力。
结合α-balanced的focal loss变体:
和共同平衡loss的权重,论文作者建议:α=0.25,γ=2.0。
当γ取2时,难样本的权重已经相对较大,再用α=0.25来平衡一下过大的损失。
综上,在focal loss中,α的作用可以理解为不让难样本的权重过大,γ的作用则是不让易样本主导模型的训练。
参考文献
知乎文章,含focal loss和RetinaNet训练细节:读Focal Loss