2018深度神经网络协作学习 (Collaborative learning for deep neural networks)
为提高模型对标签噪声的泛化性和健壮性,在无需额外推理成本的情况下引入协作学习 (Collaborative learning),其同一网络的多个分类器头在相同的训练数据上进行同步训练。它从辅助训练、多任务学习和知识蒸馏中获得优势,其包含两个重要的机制:
1)来自不同分类器头的多个视图对同一实例的共识 (Consensus) 为每个分类器提供补充信息和正则化,从而提高泛化能力;
2)中间层表示 (Intermediate-level representation, ILR) 共享反向传播重缩放 聚合的来自所有头部的梯度流,这不仅降低了训练计算复杂度,而且有助于对共享层的监督。
@article{Song:2018:110,
author = {Guo Cong Song and Wei Chai},
title = {Collaborative learning for deep neural networks},
journal = {Advances in Neural Information Processing Systems},
volume = {31},
pages = {1--10}
year = {2018}
}
协作学习的框架包含三个主要部分:
1)在训练图中生成一组分类器头;
2)制定学习目标;
3)一组分类器的协作优化。
与辅助训练的相同点如下:
1)训练期间在原始网络图中添加几个新的分类器头;
2)推理阶段只保留原始框架,其他的部分则被抛弃。
与辅助训练的不同点在于,每个分类器头在图结构方面有与原始网络相同的网络:
1)不需要为辅助分类器设计额外的网络;
2)所有头的结构对称,因此不需要与损失函数相关的、额外的不同权重来平衡注入的反向传播误差流,因为每个头的目标的相同权重对于训练是最佳的。
图1展示了训练图中几种用于创建分类器组的模型。(a) 是一个用于训练的目标网络,表示为
z
=
g
(
x
;
θ
)
z=g(x;\theta)
z=g(x;θ),其中
g
g
g由图结构决定,以及
θ
\theta
θ表示网络参数。为了更好地解释以上模式,假设网络
g
g
g表示三个子网络的级联:
g
(
x
;
θ
)
=
g
3
(
g
2
(
g
1
(
x
;
θ
1
)
;
θ
2
)
;
θ
3
)
(1)
\tag{1} g(x;\theta)=g_3(g_2(g_1(x;\theta_1);\theta_2);\theta_3)
g(x;θ)=g3(g2(g1(x;θ1);θ2);θ3)(1)其中
θ
=
[
θ
1
,
θ
2
,
θ
3
]
\theta=[\theta_1,\theta_2,\theta_3]
θ=[θ1,θ2,θ3],以及
θ
i
\theta_i
θi包含了子网络
g
i
g_i
gi的所有参数。(b) 中的每个头仅仅是原始网络的一个新的实例。头
h
h
h的输出是
z
(
h
)
=
g
(
x
;
θ
(
h
)
)
z^{(h)}=g(x;\theta^{(h)})
z(h)=g(x;θ(h)),其中
θ
(
h
)
\theta^{(h)}
θ(h)是头
h
h
h网络参数的一个实例。其他模式允许所有头在相同的低层架构中共享ILR,如 ( c)。这样的结构与多任务学习是非常相似的,其中不同的监督任务共享相同的输入,以及一些ILR。而协作学习的所有头有相同的监督任务,其可以表示为
z
(
h
)
=
g
3
(
g
2
(
g
1
(
x
;
θ
1
)
;
θ
2
(
h
)
)
;
θ
3
(
h
)
)
z^{(h)}=g_3(g_2(g_1(x;\theta_1);\theta_2^{(h)});\theta_3^{(h)})
z(h)=g3(g2(g1(x;θ1);θ2(h));θ3(h)),其仅仅有
θ
1
\theta_1
θ1被所有头共享。此外,多头能够利用多个分层ICR,如 (d)。分层结构类似于二叉树,其同一层的不同分支是相互的复制。在推理阶段,只需保持一个节点及其依赖节点,其余的则可抛弃。因此,推理图是原始图
g
g
g的特例。

图1:用于训练的多头模式,三个颜色分别表示公式1中的子网络
g
1
g_1
g1、
g
2
g_2
g2,以及
g
3
g_3
g3
训练内心大小与层的数量有着粗略的比例关系。在多示例模式中,整个训练图中参数的数量与头的数量成正比。显然与没有共享的多个实例相比,ILR共享能够有效减少内存消耗并加速训练。
协作学习的主要思想是每个头部都从真实标签中学习,也通过训练过程从群体中学习。本文关注多分类问题。对于头
h
h
h,分类器的逻辑向量表示为
z
=
[
z
1
,
z
2
,
…
,
z
m
]
t
r
z=[z_1,z_2,\dots,z_m]^{tr}
z=[z1,z2,…,zm]tr。相应的带有温度
T
T
T的softmax函数定义为:
σ
i
(
z
(
h
)
;
T
)
=
exp
(
z
i
(
h
)
/
T
)
∑
j
=
1
m
exp
(
z
i
(
h
)
/
T
)
\sigma_i\left(z^{(h)};T\right)=\frac{\exp\left(z_i^{(h)}/T\right)}{\sum\limits_{j=1}^m\exp\left(z^{(h)}_i/T\right)}
σi(z(h);T)=j=1∑mexp(zi(h)/T)exp(zi(h)/T) 使用更高值的
T
T
T可以生成一个覆盖类别的更软的概率分布。每个头
h
h
h的损失函数定义为:
L
(
h
)
=
β
J
h
a
r
d
(
y
,
z
(
h
)
)
+
(
1
−
β
)
J
s
o
f
t
(
q
(
h
)
,
z
(
h
)
)
(3)
\tag{3} L^{(h)}=\beta J_{hard}(y,z^{(h)})+(1-\beta)J_{soft}(q^{(h)},z^{(h)})
L(h)=βJhard(y,z(h))+(1−β)Jsoft(q(h),z(h))(3)其中
β
∈
(
0
,
1
]
\beta\in(0,1]
β∈(0,1]。
J
h
a
r
d
J_{hard}
Jhard是标签
y
y
y的零一编码与模型输出在温度
T
=
1
T=1
T=1时的交叉熵。
h
h
h的软标签
q
(
h
)
q^{(h)}
q(h)则是所有其他头预测的共识:
q
(
h
)
=
σ
(
1
H
−
1
∑
j
≠
h
z
(
j
)
;
T
)
q^{(h)}=\sigma\left(\frac{1}{H-1}\sum_{j\neq h}z^{(j)};T\right)
q(h)=σ⎝
⎛H−11j=h∑z(j);T⎠
⎞其结合了相同数据上的多个视角,且包含非真实标签的附加信息。因此,有:
J
s
o
f
t
(
q
(
h
)
,
z
(
h
)
)
=
−
∑
i
=
1
m
q
i
(
h
)
log
(
σ
i
(
z
(
h
)
;
T
)
)
J_{soft}\left(q^{(h)},z^{(h)}\right)=-\sum_{i=1}^mq_i^{(h)}\log\left(\sigma_i\left(z^{(h)};T\right)\right)
Jsoft(q(h),z(h))=−i=1∑mqi(h)log(σi(z(h);T))其可以被看作是种群平均预测与每个头预测之间的距离度量。最小化优化目标的目的是转移软标签的信息为逻辑值并正则化训练网络。
除了性能优化,协作学习的另一个设计准则是去保证训练过程中的超参数,例如SGD的类型、正则化,以及学习率,这些和单独学习是一样的。因此,协作学习可以简单地放置于单独学习之上,这里的优化则主要涉及几个新概念,例如分类器的组,以及ILR共享。
由于优化中的多头相互牵连,一个简单直接地参数更新方法是逐一更新。事实上,交替优化在生成对抗网络中很常见,其生成器和鉴别器是轮流更新的。然而,交替优化有以下缺点:
1)降低速度,因为参数更新后每个头需要重新计算预测;
2)降低收敛,有研究表明同步优化具备更好的收敛速度与性能。
因此,基于总损失的所有训练图中的参数将由SGD同步优化,该损失是带有正则项的所有头损失之和:
L
=
∑
h
=
1
H
L
(
h
)
+
λ
Ω
(
θ
)
(4)
\tag{4} L=\sum_{h=1}^HL^{(h)}+\lambda\Omega(\theta)
L=h=1∑HL(h)+λΩ(θ)(4) 建议在应用协作学习时保持与单独训练相同的正则化及其超参数。在引入新的训练方法时,避免在实践中进行不必要的超参数搜索。
首先描述一个重要的的关于ICR共享稳定性问题。假设有 H H H个头共享如图2 (a) 中的子网络,其中 θ 1 \theta_1 θ1和 θ 2 \theta_2 θ2分别表示与 h h h相应的 g 1 g_1 g1与 g 2 g_2 g2的参数。共享层的输出 x 1 x_1 x1将传递给所有相应的头。然而,反向图可能会变成多对一的连接。根据公式4,关于共享层的反向传播输入是 ∇ x 1 L = ∑ h = 1 H ∇ x 1 L ( h ) \nabla_{x_1}L=\sum_{h=1}^H\nabla_{x_1}L^{(h)} ∇x1L=∑h=1H∇x1L(h)。显然 ∇ x 1 L \nabla_{x_1}L ∇x1L的方差将随着头的数量增长而增长,即 Var ( ( ∇ x 1 L ( h ) ) i ) < ∞ \text{Var}((\nabla_{x_1}L^{(h)})_i)<\infty Var((∇x1L(h))i)<∞,其中 i i i表示向量中的每一个元素我们应当保证系统的问题,即使再 H → ∞ H\to\infty H→∞的情况也有 Var ( ( ∇ x 1 L ) i ) < ∞ \text{Var}((\nabla_{x_1}L)_i)<\infty Var((∇x1L)i)<∞。不幸的是,由于所有梯度流的综合,图2 (a) 中的反向传播流在近似意义上是不稳定的。

现在简化损失缩放,即
L
=
1
H
∑
h
L
(
h
)
L=\frac{1}{H}\sum_hL^{(h)}
L=H1∑hL(h)。这会引发一个新问题,即关于
θ
2
(
h
)
\theta_2^{(h)}
θ2(h)非常慢的学习效率。SGD更新过程为:
θ
2
(
h
)
←
θ
2
(
h
)
−
η
1
H
∇
θ
2
(
h
)
L
(
h
)
.
\theta_2^{(h)}\leftarrow\theta_2^{(h)}-\eta\frac{1}{H}\nabla_{\theta_2^{(h)}}L^{(h)}.
θ2(h)←θ2(h)−ηH1∇θ2(h)L(h). 对于一个固定的学习率
η
\eta
η,当
H
→
∞
H\to\infty
H→∞时有
η
1
H
∇
θ
2
(
h
)
L
(
h
)
→
0
\eta\frac{1}{H}\nabla_{\theta_2^{(h)}}L^{(h)}\to0
ηH1∇θ2(h)L(h)→0。
因此,反向传播缩放同时需要实现两个目标:
1)标准化子网络
g
1
g_1
g1中的反向传播流;
2)在单个分类器的情况下于
g
2
g_2
g2中标准化反向传播流。
在
g
1
g_1
g1和
g
2
g_2
g2之间将添加一个新的操作
I
(
⋅
)
I(\cdot)
I(⋅),如图2 (b):
I
(
x
)
=
x
,
∇
x
I
=
1
H
(5)
\tag{5} I(x)=x,\qquad\nabla_xI=\frac{1}{H}
I(x)=x,∇xI=H1(5) 然后共享层的反向传播的输入将变为:
∇
x
1
L
=
1
H
∑
h
=
1
H
∇
x
1
L
(
h
)
(6)
\tag{6} \nabla_{x_1}L=\frac{1}{H}\sum_{h=1}^H\nabla_{x_1}L^{(h)}
∇x1L=H1h=1∑H∇x1L(h)(6) 公式6的梯度将会被限制,证明将于补充材料中说明。反向传播重缩放对于ILR共享具有更好的性能至关重要,只需重用在单独中学习中调整良好的训练配置。
由于软目标产生的梯度幅度为 1 / T 2 1/T^2 1/T2,来自每个软目标的反向传播流应乘以 T 2 T^2 T2。这是为了保证当微调 T T T时硬软目标的相对共享大致不变。
在有监督学习中,由于不正确标签或者数据增强导致的网络训练期间的混淆是很难改变的。例如,随即裁剪是训练图像分类器时的一个很重要的数据增强技术。然而,这将导致整个标记对象或其中大部分偶尔会被切断,这可能加大分类器的挑战。由于同一样本的多个视角会产生预测的多样性,协调学习自然拥有比单独学习更强的标签噪声健壮性。