Focal Loss 的标准回答要先把 p_t 定义清楚。二分类里,如果真实标签 y 等于一,p_t 就是模型对正类的概率 p;如果 y 等于零,p_t 就是一减 p。公式是负的 alpha_t,乘一减 p_t 的 gamma 次方,再乘 log p_t。gamma 大于等于零,叫 focusing parameter;当 gamma 等于零时,它就退化成带类别权重 alpha_t 的交叉熵。
它的核心不是简单“给少数类加权”,而是根据当前样本是否容易分类动态调节贡献。一个样本已经被正确且高置信分类时,p_t 接近一,一减 p_t 的 gamma 次方接近零,它对损失和梯度的影响就被压低。错误或低置信样本的 p_t 较小,调制因子不会被强烈压缩,所以相对获得更多关注。这能避免海量易样本淹没真正需要学习的信号。
这里要区分类别与难度。目标检测里背景样本很多,其中大量是易背景;前景相对少,所以原论文在 RetinaNet 中效果明显。但“易样本等于背景、难样本等于前景”并不成立。困难背景、遮挡前景和标错样本都可能是低 p_t。Focal Loss 关注的是模型当前的置信状态,不是类别名称。
alpha_t 用于类别平衡,回答时必须先定义 alpha 是给正类还是负类。若少数正类更重要,通常会考虑给正类更高的相对权重,但不能把一比一百的样本比例直接抄成正类 alpha 等于零点零一。最佳权重受采样、损失归一化、误报漏报代价和验证集分布影响,应与 gamma 联合调参。
风险也要说。标签噪声或异常样本往往长期低置信,Focal Loss 不会像对易样本那样强烈下调它们,所以它们在总损失和梯度里的相对占比可能升高;这不代表相对普通 CE 的绝对梯度会被持续放大。所以使用前要做标签质检,并与加权交叉熵、重采样或其他类别均衡方法做同条件对照。评估不能只看 accuracy,我会看每类 precision、recall、PR-AUC、校准和长尾切片。
最后,不要把 Focal Loss 随意扩展成“会加剧大模型幻觉”或“必须与 OHEM 组合”。如果没有对应实验,这些都不是原论文结论。它最可靠的定位是:通过调制项降低 well-classified 样本的权重,解决易样本数量过多导致的训练主导问题。
多分类实现时通常对真实类别的 softmax 概率定义 p_t,再使用相同调制形式;alpha 可以是按类权重。还要核对 reduction 和有效样本数,避免类别权重与重采样重复放大。报告结果时给出不使用 Focal Loss 的强基线,才能说明收益来自调制项。
若 gamma 很大,绝大多数样本梯度都可能被压低,训练速度和校准也会变化,因此不能只追求长尾召回。