Focal Loss/zh
| Article | |
|---|---|
| Topic area | Deep Learning |
| Prerequisites | Cross-entropy Loss, Backpropagation, Logistic Regression |
概述
焦點損失(Focal Loss)是對標準交叉熵損失的一種修改,旨在解決訓練過程中的極端類別不平衡問題,尤其是在密集目標檢測場景中。該方法由 Lin 等人於 2017 年提出,作為 RetinaNet 檢測器的核心訓練目標。焦點損失重新塑造了損失函數,使分類正確的樣本對梯度的貢獻呈指數級下降,從而讓優化器專注於一小部分困難且被錯誤分類的樣本。[1] 這一技術使得單階段檢測器能夠達到 Faster R-CNN 等兩階段檢測器的準確率水平,同時保留單次預測架構的速度優勢。
儘管焦點損失最初是為目標檢測設計的,但只要一個 分類 任務被簡單負樣本或多數類主導,它就成為一種通用工具。常見的應用領域包括醫學影像、異常檢測、語義分割以及稀有事件預測。該損失僅引入一個非負超參數——聚焦參數 $ \gamma $,它在標準交叉熵與硬樣本挖掘行為之間平滑過渡。
動機:前景與背景的不平衡
密集檢測器對每幅圖像評估 $ 10^4 $-$ 10^5 $ 個候選位置,其中只有少數與真實目標重疊。其餘位置都是簡單的背景樣本,單個損失雖小,但累積貢獻會主導梯度。兩階段流程通過一個區域提議網絡過濾大部分背景,從而緩解了這一問題,分類器根本看不到這些背景。單階段檢測器沒有這種過濾機制,之前的解決方案——例如困難負樣本挖掘、OHEM 或固定的前景-背景比例——都依賴於在不同數據集之間表現脆弱的啟發式策略。
焦點損失直接在損失函數內部解決不平衡問題,無論類別如何,都會降低高置信度預測的貢獻權重。由於這種權重衰減是平滑且可微分的,因此從不丟棄任何樣本;網絡只是將較少的容量分配給學習它已經掌握的內容。
以交叉熵為起點
對於一個二分類問題,標籤為 $ y \in \{0, 1\} $,正類的預測概率為 $ p \in [0, 1] $,則 交叉熵 為
$ {\displaystyle \mathrm{CE}(p, y) = -y \log p - (1 - y) \log(1 - p).} $
定義
$ {\displaystyle p_t = \begin{cases} p & \text{if } y = 1 \\ 1 - p & \text{otherwise} \end{cases}} $
可以將損失緊湊地寫為 $ \mathrm{CE}(p_t) = -\log p_t $。其中 $ p_t $ 是模型對真實類別賦予的概率。被良好分類的樣本滿足 $ p_t \to 1 $,其損失雖小但並非可以忽略;當對成千上萬個簡單負樣本求和後,這種微小的損失就會主導整個訓練過程。
公式
焦點損失在交叉熵項之前加入一個 調節因子 $ (1 - p_t)^\gamma $:
$ {\displaystyle \mathrm{FL}(p_t) = -(1 - p_t)^\gamma \log p_t,} $
其中 $ \gamma \geq 0 $ 為可調的聚焦參數。當 $ \gamma = 0 $ 時,調節因子等於 1,焦點損失退化為交叉熵。隨著 $ \gamma $ 增大,高置信度預測的損失衰減速度遠快於不確定預測。例如,當 $ \gamma = 2 $ 且 $ p_t = 0.9 $ 時,調節因子為 $ 0.01 $,相對於交叉熵實現了 100 倍的衰減。
另一種常與聚焦因子結合使用的調整方式,是將損失乘以一個類別平衡權重 $ \alpha_t \in [0, 1] $:
$ {\displaystyle \mathrm{FL}(p_t) = -\alpha_t (1 - p_t)^\gamma \log p_t.} $
在原始論文中,前景類設為 $ \alpha = 0.25 $(與背景的 $ 1 - \alpha = 0.75 $ 配對),$ \gamma = 2 $,被報告為穩健的默認值。乘積形式的因子組合使損失地形同時傾向於困難前景和困難背景。
多分類擴展按類別應用相同的因子,可使用基於 softmax 的 $ p_t $,或對每個類別獨立使用 sigmoid 激活函數——後者正是 RetinaNet 所採用的配置。
梯度與訓練動態
對焦點損失相對於 logit $ z $ 求導,得到的梯度本身也按 $ (1 - p_t) $ 的冪次衰減。因此簡單樣本對前向損失和反向傳播的貢獻都很小,優化器實際上將每一步都花在批次中最困難的樣本上。
在實際應用中有兩個實現細節非常關鍵。首先,最終分類層的偏置應該被初始化,使得 $ p \approx \pi $,其中 $ \pi $ 取一個較小的先驗值,例如 $ \pi = 0.01 $;如果不這樣初始化,第一次迭代的損失就會被數以萬計的高置信度但錯誤的負樣本預測主導,訓練將會發散。其次,焦點損失通常按錨點計算,並按正錨點的數量進行歸一化,而不是按總錨點數歸一化。這樣可以使不同目標密度的圖像之間梯度幅度保持可比性。
變體與擴展
多種後續損失函數都基於焦點損失的框架構建。Quality Focal Loss 由 Generalized Focal Loss 系列提出,它用一個連續的質量分數(例如 IoU)替代二元目標,從而讓分類器直接預測定位置信度。[2] Distribution Focal Loss 則將邊界框回歸目標建模為一個離散分布,同樣使用類似焦點損失的調節因子。
在語義分割中,焦點損失經常與 Dice 損失結合使用,以處理像素級的類別不平衡,尤其適用於醫學圖像中的細小結構和小病灶。諸如 Focal Tversky Loss 等變體將焦點調節與 Tversky 指數相結合,對該公式進行了泛化。[3]
與替代方法的比較
焦點損失是處理不平衡問題的多種方法之一。相比困難樣本挖掘和 OHEM,焦點損失是完全可微的,沒有離散的選擇步驟,實現起來也很直接。相比類別平衡採樣,它無需事先知道每個類別的頻率,並能在模型改進過程中動態適應。相比單純的類別加權(只使用 $ \alpha $ 項),乘積因子 $ (1 - p_t)^\gamma $ 還能在每個類別內部進一步抑制簡單樣本。
當不平衡程度較輕時,相對於交叉熵的增益很小,有時甚至為負,因為焦點損失可能會低估那些已經被良好分類但仍具信息量的樣本所攜帶的信號。當簡單樣本比例極高時,該技術最為有效。
局限性
焦點損失假設較低的 $ p_t $ 能夠可靠地標識出有用的學習信號。在標籤噪聲較大的數據集中,這一假設並不成立:噪聲正樣本會持續保持較低的 $ p_t $,並消耗不成比例的梯度。多項工作研究了這種失效模式,並提出了對噪聲更魯棒的變體,對調節因子進行截斷或平滑處理。焦點損失對 $ \gamma $ 也可能比較敏感;過大的值會在訓練早期使優化器缺乏信號,過小的值則會退化為交叉熵。
校準是另一項需要關注的問題。使用焦點損失訓練的網絡往往會輸出更高置信度但校準更差的概率,而使用交叉熵訓練的網絡則相反。當下游系統直接消費預測概率而不是 argmax 結果時,這一點尤為重要。
參考文獻
- ↑ Lin, T.-Y., Goyal, P., Girshick, R., He, K., Dollar, P. "Focal Loss for Dense Object Detection." ICCV 2017. Template:Cite arxiv
- ↑ Li, X., Wang, W., Wu, L., Chen, S., et al. "Generalized Focal Loss." NeurIPS 2020. Template:Cite arxiv
- ↑ Abraham, N., Khan, N. M. "A Novel Focal Tversky Loss Function with Improved Attention U-Net for Lesion Segmentation." ISBI 2019. Template:Cite arxiv