Focal Loss 的定义和用途
Focal Loss 是一种改进的损失函数,专门用于解决类别不平衡问题和区分难易样本的问题。它在目标检测、实例分割等任务中广泛应用。
核心问题
标准交叉熵损失函数存在两个主要缺陷:
- 类别不平衡:当正样本和负样本数量差异很大时,多数类样本会主导损失函数,使模型偏向预测多数类。
- 无法区分难易样本:交叉熵损失对所有样本一视同仁,包括模型已经能够正确分类的"简单样本",这些简单样本会淹没真正需要关注的"困难样本"(模型预测错误的样本)。
γ(Gamma)参数的含义
γ 是聚焦参数(focusing parameter),用于控制对困难样本的关注程度。
γ 的作用机制
Focal Loss 的公式包含一个调制因子 (1 - p_t)^γ,其中 p_t 是模型对正确类别的预测概率:
- 当模型预测正确且置信度高(p_t 接近 1):调制因子接近 0,损失被大幅降权,简单样本对总损失的贡献减少。
- 当模型预测错误或置信度低(p_t 接近 0):调制因子接近 1,损失保持原样,困难样本获得更多关注。
γ 的具体影响
| γ 值 | 效果 |
|---|---|
| γ = 0 | Focal Loss 等价于标准交叉熵损失,没有任何聚焦效果 |
| γ = 1 | 轻微的聚焦效果,对困难样本的强调较弱 |
| γ = 2 | 中等聚焦效果,原论文推荐值,在实践中效果最好 |
| γ > 2 | 强聚焦效果,简单样本被严重降权,模型更专注于困难样本 |
数值例子
假设 γ = 2,对于两个预测概率分别为 0.9(简单样本)和 0.6(困难样本)的情况:
- 预测 0.9 的损失:被降权因子
(1-0.9)^2 = 0.01调制,损失值约为 0.0001 - 预测 0.6 的损失:被降权因子
(1-0.6)^2 = 0.16调制,损失值约为 0.035
简单样本的损失被降低了 350 倍,使模型能够将更多注意力集中在困难样本上。
α(Alpha)参数的含义
α 是类别权重参数,用于处理类别不平衡问题。
它为正类(前景)和负类(背景)分配不同的权重:
- α 应用于正类样本
- 1 - α 应用于负类样本
通常 α 的值在 0.25 或 0.5 之间,具体取决于类别的不平衡程度。
Focal Loss 的完整公式
实际应用中,通常使用同时包含 α 和 γ 的平衡版本:
FL(p_t) = -α · (1 - p_t)^γ · log(p_t)
其中:
- p_t 是模型对正确类别的预测概率
- α 处理类别不平衡
- γ 关注困难样本,降权简单样本
实际应用建议
- 当 γ = 2 时,Focal Loss 相比平衡交叉熵损失能获得约 2.9% 的 AP 提升
- γ 值越高,模型对困难样本的关注越强,但过高的 γ 可能导致训练不稳定
- 结合 α 参数使用能同时解决类别不平衡和难易样本问题,效果优于单独使用其中一个参数
