Focal Loss/zh

    From Marovi AI
    This page is a translated version of the page Focal Loss and the translation is 100% complete.
    Other languages:
    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 结果时,这一点尤为重要。

    参考文献

    1. Lin, T.-Y., Goyal, P., Girshick, R., He, K., Dollar, P. "Focal Loss for Dense Object Detection." ICCV 2017. Template:Cite arxiv
    2. Li, X., Wang, W., Wu, L., Chen, S., et al. "Generalized Focal Loss." NeurIPS 2020. Template:Cite arxiv
    3. Abraham, N., Khan, N. M. "A Novel Focal Tversky Loss Function with Improved Attention U-Net for Lesion Segmentation." ISBI 2019. Template:Cite arxiv