- Focal Loss 詳解?
- 1. 背景?
- Focal Loss 是由 Lin et al. (2017) 在論文 《Focal Loss for Dense Object Detection》 中提出的一種損失函數,主要用于解決 目標檢測(Object Detection) 中的 類別不平衡問題,特別是在 One-Stage 檢測器(如 RetinaNet)? 中表現優異。
- 在目標檢測任務中,背景(負樣本)通常遠多于前景(正樣本),導致模型傾向于預測背景,從而影響檢測性能。傳統的交叉熵損失(Cross-Entropy Loss)對所有樣本一視同仁,無法有效處理這種不平衡問題。
- 2. 傳統交叉熵損失的問題?
- 標準的交叉熵損失(CE Loss)定義為:
- CE(pt)=?log(pt)
- 其中,pt 是模型預測的正類概率(對于正樣本 pt=p,對于負樣本 pt=1?p)。
- 問題?:
- 當 pt 很大時(即模型已經正確分類),損失仍然較大,導致訓練效率低。
- 負樣本(背景)數量遠多于正樣本,導致模型被大量簡單負樣本主導,難以學習難樣本(Hard Examples)。
- 3. Focal Loss 的改進?
- Focal Loss 在交叉熵的基礎上引入了一個 調制因子(modulating factor) (1?pt)γ,用于降低易分類樣本的權重,使模型更關注難樣本。
- 公式?:
- Focal Loss(pt)=?αt(1?pt)γlog(pt)
- 其中:
- pt:模型預測的正類概率(對于正樣本 pt=p,對于負樣本 pt=1?p)。
- γ(聚焦參數):控制調制因子的強度,通常取 γ∈[0,5]。
- γ=0:退化為標準交叉熵損失。
- γ>0:難樣本(pt 較小)的權重更大,易樣本(pt 較大)的權重更小。
- αt(平衡因子):用于平衡正負樣本的權重,通常 αt 是一個可學習的參數或固定值(如 α=0.25 用于正樣本,α=0.75 用于負樣本)。
- 4. Focal Loss 的作用?
- 解決類別不平衡問題?
- 通過 αt 調整正負樣本的權重,避免模型被大量背景樣本主導。
- 關注難樣本(Hard Examples)?
- 通過 (1?pt)γ 降低易分類樣本的權重,使模型更關注難以正確分類的樣本。
- 5. Focal Loss 在目標檢測中的應用?
- Focal Loss 最初由 RetinaNet? 提出,用于解決 One-Stage 檢測器(如 SSD、YOLO)中的類別不平衡問題。
- RetinaNet 的改進點?:
- 使用 Focal Loss? 替代標準的交叉熵損失。
- 引入 FPN(Feature Pyramid Network) 和 Anchor Boxes? 提高檢測精度。
- 6. 代碼實現(PyTorch 示例)?
- python
- import torchimport torch.nn as nnimport torch.nn.functional as Fclass FocalLoss(nn.Module): def __init__(self, alpha=0.25, gamma=2.0): super(FocalLoss, self).__init__() self.alpha = alpha self.gamma = gamma def forward(self, inputs, targets): # 計算交叉熵損失 ce_loss = F.cross_entropy(inputs, targets, reduction='none') # shape: [N] # 計算 pt = exp(-ce_loss) pt = torch.exp(-ce_loss) # 模型預測的概率 # 計算 Focal Loss focal_loss = self.alpha * (1 - pt) ** self.gamma * ce_loss return focal_loss.mean() # 返回平均損失
- 使用示例?:
- python
- # 假設 inputs 是模型的 logits,targets 是真實標簽criterion = FocalLoss(alpha=0.25, gamma=2.0)loss = criterion(model_output, ground_truth_labels)
- 7. Focal Loss 的變體?
- RetinaNet Focal Loss?:適用于目標檢測中的正負樣本不平衡。
- Dice Loss + Focal Loss?:結合 Dice Loss(用于分割任務)和 Focal Loss,提高小目標檢測效果。
- Class-Balanced Focal Loss:動態調整 α 以適應不同類別的樣本數量。
- 8. 總結?
- 特性說明
- 核心思想 降低易分類樣本的權重,增強難樣本的影響
- 適用場景 類別不平衡問題(如目標檢測、長尾分類)
- 關鍵參數 γ(聚焦參數)、α(平衡因子)
- 改進效果 提高模型對難樣本的學習能力,提升檢測精度
- Focal Loss 在 目標檢測(RetinaNet、FCOS) 和 醫學圖像分析(如腫瘤檢測)? 中有廣泛應用,是解決類別不平衡問題的有效方法之一。