努力学习努力工作!
Improving Calibration for Long-Tailed Recognition
论文内容
Intuition
要解决的问题:分类
现有方法没有校准,就是说训练分布和测试分布之间的差异很大,现有方法校准做的不好或没有校准。这个论文主要针对2阶段方法。
Expected calibration error (ECE) ,
ECE
=
∑
b
=
1
B
∣
S
b
∣
N
∣
acc
(
S
b
)
−
conf
(
S
b
)
∣
×
100
%
\text{ECE} = \sum_{b=1}^\text{B} \frac{|S_b|}{N}|\text{acc}(S_b)-\text{conf}(S_b)|\times 100 \%
ECE=b=1∑BN∣Sb∣∣acc(Sb)−conf(Sb)∣×100%
S
b
S_b
Sb是预测分数在Bin-b的样本集合。
acc
(
⋅
)
\text{acc}(\cdot)
acc(⋅)是准确率,
conf
(
⋅
)
\text{conf}(\cdot)
conf(⋅)是预测置信度。
问题1:这篇论文发现在长尾数据上训练模型会对不齐,且过度自信,就这个ECE很大。其他两阶段方法也会过度自信。
问题3:其他两阶段方法没有考虑数据集偏差或者说域迁移。因为阶段一和阶段二用的是不同分布的数据,这样的数据联合分布可能不一样,即
P
D
l
(
x
,
y
)
≠
P
D
c
(
x
,
y
)
P_{D_l}(x,y)\neq P_{D_c}(x,y)
PDl(x,y)=PDc(x,y)。
D
l
D_l
Dl和
D
c
D_c
Dc分别指长尾分布和类别平衡分布。
具体做法
一个发现:mixup可以提升表示学习的能力,但是对分类器学习学习有不好的影响或者帮助有限。不过发现了mixup对尾部类提升有一点儿帮助,可以提升分类器在尾部类的权重的模(见论文Figure 2)。
如何进行分布对齐的呢?
在log(softmax)外头乘了一个数(叫它标签平滑参数吧),这个数和类别样本个数成反比。
(我看着还是像re-weighting方法。)
公式3(a-c)给出了3种形式的这个反比关系,包括凸函数、线性函数、凹函数。这个数标签平滑参数是为了防止头部类过度自信(over-confidence)。
然后,提出了一个调整分类器权重的方法,结合了cRT(classifier re-training )和LWS(learnable weight scaling)
z
=
diag
(
s
)
(
r
W
+
Δ
W
)
T
x
z=\text{diag}(s)(rW+\Delta W)^Tx
z=diag(s)(rW+ΔW)Tx
这个公式就是cRT和LWS的结合,通过调整
s
s
s和
r
r
r可以让它变成cRT或者LWS。
Δ
W
\Delta W
ΔW是阶段2调整的分类器权重,权重偏移量。
还有个问题,就是阶段2训练和阶段1共用网络参数,BN层也共用。但是数据分布不一样了,均值方差就该变了,共用有点儿不合理,所以这篇论文在阶段2把BN层也更新了。
总结
这篇论文思路很简单,对decoupling那篇论文的进一步改进。实验很充分。要学会分析一个方法中存在哪些细小的问题可以进一步改进。就像这篇论文,对损失函数稍微调整了,然后是把训练分类器的方法组合了一下,再就是注意到了BN层的小问题。