Data-Free Learning of Student Networks
Conference: ICCV2019
Created: Oct 20, 2020 2:42 PM
Last Edit Time: Oct 22, 2020 3:41 PM
Property: Knowledge Distillation
Title
H. Chen et al., ‘Data-Free Learning of Student Networks’, arXiv:1904.01186 [cs, stat], Dec. 2019, Accessed: Oct. 20, 2020. [Online]. Available: http://arxiv.org/abs/1904.01186.
Summary
对于知识蒸馏任务,原模型训练数据集和网络结构未知,使用该模型和GAN结构生成数据(模拟原始数据集),提供给新的模型进行知识蒸馏。
Research Objective
(边缘设备需要使用高性能的小型网络),本文从知识蒸馏出发。
Problem Statement
大多数知识蒸馏任务中,Student网络可以获取Teacher网络所使用的数据。但在现实中由于隐私、法律条文和传输限制,存在无法获取的情况,而且,Teacher网络的结构可能是未知的,仅知道输入和输出的接口。(简而言之,没有T网络训练数据的情况下如何进行知识蒸馏)
过去的方法如何考虑这个问题?
- Lopes et al. 使用"meta-data"(原数据集在每层中激活函数的均值和标准差)
- Srinivas and Babu 合并全连接层中值相近的神经元。
过去方法的问题:
- 作者认为并没有合理运用预训练的网络,从而导致性能太差。
- 方法二不能处理卷积层。
Method(s)
解决思路
使用GAN来生成训练Teacher网络数据集的分布。
算法流程
固定住Teacher网络,[先训练生成器,再训练Student网络](迭代)
损失函数
L o h \mathcal{L}_{oh} Loh简单的KD Loss.
L a \mathcal{L}_a La表示激活损失函数,作者考虑到卷积网络中间的特征也是有用的,并且不同的fliter关注于不同的语义信息。如果说fliter能关住一些本质的模式,那么,相对于随机向量,真实图片对应的特征图应该有更高的激活函数值。这里的 f T i f_T^i fTi表示样本 x i x_i xi用Teacher网络提取的fc层前的特征。
L i e \mathcal{L}_{ie} Lie表示信息熵损失,对于多个 x i x_i xi,使用 y T i = N T ( x i ) y_T^i= \mathcal{N}_T(x^i) yTi=NT(xi)计算出输出向量的集合 { y T 1 , y T 2 , ⋯ , y T n } \{y_T^1,y_T^2,\cdots, y_T^n\} {yT1,yT2,⋯,yTn}, 1 n ∑ i y T i \frac{1}{n}\sum_i{y^i_T} n1∑iyTi就是这些样本对每个类别的频率分布。当loss函数越小,表示信息熵越小,每个类别的频率越接近 1 k \frac{1}{k} k1,生成器中每个类别的概率近乎相同,生成的数据也越均匀。
优化方法
使用SGD优化图像生成器 G G G和Student网络 N s \mathcal{N}_s Ns
Evaluation
- MNIST: LeNet-5和LeNet-HALF
- CIFAR-10和CIFAR-100: ResNet-34和ResNet-18
- CelebA: AlexNet和AlexNet-Half: DCGAN
部分实验结果
消融实验
结果可视化(以下皆为MNIST)
Filter可视化
Conclusion
通过原有模型和生成数据的方式,能有效地训练一个轻量的神经网络。
Notes
在这些框架外额外需要记录的笔记。
边缘设备:例如 自动驾驶骑车和微型机器人
本文使用一个深度网络(教师)作为判别器,使用一个生成器生成数据使得判别器的概率最大来制作由该网络衍生的数据。
问题:
只使用了衍生数据嘛?是的