原文:Focal Loss 论文理解及公式推导 - AIUAI
题目: Focal Loss for Dense Object Detection - ICCV2017
作者: Tsung-Yi, Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollar
团队: FAIR
精度最高的目标检测器往往基于 RCNN 的 two-stage 方法,对候选目标位置再采用分类器处理. 而,one-stage 目标检测器是对所有可能的目标位置进行规则的(regular)、密集采样,更快速简单,但是精度还在追赶 two-stage 检测器. <论文所关注的问题于此.>
论文发现,密集检测器训练过程中,所遇到的极端前景背景类别不均衡(extreme foreground-background class imbalance)是核心原因.
对此,提出了 Focal Loss,通过修改标准的交叉熵损失函数,降低对能够很好分类样本的权重(down-weights the loss assigned to well-classified examples),解决类别不均衡问题.
Focal Loss 关注于在 hard samples 的稀疏子集进行训练,并避免在训练过程中大量的简单负样本淹没检测器.
Focal Loss 是动态缩放的交叉熵损失函数,随着对正确分类的置信增加,缩放因子(scaling factor) 衰退到 0. 如图:
Focal Loss 的缩放因子能够动态的调整训练过程中简单样本的权重,并让模型快速关注于困难样本(hard samples).
基于 Focal Loss 的 RetinaNet 的目标检测器表现.
1. Focal Loss
Focal Loss 旨在解决 one-stage 目标检测器在训练过程中出现的极端前景背景类不均衡的问题(如,前景:背景 = 1:1000).
首先基于二值分类的交叉熵(cross entropy, CE) 引入 Focal Loss:
C E ( p , y ) = { − l o g ( p ) if y = 1 − l o g ( 1 − p ) otherwise CE(p, y) = \begin{cases} -log(p) &\text{if } y=1 \\ -log(1-p) &\text{otherwise } \end{cases} CE(p,y)={
−log(p)−log(1−p)if y=1otherwise
其中, y ∈ { + 1 − 1 } y \in \lbrace +1 -1 \rbrace y∈{
+1−1} 为 groundtruth 类别; p ∈ [ 0 , 1 ] p \in [0, 1] p∈[0,1] 是模型对于类别 y = 1 y=1 y=1 所得到的预测概率.
符号简介起见,定义 p t p_t pt:
p t = { p if y = 1 1 − p otherwise p_t = \begin{cases} p &\text{if } y=1 \\ 1-p &\text{otherwise } \end{cases} pt={
p1−pif y=1otherwise
则, C E ( p , y ) = C E ( p t ) = − l o g ( p t ) CE(p, y) = CE(p_t) = -log(p_t) CE(p,y)=CE(pt)=−log(pt).
CE Loss 如图 Figure 1 中的上面的蓝色曲线所示. 其一个显著特点是,对于简单易分的样本( p t ≫ 0.5 p_t \gg 0.5 pt≫0.5),其 loss 也是一致对待. 当累加了大量简单样本的 loss 后,具有很小 loss 值的可能淹没稀少的类(rare class).
1.1 均衡交叉熵 Blanced CE
解决类别不均衡的一种常用方法是,对类别 +1 引入权重因子 α ∈ [ 0 , 1 ] \alpha \in [0, 1] α∈[0,1],对于类别 -1 引入权重 1 − α 1 - \alpha 1−α.
符号简介起见,定义 α t \alpha _t αt:
α t = { α if y = 1 1 − α otherwise \alpha_t = \begin{cases} \alpha &\text{if } y=1 \\ 1-\alpha &\text{otherwise } \end{cases} αt={
α1−αif y=1otherwise
则, α \alpha α-balanced CE loss 为:
C E ( p t ) = − α t l o g ( p t ) CE(p_t) = -\alpha _t log(p_t) CE(pt)=−αtlog(pt)
1.2 Focal Loss 定义
虽然 α \alpha α 能够平衡 positive/negative 样本的重要性,但不能区分 easy/had 样本.
对此,Focal Loss 提出将损失函数降低 easy 样本的权重,并关注于对 hard negatives 样本的训练.
添加调制因子(modulating factor) ( 1 − p t ) γ (1 - p_t)^{\gamma} (1−pt)γ 到 CE loss,其中 γ ≥ 0 \gamma \ge 0 γ≥0 为可调的 focusing 参数.
Focal Loss 定义为:
F L ( p t ) = − ( 1 − p t ) γ l o g ( p t ) FL(p_t) = -(1 - p_t)^{\gamma} log(p_t) FL(pt)=−(1−pt)γlog(pt)
如图 Figure 1,给出了 γ ∈ [ 0 , 5 ] \gamma \in [0, 5] γ∈[0,5] 中几个值的可视化.
Focal Loss 的两个属性:
- [1] - 当样本被误分,且 p t p_t pt 值很小时,调制因子接近于 1,loss 不受影响. 随着 p t → 1 p_t \rightarrow 1 pt→1,则调制因子接近于 0,则容易分类的样本的损失函数被降低权重.
- [2] - focusing 参数 γ \gamma γ 平滑地调整哪些 easy 样本会被降低权重的比率(rate). 当 γ = 0 \gamma=0 γ=0,FL=CE;随着 $\gamma $ 增加,调制因子的影响也会随之增加(实验中发现 γ = 2 \gamma = 2 γ=2 效果最佳.)
直观上,调制因子能够减少 easy 样本对于损失函数的贡献,并延伸了loss 值比较地的样本范围.
例如, γ = 0.2 \gamma = 0.2 γ=0.2 时,被分类为 p t = 0.9 p_t=0.9 pt=0.9 的样本,与 CE 相比,会减少 100x 倍;而且,被分类为 $p_t \approx 0.968 $ 的样本,与 CE 相比,会有少于 1000x 倍的 loss 值. 这就自然增加了将难分类样本的重要性(如 γ = 2 \gamma= 2 γ=2 且 p t ≤ 0.5 p_t \leq 0.5 pt≤0.5 时,难分类样本的 loss 值会增加 4x 倍.)
实际上,论文采用了 Focal Loss 的 α \alpha α -balanced 变形:
F L ( p t ) = − α t ( 1 − p t ) γ l o g ( p t ) FL(p_t) = -\alpha _t (1 - p_t)^{\gamma} log(p_t) FL(pt)=−αt(1−pt)γlog(pt)
1.3. Focal Loss 例示
Focal Loss 并不局限于具体的形式. 这里给出另一种例示.
假设 p = σ ( x ) = 1 1 + e − x p = \sigma(x) = \frac{1}{1 + e^{-x}} p=σ(x)=1+e−x1,
定义 p t p_t pt为(类似于前面对于 p t p_t pt 的定义):
p t = { p if y = 1 1 − p otherwise p_t = \begin{cases} p &\text{if } y=1 \\ 1-p &\text{otherwise } \end{cases} pt={
p1−pif y=1otherwise
定义: x t = y x x_t = yx xt=yx,其中, y ∈ { + 1 , − 1 } y \in \lbrace +1, -1 \rbrace y∈{
+1,−1} 是 groundtruth 类别.
则: p t = σ ( x t ) = 1 1 + e y x p_t = \sigma(x_t) = \frac{1}{1 + e^{yx}} pt=σ(xt)=1+eyx1
当 x t > 0 x_t > 0 xt>0 时,样本被正确分类,此时 p t > 0.5 p_t > 0.5 pt>0.5.
有:
d p t d x = − 1 ( 1 + e y x ) 2 ∗ y ∗ e y x = y ∗ p t ∗ ( 1 − p t ) = − y ∗ p t ∗ ( p t − 1 ) \frac{d p_t}{d x} = \frac{-1}{(1 + e^{yx})^2} * y * e^{yx} = y * p_t * (1 - p_t) = -y * p_t * (p_t - 1) dxdpt=(1+eyx)2−1∗y∗eyx=y∗pt∗(1−pt)=−y∗pt∗(p