激活函数Focal Loss 详解

  • Focal Loss 详解

    1. 背景
  • Focal Loss 是由 Lin et al. (2017) 在论文 《Focal Loss for Dense Object Detection》 中提出的一种损失函数,主要用于解决 目标检测(Object Detection) 中的 类别不平衡问题,特别是在 One-Stage 检测器(如 RetinaNet) 中表现优异。

  • 在目标检测任务中,背景(负样本)通常远多于前景(正样本),导致模型倾向于预测背景,从而影响检测性能。传统的交叉熵损失(Cross-Entropy Loss)对所有样本一视同仁,无法有效处理这种不平衡问题。

    1. 传统交叉熵损失的问题
  • 标准的交叉熵损失(CE Loss)定义为:

  • CE(pt)=−log(pt)

  • 其中,pt 是模型预测的正类概率(对于正样本 pt=p,对于负样本 pt=1−p)。

  • 问题:

  • 当 pt 很大时(即模型已经正确分类),损失仍然较大,导致训练效率低。

  • 负样本(背景)数量远多于正样本,导致模型被大量简单负样本主导,难以学习难样本(Hard Examples)。

    1. 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 用于负样本)。

    1. Focal Loss 的作用
  • 解决类别不平衡问题

    • 通过 αt 调整正负样本的权重,避免模型被大量背景样本主导。
  • 关注难样本(Hard Examples)

    • 通过 (1−pt)γ 降低易分类样本的权重,使模型更关注难以正确分类的样本。
    1. Focal Loss 在目标检测中的应用
  • Focal Loss 最初由 RetinaNet 提出,用于解决 One-Stage 检测器(如 SSD、YOLO)中的类别不平衡问题。

  • RetinaNet 的改进点:

  • 使用 Focal Loss 替代标准的交叉熵损失。

  • 引入 FPN(Feature Pyramid Network) 和 Anchor Boxes 提高检测精度。

    1. 代码实现(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)

    1. Focal Loss 的变体
  • RetinaNet Focal Loss:适用于目标检测中的正负样本不平衡。

  • Dice Loss + Focal Loss:结合 Dice Loss(用于分割任务)和 Focal Loss,提高小目标检测效果。

  • Class-Balanced Focal Loss:动态调整 α 以适应不同类别的样本数量。

    1. 总结
  • 特性说明

  • 核心思想 降低易分类样本的权重,增强难样本的影响

  • 适用场景 类别不平衡问题(如目标检测、长尾分类)

  • 关键参数 γ(聚焦参数)、α(平衡因子)

  • 改进效果 提高模型对难样本的学习能力,提升检测精度

  • Focal Loss 在 目标检测(RetinaNet、FCOS) 和 医学图像分析(如肿瘤检测) 中有广泛应用,是解决类别不平衡问题的有效方法之一。

相关推荐
AKAMAI21 小时前
Fermyon推出全球最快边缘计算平台:WebAssembly先驱携手Akamai云驱动无服务器技术新浪潮
人工智能·云计算·边缘计算
云雾J视界1 天前
TMS320C6000 VLIW架构并行编程实战:加速AI边缘计算推理性能
人工智能·架构·边缘计算·dsp·vliw·tms320c6000
想ai抽1 天前
基于AI Agent的数据资产自动化治理实验
人工智能·langchain·embedding
小马过河R1 天前
AIGC视频生成之Deepseek、百度妙笔组合实战小案例
人工智能·深度学习·计算机视觉·百度·aigc
june-Dai Yi1 天前
免费的大语言模型API接口
人工智能·语言模型·自然语言处理·chatgpt·api接口
王哈哈^_^1 天前
【数据集】【YOLO】【目标检测】农作物病害数据集 11498 张,病害检测,YOLOv8农作物病虫害识别系统实战训推教程。
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·1024程序员节
数据库安全1 天前
牛品推荐|分类分级效能飞跃:美创智能数据安全分类分级平台
大数据·人工智能·分类
却道天凉_好个秋1 天前
卷积神经网络CNN(六):卷积、归一化与ReLU总结
人工智能·神经网络·cnn
澄澈青空~1 天前
blender拓扑建模教程
人工智能·blender
湘-枫叶情缘1 天前
宫殿记忆术AI训练系统:可扩展的终身记忆框架
人工智能·深度学习