1. 程式人生 > >Focal Loss 論文理解及公式推導

Focal Loss 論文理解及公式推導

作者: 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:
CE(p,y)={log(p)if y=1log(1p)otherwise  CE(p, y) = \begin{cases} -log(p) &amp;\text{if } y=1 \\ -log(1-p) &amp;\text{otherwise } \end{cases}


其中,y{+11}y \in \lbrace +1 -1 \rbrace 為 groundtruth 類別;p[0,1]p \in [0, 1] 是模型對於類別 y=1y=1 所得到的預測概率.

符號簡介起見,定義 ptp_t
pt={pif y=11potherwise  p_t = \begin{cases} p &amp;\text{if } y=1 \\ 1-p &amp;\text{otherwise } \end{cases}
則,CE(p,y)=CE(pt)=log(pt)CE(p, y) = CE(p_t) = -log(p_t).

CE Loss 如圖 Figure 1 中的上面的藍色曲線所示. 其一個顯著特點是,對於簡單易分的樣本(pt0.5p_t \gg 0.5),其 loss 也是一致對待. 當累加了大量簡單樣本的 loss 後,具有很小 loss 值的可能淹沒稀少的類(rare class).

1.1 均衡交叉熵 Blanced CE

解決類別不均衡的一種常用方法是,對類別 +1 引入權重因子 α[0,1]\alpha \in [0, 1],對於類別 -1 引入權重 1α1 - \alpha.

符號簡介起見,定義 αt\alpha _t
αt={αif y=11αotherwise  \alpha_t = \begin{cases} \alpha &amp;\text{if } y=1 \\ 1-\alpha &amp;\text{otherwise } \end{cases}
則,α\alpha-balanced CE loss 為:

CE(pt)=αtlog(pt)CE(p_t) = -\alpha _t log(p_t)

1.2 Focal Loss 定義

雖然 α\alpha 能夠平衡 positive/negative 樣本的重要性,但不能區分 easy/had 樣本.

對此,Focal Loss 提出將損失函式降低 easy 樣本的權重,並關注於對 hard negatives 樣本的訓練.

新增調製因子(modulating factor) (1pt)γ(1 - p_t)^{\gamma} 到 CE loss,其中 γ0\gamma \ge 0 為可調的 focusing 引數.

Focal Loss 定義為:

FL(pt)=(1pt)γlog(pt)FL(p_t) = -(1 - p_t)^{\gamma} log(p_t)

如圖 Figure 1,給出了 γ[0,5]\gamma \in [0, 5] 中幾個值的視覺化.

Focal Loss 的兩個屬性:

  • [1] - 當樣本被誤分,且 ptp_t 值很小時,調製因子接近於 1,loss 不受影響. 隨著 pt1p_t \rightarrow 1,則調製因子接近於 0,則容易分類的樣本的損失函式被降低權重.
  • [2] - focusing 引數 γ\gamma 平滑地調整哪些 easy 樣本會被降低權重的比率(rate). 當 γ=0\gamma=0,FL=CE;隨著 $\gamma $ 增加,調製因子的影響也會隨之增加(實驗中發現 γ=2\gamma = 2 效果最佳.)

直觀上,調製因子能夠減少 easy 樣本對於損失函式的貢獻,並延伸了loss 值比較地的樣本範圍.

例如,γ=0.2\gamma = 0.2 時,被分類為 pt=0.9p_t=0.9 的樣本,與 CE 相比,會減少 100x 倍;而且,被分類為 $p_t \approx 0.968 $ 的樣本,與 CE 相比,會有少於 1000x 倍的 loss 值. 這就自然增加了將難分類樣本的重要性(如 γ=2\gamma= 2pt0.5p_t \leq 0.5 時,難分類樣本的 loss 值會增加 4x 倍.)

實際上,論文采用了 Focal Loss 的 α\alpha -balanced 變形:

FL(pt)=αt(1pt)γlog(pt)FL(p_t) = -\alpha _t (1 - p_t)^{\gamma} log(p_t)

1.3. Focal Loss 例示

Focal Loss 並不侷限於具體的形式. 這裡給出另一種例示.

假設 p=σ(x)=11+exp = \sigma(x) = \frac{1}{1 + e^{-x}}

定義 ptp_t為(類似於前面對於 ptp_t 的定義):
pt={pif y=11potherwise  p_t = \begin{cases} p &amp;\text{if } y=1 \\ 1-p &amp;\text{otherwise } \end{cases}
定義:xt=yxx_t = yx,其中,y{+1,1}y \in \lbrace +1, -1 \rbrace 是 groundtruth 類別.

則:pt=σ(xt)=11+eyxp_t = \sigma(x_t) = \frac{1}{1 + e^{yx}}

xt&gt;0x_t &gt; 0 時,樣本被正確分類,此時 pt&gt;0.5p_t &gt; 0.5.

有:
dptdx=1(1+eyx)2yeyx=ypt(1pt)=ypt(pt1) \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)
對於交叉熵損失函式 CE(pt)=log(pt)CE(p_t) = -log(p_t),由dlnxdx=1x\frac{d lnx}{d x} = \frac{1}{x}
dCE(pt)dx=dCE(pt)dptdptdx=(1pt)(ypt(pt1))=y(pt1) \frac{d CE(p_t)}{d x} = \frac{d CE(p_t)}{d p_t} * \frac{d p_t}{d x} = (- \frac{1}{p_t}) * (-y*p_t*(p_t - 1)) = y*(p_t - 1)