模型蒸馏1

两种蒸馏形式:模型蒸馏 (模型压缩,模型不同,特征相同)

优势特征蒸馏(大模型使用全量特征,适用于模型相同,特征不同)

俩种训练方式:

pre-train是预先训练teacher网络,然后再训练student网络;

co-train则是通过上述介绍的损失对teacher网络和student网络进行联合训练,co-train方式往往训练速度更快,但所需的GPU资源也会更多。

  • teacher - 原始模型或模型ensemble
  • student - 新模型
  • transfer set - 用来迁移teacher知识、训练student的数据集合
  • soft target - teacher输出的预测结果(一般是softmax之后的概率)
  • hard target - 样本原本的标签
  • born-again network - 蒸馏的一种,指student和teacher的结构和尺寸完全一样
  • teacher annealing - 防止student的表现被teacher限制,在蒸馏时逐渐减少soft targets的权重
  • temperature - 蒸馏目标函数中的超参数

蒸馏时的softmax

比之前的softmax多了一个参数T(temperature),T越大产生的概率分布越平滑 

两种蒸馏的目标函数:

1:只使用soft targets:在蒸馏时teacher使用新的softmax产生soft targets;student使用新的softmax在transfer set上学习,和teacher使用相同的T

2:student的目标函数是hard target和soft target目标函数的加权平均,使用hard target时T=1,soft target时T和teacher的一样。

T越大越能学到teacher模型的泛化信息。

T可以尝试1~20之间

在蒸馏时,我们要让student模型学习到teacher模型的概率输出,如果还保持之前的概率分布,那么会让大部分的概率信息无法被学习。因此,通常在对Logits进行概率化之前,要先对Logits除以一个temperature,让不同类别的概率差异稍微变小一点(如果老师模型输出的概率差距过大,则学生模型学不到啥,所以需要温度参数调节使得老师模型的概率输出平滑一些)

传统训练方式:认为每个样本的负标签都一样,统一对待,而蒸馏方式使得每个样本给Student模型带来的信息量(分布概率越平缓,熵值越大)大于传统模型

温度参数的大小:决定学生模型训练过程中对负标签的关注程度,T越大,概率分布越平滑,熵越大,对负标签关注越大。

蒸馏过程中,先让T变大,测试阶段回复为1

由于Lsoft贡献的梯度是Lhard的1/T2,所以Lsoft的权重要乘以T2

p是学生输出概率,q是老师输出概率,y是样本标签

蒸馏这个概念之所以work,核心思想是因为好模型的目标不是拟合训练数据,而是学习如何泛化到新的数据。() 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值