什麼是 焦點損失函數(Focal Loss)?
焦點損失函數 (Focal Loss) 是一種用於解決物件偵測中類別不平衡問題的損失函數,它通過降低易分類樣本的權重,使模型更關注難分類樣本。
核心概念
焦點損失函數 (Focal Loss) 的核心概念是基於這樣一個觀察:在物件偵測等任務中,大量的候選框都是容易分類的背景樣本,這些樣本雖然數量龐大,但對模型的學習貢獻不大,甚至會淹沒那些難以分類的樣本,導致模型在難分類樣本上的性能下降。Focal Loss 的目標是通過調整損失函數的權重,使模型更加關注難分類樣本,從而提高模型的整體性能。
Focal Loss 主要通過兩個參數來實現這個目標:
- 調製因子 (Modulating Factor): 用於降低易分類樣本的權重。調製因子基於樣本的預測概率,預測概率越高(即越容易分類),調製因子越小,從而降低該樣本的損失。
- 聚焦參數 (Focusing Parameter) γ: 用於控制調製因子的強度。γ 越大,調製因子對易分類樣本的權重降低得越多。
運作原理
Focal Loss 是基於標準的交叉熵損失函數 (Cross Entropy Loss) 進行改進的。對於二元分類問題,交叉熵損失函數可以表示為:
CE(p, y) = -y * log(p) - (1 - y) * log(1 - p)
其中,p 是模型預測的樣本屬於正類的概率,y 是樣本的真實標籤 (0 或 1)。
Focal Loss 在交叉熵損失函數的基礎上引入了調製因子:
FL(p, y) = -α * (1 - p)^γ * y * log(p) - α * p^γ * (1 - y) * log(1 - p)
其中:
α是用於平衡正負樣本比例的權重因子。(1 - p)^γ和p^γ是調製因子,用於降低易分類樣本的權重。γ是聚焦參數,用於控制調製因子的強度。
調製因子的作用:
- 當
p接近 1(即樣本容易被正確分類為正類)時,(1 - p)^γ接近 0,從而降低該樣本的損失。 - 當
p接近 0(即樣本容易被正確分類為負類)時,p^γ接近 0,從而降低該樣本的損失。 - 當
p遠離 1 或 0(即樣本難以分類)時,調製因子接近 1,損失不受影響。
聚焦參數 γ 的作用:
- γ = 0 時,Focal Loss 退化為標準的交叉熵損失函數。
- γ > 0 時,Focal Loss 開始降低易分類樣本的權重,γ 越大,降低的程度越大。
詳細範例:
假設我們有以下兩個樣本:
- 樣本 A:真實標籤為正類 (y = 1),模型預測概率為 0.9 (p = 0.9)。
- 樣本 B:真實標籤為正類 (y = 1),模型預測概率為 0.3 (p = 0.3)。
使用交叉熵損失函數:
- CE(A) = -log(0.9) ≈ 0.105
- CE(B) = -log(0.3) ≈ 1.204
使用 Focal Loss (α = 1, γ = 2):
- FL(A) = -(1 - 0.9)^2 * log(0.9) ≈ 0.001
- FL(B) = -(1 - 0.3)^2 * log(0.3) ≈ 0.589
可以看到,對於容易分類的樣本 A,Focal Loss 將其損失降低了 100 倍,而對於難以分類的樣本 B,Focal Loss 的損失降低幅度較小。這使得模型更加關注難以分類的樣本。
實際應用
Focal Loss 最初被設計用於解決物件偵測任務中的類別不平衡問題,並在 RetinaNet 模型中取得了顯著的成功。目前,Focal Loss 已經廣泛應用於各種物件偵測模型中,例如:
- RetinaNet: 一種基於 Feature Pyramid Network (FPN) 的單階段物件偵測器,使用 Focal Loss 來解決類別不平衡問題。
- Faster R-CNN: 一種兩階段物件偵測器,也可以使用 Focal Loss 來提高性能。
- Mask R-CNN: 一種用於物件偵測和實例分割的模型,可以使用 Focal Loss 來提高分割精度。
除了物件偵測,Focal Loss 也可以應用於其他領域,例如:
- 語義分割: 在語義分割中,Focal Loss 可以用於解決像素級別的類別不平衡問題。
- 自然語言處理: 在自然語言處理中,Focal Loss 可以用於解決文本分類等任務中的類別不平衡問題。
常見誤區
- Focal Loss 只能用於解決類別不平衡問題: 雖然 Focal Loss 最初被設計用於解決類別不平衡問題,但它也可以提高模型在所有樣本上的性能,即使類別是平衡的。這是因為 Focal Loss 可以使模型更加關注難以分類的樣本,從而提高模型的泛化能力。
- γ 的值越大越好: γ 的值越大,Focal Loss 對易分類樣本的權重降低得越多。然而,如果 γ 的值太大,可能會導致模型過度關注難以分類的樣本,而忽略了易分類樣本,從而降低模型的性能。通常需要根據具體任務和數據集進行調整。
- Focal Loss 可以完全替代其他解決類別不平衡問題的方法: Focal Loss 是一種有效的解決類別不平衡問題的方法,但它並不能完全替代其他方法,例如重採樣 (Resampling) 和成本敏感學習 (Cost-Sensitive Learning)。在實際應用中,可以將 Focal Loss 與其他方法結合使用,以獲得更好的效果。
相關術語
常見問題
延伸學習
想看 焦點損失函數 的完整影片教學?前往 美第奇 AI 學院