网络轻量化 - 知识蒸馏(knowledge distillation)

原文:《Distilling the Knowledge in a Neural Network》

前期知识

集成模型(Ensemble Models)

通过结合了来自多个模型的决策,以提高最终模型的稳定性和准确性。

Bagging

  • 从原始样本抽取训练集:每轮从原始样本集抽取 n 个样本,共进行 k 轮抽取,获得 k 个训练集
  • 每次使用一个训练集获得一个模型,共得到 k 个模型
  • 对 k 个模型的预测结果进行组合(例如投票法),得到最终的预测结果

在这里插入图片描述

Boosting

  • 每次训练使用的是全部样本
  • 减小上一轮训练正确样本的权重,增大错误样本的权重

缺点

  • 模型可解释性差
  • 算力消耗大,运行时间长,不符合移动端需求
  • 模型的选择有随机性,不能确保是最佳组合

知识蒸馏思想

主要思想:

  • 训练一个小的网络,即 student
  • student 模仿预先训练好的大型网络,即 teacher

如何理解 knowledge?
**答:**训练好的模型参数信息保留了模型学到的知识。例如:
[cow, dog, cat, car]
Labels: [0, 1, 0, 0]
Predictions: [0.05, 0.3, 0.2, 0.005]
其中,模型在分类过程中将其分类成 cow 的概率是 car 的十倍,这就是文中所描述的 knowledge,需要从 teacher 网络向 student 网络蒸馏。

算法部分

知识蒸馏方法

  • 训练好的 teacher 网络输出一个类别的概率分布
  • student 网络输出一个类别的概率分布
  • 设计学生网络的 Loss,minimize 以上两个概率分布的差距

引入温度参数 T(Temperature)

teacher 网络的输出结果,其正确分类的概率值非常大,而其他类别的概率值接近于 0,这种结果会忽视其他类别包含的有用信息。
所以引入温度参数 T,可以蒸馏出更丰富的信息,如下图所示:

在这里插入图片描述

组合两种 Loss

在这里插入图片描述
具体 Loss Function 如下图:

注:① 给蒸馏损失较大权重,学生网络损失较小权重时,可以获得更好的结果;
② soft targets 产生的梯度大小会被缩放至 1 / T 2 1/T^2 1/T2,因此在同时使用 soft targets 和 hard targets 时,要将蒸馏损失项乘以 T 2 T^2 T2

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值