FocalLoss
- class FocalLoss(*, gamma: float = 2.0, alpha: float | None = None, **kwargs)[source]
基础类:
PointwiseLoss由[lin2018]提出的焦点损失。
这是对(二元)交叉熵损失的一种改进,能更好地处理不平衡数据。 该实现深受
torchvision.ops.sigmoid_focal_loss()中实现的启发,不同之处在于它使用的是模块形式而非函数形式。损失给出为
\[FL(p_t) = -(1 - p_t)^\gamma \log (p_t)\]使用 \(p_t = y \cdot p + (1 - y) \cdot (1 - p)\),其中 \(p\) 指的是预测概率,而 y 指的是在 \({0, 1}\) 中的真实标签。
Focal loss 还有一些其他不错的特性,例如,更好的校准预测概率。参见 [mukhoti2020]。
初始化损失模块。
- Parameters:
gamma (float) – >= 0 调制因子 (1 - p_t) 的指数,用于平衡简单和困难样本。设置 gamma > 0 会减少对分类良好的样本的相对损失。 默认值 2 取自 [lin2018],该文献报告此设置在其实验中效果最佳。然而,这些实验是在图像中的对象分类任务上进行的,因此需要谨慎对待。
alpha (float | None) – 范围在 (0, 1) 内的加权因子,用于平衡正例和负例。alpha 是正类的权重,即增加它会使损失更关注这个类。负类的权重为 1 - alpha。 [lin2018] 建议将其设置为类频率的倒数,或将其视为超参数。
kwargs – 传递给
pykeen.losses.PointwiseLoss的额外基于关键字的参数。
- Raises:
ValueError – 如果alpha在错误的范围内
方法总结
forward(prediction, labels)定义每次调用时执行的计算。
方法文档