【论文理解】focal loss交叉熵

本文深入解析Focal Loss如何解决目标检测中正负样本比例失衡问题。通过改进交叉熵损失函数,Focal Loss降低了简单负样本的权重,更加关注困难样本,显著提升one-stage检测器的性能。

一、为什么改进交叉熵?

Single stage detector不好的原因完全在于:

  1. 极度不平衡的正负样本比例: anchor近似于sliding window的方式会使正负样本接近1000:1,而且绝大部分负样本都是easy example,
  2. 这就导致下面一个问题:gradient被easy example dominant的问题:往往这些easy example虽然loss很低,但由于数量众多,对于loss依旧有很大贡献,从而导致收敛到不够好的一个结果。

作者认为one-stage和two-stage的表现差异主要原因是大量前景背景类别不平衡导致

  • 双阶段算法中,在候选框阶段,通过得分和nms筛选过滤掉了大量的负样本,然后在分类回归阶段又固定了正负样本比例,或者通过OHEM在线困难挖掘使得前景和背景相对平衡。
  • one-stage阶段需要产生约100k的候选位置,虽然有类似的采样,但是训练仍然被大量负样本所主导

所以作者改进了交叉熵,解决one-stage目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重,也可理解为一种困难样本挖掘

二、以往的交叉熵损失函数

Focal loss是在交叉熵损失函数基础上进行的修改,首先回顾二分类交叉上损失:
L = − y l o g y ^ − ( 1 − y ) l o g ( 1 − y ^ ) = { − l o g ( y ^ ) y=1 − l o g ( 1 − y ^ ) y=0 L = -y log \hat{y}-(1-y)log(1-\hat{y})=\begin{cases} -log( \hat{y})& \text{y=1}\\ -log(1-\hat{y})& \text{y=0} \end{cases} L=ylogy^(1y)log(1y^)={log(y^)log(1y^)y=1y=0
其中 y ∈ 0 , 1 y∈{0,1} y0,1 是真实标签, y ^ \hat{y} y^是预测值。
可见普通的交叉熵对于正样本而言,输出概率越大损失越小。对于负样本而言,输出概率越小则损失越小。此时的损失函数在大量简单样本的迭代过程中比较缓慢且可能无法优化至最优。

三、Focal loss的改进

L = { − α ( 1 − y ^ ) γ l o g ( y ^ ) y=1 − ( 1 − α ) y ^ γ l o g ( 1 − y ^ ) y=0 L =\begin{cases} -\alpha (1-\hat{y})^{\gamma}log( \hat{y})& \text{y=1}\\ -(1-\alpha){\hat{y}}^{\gamma}log(1-\hat{y})& \text{y=0} \end{cases} L={α(1y^)γlog(y^)(1α)y^γlog(1y^)y=1y=0
α = 0.25 \alpha = 0.25 α=0.25
γ = 2 \gamma = 2 γ=2
首先在原有的基础上加了一个因子,其中gamma>0使得减少易分类样本的损失。使得更关注于困难的、错分的样本。

  • 例如gamma为2,对于正类样本而言,预测结果为0.95肯定是简单样本,所以(1-0.95)的gamma次方就会很,这时损失函数值就变得更
  • 对于正类样本而言,预测结果为0.1肯定是困难样本,所以(1-0.1)的gamma次方就会很,这时损失函数值就变得更
  • 对于负类样本而言同样,预测0.1的结果应当远比预测0.7的样本损失值要小得多。
  • 所以更加关注于这种难以区分的样本。这样减少了简单样本的影响。

加入平衡因子alpha
注意在他的任务中,正样本是属于少数样本,也就是说,本来正样本难以“匹敌”负样本,但经过加入gamma的“操控”后,也许形势还逆转了,还要对正样本降权

这是因为加入了gamma因子,使得正样本的损失变大了很多,负样本虽然很多个,但是损失还是相对减少了,所以需要加入平衡因子alpha=0.25,来调节一下正负样本损失。

参考:

为什么使用交叉熵的理解
正负样本比例失衡以及难易区分样本的理解
交叉熵中gamma的理解
交叉熵中alpha的理解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值