深度學習_目標檢測_Focal Loss詳解

Focal Loss本質

Focal Loss本質上解決了分類問題中類別不均衡、分類難度差異的一個損失函數,使得訓練更加聚焦在困難樣本上。

Focal Loss的發展演化

Focal Loss是從二分類問題出發,同樣的思想可以遷移到多分類問題上。

標準交叉熵

我們知道二分類問題的標準loss是交叉熵:

在這裏插入圖片描述
對於二分類問題我們也幾乎適用sigmoid激活函數y^=σ(x)\hat{y} = \sigma(x),所以上面的式子可以轉化成:

在這裏插入圖片描述
這裏有1σ(x)=σ(x)1 - \sigma(x) = \sigma(-x)

作者在論文中給出的式子如下:

在這裏插入圖片描述

其中y{1,1}y\in \{ 1,-1\}是真實標籤,p[0,1]p\in[0,1]是預測概率。

我們再定義ptp_{t}

在這裏插入圖片描述

上面的交叉熵的式子可以轉換成:

在這裏插入圖片描述

均衡交叉熵

最初論文中引入了均衡交叉熵函數:

在這裏插入圖片描述

要對類別不均衡問題對loss的貢獻進行一個控制,即加上一個控制權重即可,最初作者的想法即如下這樣,對於屬於少數類別的樣本,增大ata_{t}即可。但這樣有一個問題,它僅僅解決了正負樣本之間的平衡問題,並沒有區分易分/難分樣本。

爲什麼上述公式只解決正負樣本不均衡問題

因爲增加了一個係數αtα_{t},跟ptp_{t}的定義類似,當label=1的時候αt=aα_{t}=a ;當label=-1的時候,αt=1aα_{t}= 1 - aaa的範圍也是[0,1][0,1]。因此 可以通過設定aa的值(如果11這個類的樣本數比1-1這個類的樣本數少很多,那麼aa會取0.510.5到1來增加11這個類的樣本的權重)來控制正負樣本對總的loss的貢獻。

Focal Loss

上面的交叉熵是硬截斷型的loss,我們通常設定一個閾值,超過這個閾值我們就不在更新參數了。這樣的話下一次更新訓練這個預測值坑又變回小於閾值了,這樣會使得訓練變得困難,迭代次數大大增加。

所以交叉熵爲基礎,對loss進行軟化,我們不只是要告訴模型正樣本的預測值大於閾值就不更新了,而是要告訴模型當其大於閾值後只需要保持就好。

硬截斷致命的缺陷是loss的權重因子不可導,對梯度沒有任何幫助,軟化就是把一些本來不可導的函數用一些可導函數來近似,數學角度叫“光滑化”。

Focal Loss雛形

所以偉大的Focal Loss雛形就出現了:

在這裏插入圖片描述

(1pt)γ(1 - p_{t})^{\gamma}用於平衡難易樣本的比例不均,γ>0\gamma >0起到了對(1pt)(1 - p_{t})的放大作用。γ>0\gamma >0減少易分樣本的損失,使模型更關注於困難易錯分的樣本。例如當γ=2\gamma =2時,模型對於某正樣本預測置信度ptp_{t}0.90.9,這時(10.9)γ=0.01(1 - 0.9)^{\gamma} = 0.01,也就是FL值變得很小;而當模型對於某正樣本預測置信度ptp_{t}爲0.3時,(10.3)γ=0.49(1 - 0.3)^{\gamma} = 0.49,此時它對loss的貢獻就變大了。當γ=0\gamma = 0時變成交叉熵損失。

Focal Loss最終版本

爲了應對正負樣本不均衡的問題,在上面的式子中再加入平衡交叉熵的ata_{t}因子,用來平衡正負樣本本身的比例不均,最終得到如下式子:

在這裏插入圖片描述

Focal Loss論文的作者給出的實驗最佳取值爲at=0.25a_{t}= 0.25γ=2\gamma = 2

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章