Focal Loss:当模型“眼瞎“时,怎么让它学会看重点
先说结论
Focal Loss = 给难分类样本加权重,让模型别再盯着简单样本刷存在感。
如果你做过目标检测,肯定被这个问题折磨过:
- 一张图里几千个锚框,真正有用的就几个
- 模型疯狂学习背景,正样本被淹没在负样本的海洋里
Focal Loss 就是来解决这个"学习偏科"问题的。
这个东西是什么
想象你在教一个小孩认动物:
普通交叉熵就像老师一视同仁——猫认对了给糖,狗认错了也给糖(只是小一点)。结果小孩发现:“哇,背景(草地、天空)最好认,我使劲学这个!”
Focal Loss就像聪明的老师——简单样本(草地天空)给一点点糖,难样本(长得像猫的狗)给一大把糖。
核心思想:降低简单样本的权重,让模型把注意力集中在"硬骨头"上。
为什么你可能用得上
场景1:目标检测
一张街景图,几千个候选框,只有3个是车/人/红绿灯。用普通交叉熵,模型学到的是"这大概率是背景"。
场景2:类别极度不平衡
医疗影像里,正常细胞占99%,病变细胞1%。模型躺平:“我全猜正常,准确率99%!”
场景3:推荐系统
用户看了1000个商品,点了2个。普通损失函数会让模型觉得"不点"才是正确答案。
💡一句话:只要你的数据里存在"少数重要样本被多数简单样本淹没"的情况,Focal Loss 就是你的救命稻草。
怎么用(重点)
公式拆解
Focal Loss 在交叉熵基础上加了个"聚焦因子":
FL(pt) = -αt * (1 - pt)^γ * log(pt)别被吓
