Focal Loss本質
Focal Loss本質上解決了分類問題中類別不均衡、分類難度差異的一個損失函數,使得訓練更加聚焦在困難樣本上。
Focal Loss的發展演化
Focal Loss是從二分類問題出發,同樣的思想可以遷移到多分類問題上。
標準交叉熵
我們知道二分類問題的標準loss是交叉熵:
對於二分類問題我們也幾乎適用sigmoid激活函數,所以上面的式子可以轉化成:
這裏有。
作者在論文中給出的式子如下:
其中是真實標籤,是預測概率。
我們再定義:
上面的交叉熵的式子可以轉換成:
均衡交叉熵
最初論文中引入了均衡交叉熵函數:
要對類別不均衡問題對loss的貢獻進行一個控制,即加上一個控制權重即可,最初作者的想法即如下這樣,對於屬於少數類別的樣本,增大即可。但這樣有一個問題,它僅僅解決了正負樣本之間的平衡問題,並沒有區分易分/難分樣本。
爲什麼上述公式只解決正負樣本不均衡問題
因爲增加了一個係數,跟的定義類似,當label=1的時候 ;當label=-1的時候,,的範圍也是。因此 可以通過設定的值(如果這個類的樣本數比這個類的樣本數少很多,那麼會取來增加這個類的樣本的權重)來控制正負樣本對總的loss的貢獻。
Focal Loss
上面的交叉熵是硬截斷型的loss,我們通常設定一個閾值,超過這個閾值我們就不在更新參數了。這樣的話下一次更新訓練這個預測值坑又變回小於閾值了,這樣會使得訓練變得困難,迭代次數大大增加。
所以交叉熵爲基礎,對loss進行軟化,我們不只是要告訴模型正樣本的預測值大於閾值就不更新了,而是要告訴模型當其大於閾值後只需要保持就好。
硬截斷致命的缺陷是loss的權重因子不可導,對梯度沒有任何幫助,軟化就是把一些本來不可導的函數用一些可導函數來近似,數學角度叫“光滑化”。
Focal Loss雛形
所以偉大的Focal Loss雛形就出現了:
用於平衡難易樣本的比例不均,起到了對的放大作用。減少易分樣本的損失,使模型更關注於困難易錯分的樣本。例如當時,模型對於某正樣本預測置信度爲,這時,也就是FL值變得很小;而當模型對於某正樣本預測置信度爲0.3時,,此時它對loss的貢獻就變大了。當時變成交叉熵損失。
Focal Loss最終版本
爲了應對正負樣本不均衡的問題,在上面的式子中再加入平衡交叉熵的因子,用來平衡正負樣本本身的比例不均,最終得到如下式子:
Focal Loss論文的作者給出的實驗最佳取值爲,。