背景区域为负样本什么意思_样本贡献不均:Focal Loss和 Gradient Harmonizing Mechanism...

本文主要介绍两个在目标检测中解决正负样本不平衡问题的方法,分别是发表在ICCV 2017上的Focal Loss for Dense Object Detection和AAAI 2019上的Gradient Harmonized Single-stage Detector。这两种方法都是通过调整每个样本的loss来解决不平衡问题。

这两种方法都是针对目标检测任务提出的,首先简要的介绍下背景。目标检测目前有两种主流方法,分别是two-stage和one-stage。two-stage的方法将目标检测分为两步,首先生成候选集合,该候选集合过滤了绝大多数的负样本,然后用一个分类器进行分类。代表性的工作有R-CNN,Fast R-CNN, Faster R-CNN和Mask R-CNN等等。one-stage的方法直接生成大量的图像区域然后直接进行分类,代表性的工作有OverFeat,SSD和YOLO。two-stage有最好的目标检测结果,但是one-stage速度更快。这两类方法都有类别不平衡的问题,two-stage通过Selective Search,EdgeBoxes,DeepMask和RPN等手段来解决类别不平衡,通常候选区域的个数为1-2k,在分类中可以固定foreground和background的比例或者用online hard example mining来维持样本的均衡。one-stage的方法会有100k个不同尺寸的location,在训练过程中容易被区分的background占了大多数,虽然可以用一些相似的启发式采样方法,但是这会早成训练的低效。为此,第一篇文章提出Focal loss,并且将其应用在one-stage的方法中,通过loss function来解决极端的类别不平衡问题(1:1000)。

Focal loss

首先回顾交叉熵损失函数。对二分类问题,交叉熵损失函数如下

其中
为模型的输出,表示属于正样本的概率,可以用
来表示,

这样交叉熵可以写为
。交叉熵在下图中用蓝色曲线表示,这种损失的一个性质是如果样本是极好分类的(
)那么该样本的loss有一个较小的量级,因为存在大量的易分类负样本,这些loss相加后会淹没正样本的loss。

ffc104990b4264e15a8005a30968923b.png

为了解决类别不平衡,一种方法是引入一个权重因子

,对于正样本
,对于负样本为
。为了方便描述,和
一样,我们用
来表示系数,那么
CE损失为
。虽然
可以平衡positive/negative的重要性,但是对于easy/hard的样本是无法区分的。Focal loss则通过改变loss function来达到这一目的,如下

其中
。在上图中可以看到不同的取值的loss曲线。由上式可知当样本被误分类时,
很小,前面的系数接近1,loss不会受到影响。如果
趋近于1,那么系数趋近于0,相当于为loss降低了权重。除此之外,
也对系数进行调整,如果
,那么
的loss会降低100倍,
的loss会降低1000倍。这样反过来增加了误分类样本的权重(如果
,
的loss最多降低4倍)。在实际应用中,作者也加入了一个平衡因子,这对最终的结果有提高
作者在文中还提到了模型初始化。对于二分类,一般的模型初始化会使得正负样本的概率相等。由于类别不平衡,负样本的loss会占总体loss的很大比例。作者提出在训练初始阶段对正样本的概率估计“prior”的概念,用
来表示,通过设置它来达到正样本的输出概率低的效果,比如为0.01。实际操作中,出了最后一个用于分类的卷积层,其余卷积层的参数初始化为bias
,而最后一层
,在实验中
为0.01。具体的实验结果和网络结构大家可以阅读论文,此处不再提及。

Gradient Harmonizing Mechanism(GHM)

Focal Loss虽然有很好的效果,但是loss中的两个超参需要精细的调整,除此之外,它也是一个不会随着数据分布变化的静态loss。在第二篇文章中,作者指出类别不平衡可以总结为“imbalance in difficulty”而“imbalance in difficulty”就是gradient norm分布的不平衡。如果一个正样本被分类正确,那么模型从该样本的梯度中受益很小,而一个误分类的样本对模型的影响很大。整体来看,数据巨大的负样本时容易被分类的,hard example通常是正样本。无论是hard/easy还是positive/negtive 不平衡,都可以用gradient norm来表示。如下图

44cd04e8188f9ed5599876c4ea85a2de.png

左边是一个收敛模型的gradient norm的分布,中间是通过Focal Loss和GHM之后的梯度修正,右边是不同的gradient norm的梯度贡献。可以看出easy样本的梯度贡献会淹没hard样本。除此之外,作者还发现有非常大的gradient norm(very hard example)的占比比中间的样本要打,作者认为这些是outlier。通过对gradient norm的分析,作者提出Gradient Harmonizing Mechanism来对loss函数进行修正。作者提出针对分类loss的GHM-C和针对box regression的GHM-R,这两个loss均和训练中的梯度密度有关,而梯度密度是不断变化的,所以这两种loss是动态loss,这里我们只关注GHM-C。

作者用

表示gradient norm,其值表示样本对整体梯度的贡献。

其中

是模型输出的概率,
是样本标记。作者定义了梯度密度函数
是第k个样本的gradient norm,

的梯度密度就是落在以
为中心长度为
区域内的样本个数。接下来作者提出梯度密度修正参数,
是样本总数。我们可以将
写为
,分母表示第i个样本的近邻数所占的比例。有了以上定义,GHM-C loss为

为了计算梯度密度,最简单的算法时间复杂度为

,如果并行的化,每个计算单元也有N的计算量。对gradient norm进行排序的最好的算法复杂度为
,然后用一个队列去扫描样本得到梯度密度的时间复杂度为
。基于排序的方法即使并行也不能较快的计算,因为N往往是
甚至
,仍然是非常耗时的。作者提出一种方法来近似计算梯度密度。将
的空间划分为
个unit region,用
表示第j个unit region,
表示
中的样本数,
表示
所在unit region的下标。近似的梯度密度函数为

近似的修正参数为

利用

来计算loss。总体的时间复杂度为
,并行的话每个计算单元的计算量为M。

因为loss的计算是基于梯度密度函数,而梯度密度函数根据一个batch中的数据得到,一个batch的统计结果是有噪声的。与batch normalization相同,作者用Exponential moving average来解决这个问题,也就是

具体的实验结果和网络结构大家可以阅读论文,此处也不再提及。

总结

Focal Loss和Gradient Harmonizing Mechanism在目标检测中可以很好的处理类别不平衡问题,那么在其他领域是否也会有效果。比如在pairwise的推荐中,肯定也会有easy pair和hard pair,在一些业务场景下这些也是不平衡的,是否可以用这种方法来更好的提升效果,这个也待笔者尝试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值