首页 > 其他分享> > KD论文阅读:A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer
KD论文阅读:A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer
作者:互联网
主要思想
- 网络中的不同层之间存在 flow,这种流可以被定义为两个层特征向量之间的
innner product
- 之前 Gramian 的研究主要是将这个内积应用在一个层之内,这篇文章应用在不同的层之间
- 这篇文章主要将第一层和最后一层作为主要的研究对象,两个特征层的内积得到的矩阵定义为 FSP 矩阵
优势
- fast optimization: 两个阶段训练,第一个阶段获得的 weights 可以用于第二阶段的初始化
- improve the performance of a small work: 提升了一个小的网络
- transfer learning:因为这个方法可以将 distilled 的知识转移到一个小网络,小网络可以通过 transfer learning 表现的和大网络一样好。
贡献
- 一个全新的蒸馏方法 FSP
- 这种方法可以使得训练收敛的速度很快
- 使用知识蒸馏去获得初始化的权重参数
- 即使 student 和 teacher 以不同的任务训练,teacher 也可以提高 student 的表现
相关工作
- Net2Net 也使用了 teacher-student 模式,配合一个 function-preserving 的方法来初始化权重
T. Chen, I. Goodfellow, and J. Shlens. Net2net: Accelerating learning via knowledge transfer. arXiv preprint arXiv:1511.05641, 2015
- Fitnet 引用了中间层进行蒸馏
A. Romero, N. Ballas, S. E. Kahou, A. Chassang, C. Gatta, and Y. Bengio. Fitnets: Hints for thin deep nets. In In Proceedings of ICLR, 2015. 1, 2, 3, 5, 6, 7, 8
方法
- 在每个 teacher 和 student 的 block 都取第一层和最后一层的输出特征图
- 取每对特征图的协方差矩阵作为信息
- 分别将 teacher 和 student 之间的多组协方差矩阵进行 mse loss 蒸馏
- 第一阶段:通过 mse loss 逼近 student 和 teacher 网络,得到初始化的 student,并保存参数
- 第二阶段:用第一阶段的 student 的weight 来初始化第二阶段(蒸馏阶段)
- 通过 FSP 矩阵来进行知识蒸馏
实验设定
- 采用 Resnet 多种组合
- 采用每个 Resnet block 中的第一层和最后一层去产生 FSP 矩阵,如果这两层的特征图不同,就通过 maxpooling 进行维度调整
- 前两个部分的验证中,都采用了 teacher 和 student 完成同样的工作
- 最后的 transfer learning 中采用 teacher 和 student 是不同任务的
- 对比实验:FitNET: 35000 iterations, 初始化参数 1 e − 4 1e-4 1e−4, 25000 iterations 之后,lr = 1 e − 5 1e-5 1e−5,这个阶段,soft_factor 设置为 3,KD loss 中的 lambda 从 4 降为 1
实验一:证明 fast optimization
对比思路:
一方面
- teacher 网络训练 n 个 epochs
- student 第一阶段先进行 mse loss 逼近 teacher
- 蒸馏阶段只使用 n/3 的 epochs 就达到收敛状态
另一方面
- 蒸馏的结果比 FinNet 的效果好
cifar10 上实验设置 + 表现:
- T:Resnet26
- S:Resnet26
- batchsize:256
- teacher_lr:0.1 -> 0.01(32000 iterations) -> 0.001 (48000 iterations) -> terminate(64000 iterations)
- student_lr: 0.001(11000iterations) -> 0.0001(16000) -> 0.00001 (21000)
- weight_decay: 0.0001
- momentum: 0.9
- MSRA initialization
- BatchNormalization
- 第二阶段,为了证明 fast optimization,student 只训练第一阶段的 1/3 时长:lr:0.1(11000)->0.01(16000)->0.001(21000);实验证明,这个训练时长已经完全够用了。
cifar100 设置和表现
- T: Resnet32
- S: Resnet32
实验二:证明对小网络蒸馏效果好
- T: Resnet26
- S:Resnet8
cifar10
cifar100
实验三:Transfer Learning
- T: Resnet34 ; data:ImageNet (迁移源数据)
- S:Resnet20, UCSD Birds (CUB) 200-2011 dataset
- different task: T:UCSD Birds (CUB) 200-2011 dataset
- teacher-finetuning 是将 imagenet 的结果迁移到 teacher 上,然后再用不同任务的数据集训练后的结果哦
- 拿这个teacher 去对 student 做两个阶段的 FSP 蒸馏,可得到结果如图,基本达到了相似的效果。
标签:初始化,iterations,蒸馏,Gift,KD,FSP,student,teacher,Knowledge 来源: https://blog.csdn.net/qq_42902997/article/details/120195053