论文标题:Class-Balanced Loss Based on Effective Number of Samples
论文链接:https://arxiv.org/pdf/1901.05555.pdf
论文代码:https://github.com/richardaecn/class-balanced-loss(tensorflow)
1、论文主要内容
作者通过数学归纳法推导训练时每类有效的样本数量 ( ( 1 − β ) / ( 1 − β n i ) \bm{(1 − \beta)/(1 − \beta^{n_{i}} )} (1−β)/(1−βni))]( n i n_{i} ni代表训练时第 i i i类的样本数),接着使用该数值的倒数作为类别平衡损失的权重对损失进行加权。并且将其应用于softmax、sigmoid和focal( γ \bm{\gamma} γ)交叉熵的损失函数中,实验将所提出的类别平衡损失函数应用在不同的不同平衡因子的CIFAR10和CIFAR100中,同时也将其应用在ImageNet-LT和iNaturalist (2017/2018)。
论文中所提出了三个结合每类有效的样本数量( ( 1 − β ) / ( 1 − β n i ) \bm{(1 − \beta)/(1 − \beta^{n_{i}} )} (1−β)/(1−βni))的softmax、sigmoid和focal交叉损失函数具体公式如下:
C
B
s
o
f
t
m
a
x
(
z
,
y
)
=
−
(
1
−
β
)
/
(
1
−
β
n
i
)
l
o
g
(
e
x
p
(
z
y
)
/
∑
j
=
1
C
e
x
p
(
z
j
)
)
CB_{softmax}(\textbf{z},y) = -(1 − \beta)/(1 − \beta^{n_{i}})log(exp(z_{y}) / ∑^{C}_{j=1} exp(z_{j}))
CBsoftmax(z,y)=−(1−β)/(1−βni)log(exp(zy)/j=1∑Cexp(zj))
C
B
s
i
g
m
o
i
d
(
z
,
y
)
=
−
(
1
−
β
)
/
(
1
−
β
n
i
)
l
o
g
(
1
/
∑
j
=
1
C
(
1
+
e
x
p
(
z
j
t
)
)
)
CB_{sigmoid}(\textbf{z},y) = -(1 − \beta)/(1 − \beta^{n_{i}})log(1 / ∑^{C}_{j=1}(1 + exp(z_{j}^{t})) )
CBsigmoid(z,y)=−(1−β)/(1−βni)log(1/j=1∑C(1+exp(zjt)))
C
B
f
o
c
a
l
(
z
,
y
)
=
−
(
1
−
β
)
/
(
1
−
β
n
i
)
∑
j
=
1
C
(
1
−
p
i
t
)
γ
l
o
g
(
p
i
t
)
)
)
CB_{focal}(\textbf{z},y) = -(1 − \beta)/(1 − \beta^{n_{i}})∑^{C}_{j=1} (1 - p^{t}_{i})^{\gamma} log(p^{t}_{i})))
CBfocal(z,y)=−(1−β)/(1−βni)j=1∑C(1−pit)γlog(pit)))
2、实验结果
在CIFAR10和CIFAR100上的识别结果如下图所示:
在CIFAR10和CIFAR100上分别对参数 β \beta β进行消融实验,CIFAR10数据集最佳的参数值为 β \beta β = 0.9999,因为类别少,类别间的重叠程度较低。CIFAR100则是在0.99时识别效果较好,因为CIFAR100中很多类别是细分类,有样本在特征空间中重叠的情况(某一个类为其他类的一个子集,即有些类别特征为其他类别特征的一部分)。
在CIFAR的实验设置中,使用sigmoid交叉熵损失和focal损失的情况下,将最后一层(分类层)的偏置初始化为 b = − l o g ( ( 1 − π ) ) / π ) b = -log ( ( 1-\pi )) / \pi ) b=−log((1−π))/π),实验将 π \pi π设置为类别数的倒数。此外,对最后一层(分类层)的偏置 b b b去掉 L 2 L2 L2正则化(权重衰减)。其他情况下,最后一层偏置初始化为0。
在ImageNet(ILSVRC 2012)和iNaturalist 2017/2018数据集上,参数 γ = 0.5 \bm{\gamma = 0.5} γ=0.5和 β = 0.999 \bm{\beta = 0.999} β=0.999的识别结果如下图所示: