ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

KD论文阅读:A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer

2021-09-09 13:02:34  阅读:264  来源: 互联网

标签:初始化 iterations 蒸馏 Gift KD FSP student teacher Knowledge


主要思想

  • 网络中的不同层之间存在 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有