Abstract
真实世界的数据经常显示出长尾分布,普通的深度模型倾向于严重偏向大多数类。为了解决这个问题,最先进的方法通常采用混合专家(MoE)来关注长尾分布的不同部分。这些方法的专家具有相同的模型深度,这就忽略了不同的类对于不同深度模型的拟合可能有不同的偏好。为此,我们提出了一种新的基于moe的知识挖掘自异构集成方法。我们首先提出了深度知识融合(depth - wise Knowledge Fusion, DKF)方法,将每个专家在一个网络中不同浅部和深度部之间的特征进行融合,使得专家在表示方面更加多样化。在DKF的基础上,我们进一步提出了动态知识转移(Dynamic Knowledge Transfer, DKT),以减少最困难的负面类对我们的MoE框架中尾部类的影响。因此,长尾数据的分类精度可以得到显著提高,特别是对尾类。
Introduction
Related work
Methodology
DKF从不同模型深度的专家那里汇集了不同的知识,而DKT则是专门为在不同专家之间传递知识而设计的。
Preliminaries
假设数据集有C种类别,训练集总的数据个数为N,各类别数据个数分别为
n
1
n_{1}
n1,
n
2
n_{2}
n2,
n
3
n_{3}
n3,……,
n
C
n_{C}
nC,且
n
1
n_{1}
n1>
n
2
n_{2}
n2>
n
3
n_{3}
n3>……>
n
C
n_{C}
nC.长尾学习的目的是在这些长尾数据的基础上,通过同等对待每个类的重要性来建立一个深层次的模型。
假设一个θ参数化的深度神经网络包含M个专家。通常,MoE的网络体系结构使前几层为所有专家共享,后几层为每个专家专有。我们以ResNet为例。我们将ResNet模型的共享层表示为M专家的S阶段。仅采用最后阶段作为每个专家的专属参数。对于专家m,我们将其专有阶段的参数表示为
θ
S
+
1
m
\theta^{m}_{S+1}
θS+1m,其后跟随一个参数为
φ
m
\varphi^{m}
φm的线性层。对于给定的数据x,共享网络阶段s的中间特征
f
s
f_{s}
fs计算为:
f
s
=
θ
s
o
…
…
o
θ
2
o
θ
1
f_{s}=\theta_{s} o …… o \theta_{2} o \theta_{1}
fs=θso……oθ2oθ1
这个o 表示的含义是:
h
o
g
(
x
)
=
h
(
g
(
x
)
)
h\,o\,g(x)=h(g(x))
hog(x)=h(g(x)),共享网络后,由专家m生成的输出logits
计算如下:
z
m
=
φ
m
(
f
s
+
1
m
)
z^{m}=\varphi^{m}(f^{m}_{s+1})
zm=φm(fs+1m)
在这里,
f
s
+
1
m
=
θ
K
+
1
m
(
f
S
)
f^{m}_{s+1}=\theta^{m}_{K+1}(f_{S})
fs+1m=θK+1m(fS)表示专家m提取的独有特征,
f
S
f_{S}
fS表示网络最后共享阶段提取的特征。在这个MoE框架中,我们将独占特征
f
s
+
1
m
f^{m}_{s+1}
fs+1m表示为高级特征,并将其前面的特征fs, S = 1,…S为中间特征。训练过程中,在得到softmax概率后,可以计算每个专家的交叉熵损失。在进行模型推理时,将每个类的所有专家之间的logit相加,以其中logit最大的类作为MoE模型预测。
Depth-Wise Knowledge Fusion
知识蒸馏是长尾学习中MoE方法常用的一种优化策略。然而,这些方法主要侧重于从logit的蒸馏而不是中间特征。在知识蒸馏领域,目前最先进的方法主要采用基于特征的方式,中间特征起着重要作用。这是缺乏考虑中间特性,特别是在基于moe的方法中,其中所有专家通常共享网络的同一部分。从图1中可以看出,来自不同深度网络的特征可以对长尾分布的不同部分提供比较性能:深度特征在头部类上表现出较好的性能,而浅层特征对于某些尾部类更有效。
因此,为了充分利用MoE框架中知识蒸馏过程中的中间特征,我们提出了深度知识融合(Depth-wise knowledge Fusion, DKF)方法,将共享网络中不同深度的特征与每个专家提取的高级特征进行聚合。为了简化,我们假设专家的数量M小于或等于共享阶段的数量,即M≤S,使得每个专家都可以利用网络中某一特定深度的中间特征。然后,我们可以在fs中分配m个中间特征集,s = 1,…, S给各位专家。由于不同的中间特征具有不同的大小,一个专家不能简单地将它们与指定的特征直接连接或相乘.因此,我们根据中间特征的深度增加几个卷积层进行下采样,实现fs与专家m提取的高级特征
f
S
+
1
m
f^{m}_{S+1}
fS+1m之间的特征对齐。假设对齐后的中间特征为ˆfs。在DKF中,我们提出通过乘法将中间特征与高级特征融合,然后通过
φ
m
\varphi^{m}
φm将它们转化为logit:
Z
m
=
φ
m
(
f
^
s
⊗
f
S
+
1
m
)
Z^{m}=\varphi^{m}(\hat{f}_{s}\otimes f^{m}_{S+1})
Zm=φm(f^s⊗fS+1m)
⊗
\otimes
⊗表示Hadamard product,如图2所示,将一个阶段的中间特征分配给一个专家,并与该专家的高级特征进行聚合。
为了充分利用DKF的多样性特征,我们可以对任意两个专家进行知识蒸馏,使他们相互学习。由于MoE中的每个专家通常都有位于网络最深处的相同架构,因此可以保证每个专家都可以扮演教师或学生的角色。这使得任何两个专家之间都可以进行知识的相互升华,为专家们积累不同深度的知识提供了完美的机会。
L
m
u
=
∑
j
=
1
M
∑
k
≠
j
M
K
L
(
p
j
∣
p
k
)
L_{mu}=\sum_{j=1}^{M}\sum_{k\ne j}^{M}KL(p_{j}\mid p^{k})
Lmu=j=1∑Mk=j∑MKL(pj∣pk)
其中
p
j
和
p
k
p_{j}和 p^{k}
pj和pk分别表示第j类和第k类的softmax概率。这保证了任何两个专家之间的知识全面传递。
该方法具有两个主要优点:(1)动态融合了来自不同深度网络的中间信息和来自专家的语义信息,无需直观的分离就能将不同的长尾分布偏好隐含地分配给专家;(2)随着更多的低级信息被聚合,基于logit的知识蒸馏可以更有效,因为每个专家的输出具有对应于模型的不同深度的更多多样性。
Dynamic Knowledge Transfer
知识蒸馏的有效性很大程度上依赖于non-target logits,,即这种logit不属于class y,除了target logit之外它还提供类似的语义信息。它对于长尾学习特别有用,因为尾类中的样本的target logits,在训练期间通常相对较小,使得non-target logits,可以提供与target label相当的信息量。使用DKF时,不同专家的non-target logits更加多样化,因为每个专家由于有着不同的模型深度,它们可以提取具有不同语义信息的特征。在长尾分布下,知识提炼过程中可能会出现一种需要仔细考虑的情况。模型将偏向头部类,使得尾部类中的一些样本将对头部类具有高预测置信度,尤其是当它们共享相似的语义特征时。具有高置信度logits的非目标类被称为硬负类。对于尾类样本,如果专家对最难的负类(可能是头类)有共识,则进行知识蒸馏是危险的,因为可能会传递误导性信息。
基于上述分析,我们提出了动态知识转移(Dynamic Knowledge Transfer, DKT),去解决利用所提出的DKF进行知识蒸馏时最困难的负类问题。除了通过交叉熵损失使用所有类别的对数外,DKT只考虑所有专家的non-
target predictions,并在其中动态地选出一名教师,负责最难的负类别。对于一个label为
y
y
y的样本
x
x
x,其对应的专家m的输出logits为:
Z
m
=
[
z
1
m
,
z
2
m
,
…
,
z
C
m
]
Z^{m}=[z^{m}_{1},z^{m}_{2},\dots,z^{m}_{C}]
Zm=[z1m,z2m,…,zCm]。我们首先将这个logits解耦为一个target logit
z
y
m
z^{m}_{y}
zym和non-target logits
[
z
I
1
m
,
z
I
2
m
,
…
,
z
I
C
−
1
m
]
[z^{m}_{I_{1}},z^{m}_{I_{2}},\dots,z^{m}_{I_{C-1}}]
[zI1m,zI2m,…,zIC−1m]。其中
I
=
[
I
1
,
I
2
,
…
,
I
C
−
1
]
I=[I_{1},I_{2},\dots,I_{C-1}]
I=[I1,I2,…,IC−1]存储了非目标类别的索引。在对数解耦后,将非目标集引入到一个新的C - 1类知识蒸馏问题中。对于每个非目标类可以计算出所有专家的平均对数
[
z
ˉ
I
1
,
z
ˉ
I
2
,
…
,
z
ˉ
I
C
−
1
]
[\bar{z}_{I_{1}},\bar{z}_{I_{2}},\dots,\bar{z}_{I_{C-1}}]
[zˉI1,zˉI2,…,zˉIC−1] 。其中
z
ˉ
I
1
=
1
M
∑
m
=
1
M
z
I
i
m
\bar{z}_{I_{1}}=\frac{1}{M}\sum_{m=1}^{M}z_{I_{i}}^{m}
zˉI1=M1m=1∑MzIim
对于
i
=
1
,
…
,
C
−
1
i=1,\dots,C-1
i=1,…,C−1。我们可以将
m
a
x
i
{
z
ˉ
I
1
}
max_{i}\{\bar{z}_{I_{1}}\}
maxi{zˉI1}确定为所有非目标类中最困难的负类,并通过MoE的联合预测将其确定为最难的负类。要通过softmax suppression有效抑制共识最难负类的logit,就需要教师能够综合利用非目标知识。具体来说,DKT在所有专家中选择最大的non-target logit记作
z
^
I
i
\hat{z}_{I_{i}}
z^Ii
z
^
I
i
=
m
a
x
m
=
1
,
⋯
,
M
{
z
I
i
m
}
\hat{z}_{I_{i}}=max_{m=1,\cdots,M}\{z^{m}_{I_{i}}\}
z^Ii=maxm=1,⋯,M{zIim}
对于
i
=
1
,
…
,
C
−
1
i=1,\dots,C-1
i=1,…,C−1。在C−1种非目标类上进行softmax后,这个最大non-target logit的large value可以有效的抑制这个公认的最困难负类的logit值。利用DKF的多样性的优势,不同专家在不同的非目标对数上可能出现高值。因此,最大non-target logit可以动态抑制C−1非目标类在softmax后的公认的最难负logit。将共识最难负与最大非目标对数相结合,我们可以形成一组称为grand teacher的非目标对数:
对于
i
=
1
,
…
,
C
−
1
i=1,\dots,C-1
i=1,…,C−1。请注意,grand teacher只在目标类不参与的情况下,在非目标类中压制最困难的负面类。在选出grand teacher后,grand teacher与各专家之间进行非目标知识的提炼。grand teacher和students的非目标概率由以下公式计算:
对于
i
=
1
,
…
,
C
−
1
i=1,\dots,C-1
i=1,…,C−1 和
m
=
1
,
⋯
,
M
m=1,\cdots,M
m=1,⋯,M。因此,SHIKE专家对非目标对数的知识蒸馏可以表示为:
对于一个特定的样本,其相应输出的最困难的负面可能不仅在专家之间,而且在整个训练过程中也会有所不同。DKT可以在不影响target logit的情况下,动态选择专家中最困难的负数,降低其概率。
Overall Training Paradigm
SHIKE采用了一种解耦的训练方案,该方案分别优化了特征提取器和分类器,因为已有研究表明,针对长尾数据的类平衡联合训练策略可能会损害表示学习。对于特征提取器的训练,我们采用DKF在式(4)中的互知识蒸馏损失Lmu和DKT在式(9)中的非目标知识蒸馏损失Lnt。同时,为了保留原始分布的信息用于表示学习,还对每个专家应用了crossentropy loss Lce。因此,将上述表示学习阶段的三个损失函数组合为一个整体的优化目标:
其中α和β是权衡超参数。对于分类器训练,目标是用冻结的特征提取器训练一个平衡的分类器。我们利用平衡软最大交叉熵(BSCE)[49]作为损失函数Lbsce,简单地为每个专家优化一个新的分类器:
在分类器再训练阶段不考虑知识蒸馏,因为这会促使分类器变得相似,不利于专家进行联合预测。
Experiments
Conclusion
提出了一种基于知识挖掘的自异构集成方法用于长尾视觉识别。该方法由深度知识融合(DKF)和动态知识转移(DKT)两部分组成。DKF将深度的中间特征与高级特征融合在一起,从而为专家提供更有信息量的特征,以适应长尾分布。DKT利用多样化专家间的非目标知识,减少最困难的负向表示学习,进一步提高尾类的性能。在四个基准上进行了广泛的实验,SHIKE与最先进的同行相比取得了优异的性能。