题目给出了二分类场景下的 Focal Loss 定义:
其中:
题目的要求就是:给定 α,γ,p,y,按上述公式计算对应的 Focal Loss。
class Solution:
def focal_loss(self, alpha: float, gamma: float, p: float, y: int) -> float:
if y == 1:
mod_factor = (1.0 - p) ** gamma
loss = -alpha * mod_factor * math.log(p)
else:
mod_factor = p ** gamma
loss = -alpha * mod_factor * math.log(1.0 - p)
return loss
你需要实现一个函数,用于计算二分类任务中的 Focal Loss。
给定模型预测概率 p∈(0,1)(通常为 Sigmoid 输出)以及真实标签 y∈{0,1},请你根据下述公式计算最终的 Focal Loss。
Focal Loss 定义为:
$$\text{FL}(p, y) = -\alpha (1 - p)^{\gamma} y \log(p) -\alpha\, p^{\gamma} (1-y)\log(1-p)$$其中:
若 y=1:
FL=−α(1−p)γlog(p)若 y=0:
FL=−αpγlog(1−p)输入参数
p: 模型预测概率。y: 真实标签(0 或 1)。alpha: Focal Loss 平衡系数。gamma: 调节困难样本权重的指数。返回值
loss: 最终的 Focal Loss。输入:
alpha = 0.25
gamma = 2
p = 0.7
y = 1
输出:
loss = 0.0080