Focal Loss
Focal loss 被设计用来解决正负样本极度不平衡的情况。例如训练时前景和背景的比例为1:1000
Focal loss从交叉熵损失函数变化而来,先复习一下交叉熵损失函数:
假设是一个简单的二分类问题,$y \in\{\pm 1\}$ 代表ground truth类别,$p \in[0,1]$ 是模型预测的样本属于$y=1$的概率。我们可以用$p_{t}$代表$p$:
那么交叉熵损失函数可以改写为:
交叉熵损失函数为图1中最上面的蓝色线条,从图中可以看到,即使是对于很容易分类的样本($p_{t} > 0.5$),这种损失函数的loss依然很大。当有大量的易分类样本的时候,这些“微小的”损失就能盖过那些难以分类的样本,使得模型优化的方向产生偏移。
Balanced Cross Entropy
当然,我们可以引入一个新的权重$\alpha$来对损失函数进行平衡。$\alpha$的定义类似于之前的$p_{t}$,也就是说,$\alpha$可以用来控制正负样本的损失占的权重,以此来平衡正负样本不均衡的问题。增加了$\alpha$的交叉熵损失函数写作:
这个经过简单扩展的交叉熵损失函数会作为文中的一个baseline
Focal Loss Definition
上面的$\alpha$交叉熵损失函数可以平衡正负样本,但是不能平衡易分类,难分类样本的问题。论文提出的一种新的损失函数,通过降低易分类样本的损失来使得训练专注于提升难分类的样本。
Focal loss在最初的交叉熵损失函数上增加了一个调节因子$\left(1-p_{\mathrm{t}}\right)^{\gamma}$,其中$\gamma \geq 0$是一个可调的“专注”参数。Focal loss可以写作:
Focal loss有两个性质:
- 当一个样本被错误分类而且$p_{t}$很小,调节因子$\left(1-p_{\mathrm{t}}\right)^{\gamma}$会很接近1,所以这个样本的损失函数基本没有受到影响。当$p_{t} \rightarrow 1$的时候,调节因子会趋近于0,因此易分类的样本的权重就被削弱了。
- 专注参数$\gamma$可以平滑的调整调节因子的影响。当$\gamma = 0$的时候,Focal loss就等于最初的交叉熵损失函数,随着$\gamma$的增加,调节因子的影响也增加,文中提到在他们的实验中,$\gamma = 2$时效果最好。
调节因子减少了易分类样本在损失中的权重并且拓展了样本收到低损失的范围。举例来说,当$\gamma = 2$的时候,一个有$p_{t} = 0.9$的样本会比普通的交叉熵损失函数小100多倍,当$p_{t} = 0.968$的时候可以小1000多倍,这样就反过来增加了错误分类样本的重要性。当$p_{t} <= 0.5$的时候最多小4倍。
实际上文中使用的是增加了$\alpha$的版本: