样本不权衡&easy和hard样本:Focal loss和Gradient Harmonizing Mechanism

介绍

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

这两种方法都是针对目标检测任务提出的,首先简要的介绍下背景。目标检测目前有两种主流方法,分别是two-stage和one-stage。one-stage的方法直接生成大量的图像区域然后直接进行分类,代表性的工作有OverFeat,SSD和YOLO。one-stage方法的最有挑战性的问题是easy和hard样本还有正负样本的严重不平衡。two-stage的方法将目标检测分为两步,首先生成候选集合,该候选集合过滤了绝大多数的负样本,然后用一个分类器进行分类。代表性的工作有R-CNN,Fast R-CNN, Faster R-CNN和Mask R-CNN等等。

two-stage有最好的目标检测结果,但是one-stage速度更快。这两类方法都有类别不平衡的问题,two-stage通过Selective Search,EdgeBoxes,DeepMask和RPN等手段来解决类别不平衡,通常候选区域的个数为1-2k,在分类中可以固定foreground和background的比例或者用online hard example mining来维持样本的均衡。one-stage的方法会有100k个不同尺寸的location,在训练过程中容易被区分的background占了大多数,虽然可以用一些相似的启发式采样方法,但是这会早成训练的低效。OHEM直接抛弃大多数样本会造成训练不平衡。为此,第一篇文章提出Focal loss,并且将其应用在one-stage的方法中,通过loss function来解决极端的类别不平衡问题(1:1000)。

Focal loss

GHM

但是Focal loss有两个超参数,调整起来十分费力。并且是个静态loss,不会自适应于数据的分布,在训练的过程中会一直的变化。GHM首先指出两种不和谐的基本效果可以用梯度来概括,并提出了一种新颖的梯度调整机制(GHM)来作为限制,这种理论可以很容易的嵌入到损失函数、例如分类和回归损失函数cross-entropy,smooth-L1 loss。为此,设计了两个称为GHM-C和GHM-R的新型损失函数,以分别平衡梯度流。 消融研究表明,无需费力的超参数调整,GHM-C和GHM-R都可以为one-stage检测器带来实质性改进。
在这里插入图片描述

Gradient Harmonizing Mechanism

回忆交叉熵损失:
在这里插入图片描述
x的梯度为:
在这里插入图片描述
定义g:
在这里插入图片描述
g的值表示样本的属性(easy/hard),意味着对全局梯度的影响。尽管梯度的严格定义应该是在整个参数空间,但是g是样本梯度的成比例的norm,在这片论文中g被称作gradient norm。
不同属性的样本(hard/easy,pos/neg)可以由 gradient norm的分布来表示。在图1左中可以看出变化非常大。具有小gradient norm的样本具有很大的密度,它们对应于大量的负样本。由于大量的简单负样本,我们使用log轴来显示样本的分数,以演示具有不同属性的样本的方差的细节。尽管一个easy样本在全局梯度上相比hard样本具有更小的贡献,但是大量的easy样本的全部贡献会压倒少数hard样本的贡献,所以训练过程变得无效。除此之外,论文还发现具有非常大gradient norm的样本(very hard examples)的密度微大于中间样本的密度。并且发现这些very hard样本大多数是outliers,因为即使模型收敛它们始终稳定存在。如果收敛模型被强制学习分类这些outliers,对其他样本的分类可能不会那么的准确。

根据gradient norm分布的分析,GHM关注于不同样本梯度贡献的协调。大量由easy样本产生的累积梯度可以被largely down-weighted并且outliers也可以被相对的down-weighted。最后,每种类型的样本分布将会使平衡的训练会更加的稳定和有效。

Gradient Density:

为了处理gradient norm分布不平衡的问题,根据gradient density来协调处理(样本的密度 w.r.t 梯度norm,称作gradient density):
在这里插入图片描述
在这里插入图片描述
g k g_k gk是第k个样本的梯度。g的梯度密度指的是,在以g为中心长度为 ϵ \epsilon ϵ的区域内的样本数量,并由区域的合理长度归一化。梯度密度协调参数为:
在这里插入图片描述
其中N是所有样本的数目。为了更好的理解,可以被写成:
在这里插入图片描述
分母是一个正则化项,表示与第i个样本具有近邻梯度的样本分数。如果样本根据梯度是均匀分布的, G D ( g i ) = N GD(g_i)=N GD(gi)=N对于任意的 g i g_i gi,每个样本具有相同的 β i = 1 \beta_i=1 βi=1。否则,具有大的密度的样本将会相对的降低权重。

GHM-C Loss

将GHM嵌入到分类损失中通过将 β i \beta_i βi作为i个样本的损失权重,损失函数的梯度密度的均衡形式为:
在这里插入图片描述
图三展示了不同损失的梯度norm,为了方便采用CE的原始梯度norm: g = ∣ p − p ∗ ∣ g=|p-p*| g=pp,作为x轴因为密度是根据g计算的。可以看出FL与GHM-C具有相似的趋势,代表具有最佳参数的FL与均匀梯度协调很相似。但是GHM-C具有一个Focal loss忽视了的优点,降低了outliers的权重。
在这里插入图片描述
在实际中,梯度的更改可以被等同的实施通过重新表示损失函数,将GHM嵌入到分类损失中,GHM-C loss,其不需要超参数调整。。GHM-C loss使得大量very easy样本被很大程度上降低权重并且outliers也被轻微的降低权重,同时解决了贡献不平衡和outliers问题。从图1的右侧可以看出GHM-C协调了不同group样本的总的梯度贡献。由于在每次迭代都会计算梯度密度其依赖于mini-batch中的样本分布,所以样本的权重根据g是不固定的,但是自适应于当前模型和当前batch的数据。GHM-C是一个动态的loss可以适应于每个batch数据分布的改变还有对模型的更新,使得训练更加的鲁棒和有效。

Unit Region Approximation

为了计算梯度密度,最简单的算法时间复杂度为 O(N^2) ,如果并行的化,每个计算单元也有N的计算量。对gradient norm进行排序的最好的算法复杂度为 O(NlogN) ,然后用一个队列去扫描样本得到梯度密度的时间复杂度为 O(N) 。基于排序的方法即使并行也不能较快的计算,因为N往往是 1 0 5 10^5 105 甚至 1 0 6 10^6 106 ,仍然是非常耗时的。作者提出一种方法来近似计算梯度密度。将 g 的空间划分为 M = 1 ϵ M=\frac{1}{\epsilon} M=ϵ1 个unit region,用 r j r_j rj 表示第j个unit region, R j R_j Rj 表示 r j r_j rj中的样本数, ind(g) 表示 g 所在unit region的下标。近似的梯度密度函数为:
在这里插入图片描述
近似的修正参数为 :在这里插入图片描述
利用 β ^ i \hat\beta_i β^i 来计算loss。总体的时间复杂度为 O ( M N ) O(MN) O(MN),并行的话每个计算单元的计算量为M。

参考资料:

  1. 样本贡献不均:Focal Loss和 Gradient Harmonizing Mechanism
  2. https://arxiv.org/pdf/1811.05181.pdf
  3. Focal loss论文详解
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值