Focal Loss 论文理解及公式推导

原文: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) &amp;\text{if } y=1 \\ -log(1-p) &amp;\text{otherwise } \end{cases} CE(p,y)={ log(p)log(1p)if y=1otherwise 
其中, y ∈ { + 1 − 1 } y \in \lbrace +1 -1 \rbrace y{ +11} 为 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 &amp;\text{if } y=1 \\ 1-p &amp;\text{otherwise } \end{cases} pt={ p1pif 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 pt0.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 &amp;\text{if } y=1 \\ 1-\alpha &amp;\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} (1pt)γ 到 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)=(1pt)γ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 pt1,则调制因子接近于 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 pt0.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(1pt)γ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+ex1

定义 p t p_t pt为(类似于前面对于 p t p_t pt 的定义):
p t = { p if  y = 1 1 − p otherwise  p_t = \begin{cases} p &amp;\text{if } y=1 \\ 1-p &amp;\text{otherwise } \end{cases} pt={ p1pif 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 &gt; 0 x_t &gt; 0 xt>0 时,样本被正确分类,此时 p t &gt; 0.5 p_t &gt; 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)21yeyx=ypt(1pt)=ypt(p

  • 13
    点赞
  • 104
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值