论文链接:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8100237
代码链接:暂无
创新点
将输入和输出看作是问题和答案,中间层看作是解决问题的一个步骤,按照 F i t N e t s FitNets FitNets的思路,会学习中间这个步骤,然后解决这个问题可以有很多路径,中间这个步骤的状态不一定是一种,所以 F i t N e t s FitNets FitNets给了太多的限制,作者提出学习输入和输出的关系,而不是直接学习中间步骤的状态。
观点
- 从教师网络哦提取知识不一定只从最后的 s o f t m a x softmax softmax这一层,还可以从多个层进行提取。
- 将从教师网络学习得到的知识用来对学生网络进行初始化,并在之后用主流的方法进行训练。
- 因为 F S P FSP FSP矩阵由两个层的特征得来,所以如果尺寸不同的话,可以用最大池化层拟合。
- 用 G r a m Gram Gram矩阵来计算 l o s s loss loss函数。 G r a m Gram Gram矩阵是计算每个通道i与每个通道j的 f e a t u r e feature feature m a p map map内积。 G r a m Gram Gram m a t r i x matrix matrix的每个值都可以代表通道 i i i的 f e a t u r e feature feature m a p map map与通道 j j j的 f e a t u r e feature feature m a p map map互相关的程度。
- 单纯的教会学生模仿教师生成的特征图是个硬约束会让网络变得不灵活,所以应该致力于教会学生网络这一学习过程。
主要思想
- 网络中不同层之间存在 f l o w flow flow,这种 f l o w flow flow可以被定义为两个层特征向量之间的 i n n e r inner inner p r o d u c t product product。
- 之前的 G r a m a i n Gramain Gramain的研究主要是将内积应用在一个层之内,这篇文章应用在不同的层之间。
- 这篇文章主要是将第一层和最后一层作为主要的研究对象,两个特征层的内积得到的矩阵定义为 G r a m a i n Gramain Gramain矩阵。
- 本文提出:神经网络的知识在于如何解决从一个输入到输出的映射,是一个从输入到输出的
f
e
a
t
u
r
e
feature
feature
f
l
o
w
flow
flow(即层与层之间的特征关系),老师要将这个
f
l
o
w
flow
flow传输给学生。层与层之间的特征关系更能表达一种提取的手段,让学生学到这种手段更加像授人以鱼不如授人以渔。
优势
- F a s t Fast Fast o p t i m i z a t i o n optimization optimization:两个阶段训练,第一阶段获得权重可以用于第二阶段的初始化。
- I m p r o v e Improve Improve t h e the the p e r f o r m a n c e performance performance o f of of a a a s m a l l small small w o r k work work:提升小网络的性能。
- T r a n s f e r Transfer Transfer l e a r n i n g learning learning:这个方法可以将知识通过蒸馏转移到一个小网络,小网络可以通过迁移学习表现的和大网络一样好。
贡献
- 一个全新的蒸馏方法 F S P FSP FSP。
- 可以使训练收敛的速度更快。
- 使用知识蒸馏获得初始化的权重参数。
- 即使学生和教师以不同的任务进行训练,教师也可以提高学生的表现。
方法
提取教师和学生每个
b
l
o
c
k
block
block第一层和最后一层的输出特征图。
计算每对特征图的协方差矩阵作为知识。
分别将教师和学生之间的多组协方差矩阵进行
m
s
e
mse
mse
l
o
s
s
loss
loss蒸馏。
第一阶段:通过
m
s
e
mse
mse
l
o
s
s
loss
loss使学生网络靠近教师网络,使得学生网络完成权重初始化,并保存参数。
第二阶段:采用第一阶段的权重文件完成初始化。
通过
F
S
P
FSP
FSP矩阵完成知识蒸馏。
表达式
G
i
,
j
(
x
;
W
)
=
∑
s
=
1
h
∑
i
=
1
w
F
s
,
t
,
i
1
(
x
;
W
)
×
F
s
,
t
,
j
2
(
x
;
W
)
h
×
w
{G_{i,j}}(x;W) = \sum\limits_{s = 1}^h {\sum\limits_{i = 1}^w {\frac{{F_{s,t,i}^1(x;W) \times F_{s,t,j}^2(x;W)}}{{h \times w}}} }
Gi,j(x;W)=s=1∑hi=1∑wh×wFs,t,i1(x;W)×Fs,t,j2(x;W)
具体做法:对于具有相同分辨率的特征图,低层和高层特征图的
c
h
a
n
n
e
l
channel
channel两两做内积,然后将结果填入
F
S
P
FSP
FSP
M
a
t
r
i
x
Matrix
Matrix对应位置。
F
S
P
FSP
FSP
M
a
t
r
i
x
Matrix
Matrix的损失
L
F
S
P
(
W
t
,
W
s
)
=
1
N
∑
x
∑
i
=
1
n
λ
i
×
∣
∣
(
G
i
T
(
x
;
W
t
)
−
G
i
S
(
x
;
W
s
)
)
∣
∣
2
2
{L_{FSP}}({W_t},{W_s}) = \frac{1}{N}\sum\limits_x {\sum\limits_{i = 1}^n {{\lambda _i} \times ||(G_i^T(x;{W_t}) - G_i^S(x;{W_s}))||_2^2} }
LFSP(Wt,Ws)=N1x∑i=1∑nλi×∣∣(GiT(x;Wt)−GiS(x;Ws))∣∣22
n
n
n表示学生中选择的层数,
N
N
N表示样本数量,
T
T
T和
S
S
S分别表示教师和学生,
λ
λ
λ对应所有层相同。
关于 F S P FSP FSP与 F i t N e t s FitNets FitNets的分析
- 由于本文提出的结构是学习一种输入和输出的关系,本文是通过 F S P FSP FSP实现的,所以多个 F S P FSP FSP之间可以相对独立一些,整个模块可以解耦。
- 而对于 F i t N e t FitNet FitNet,假设加入三个中间层,在第二个中间层和第三个中间层不好去学习,因为想要学习好他们,首先要保证前边的一层中间层学习好,所以FitNets这种直接用特征做监督信息的方式不能解耦多个 l o s s loss loss层,这也是为什么三层 F i t N e t s FitNets FitNets没有一层 F i t N e t s FitNets FitNets效果好的原因。
- F S P FSP FSP相比 F i t N e t s FitNets FitNets,赋予了网络更大的自由。如果学生与教师有相同的中间层,那么肯定有相同的 F S P FSP FSP,但反过来不成立, F S P FSP FSP的相同并不限制中间层的具体状态。