Distilling the Knowledge in a Neural Network 笔记

1. 介绍

在论文中,作者提出了先训练一个大的笨重的模型,再使用distilling来将笨重的模型的知识迁移到小的模型中,用于实际部署。
通常情况下,我们认为一个模型的知识保存在它的参数中,这使得我们很难想象到如何来改变模型,而不丢失知识。然后,另一种较为抽象的对待知识的角度,是将知识看作是输入到输出的映射。
一种简单地将大模型的泛化性能转移到小模型的方式是,将大模型得到的类别概率作为小模型的soft targets来训练。
当soft targets有很高的entropy时,它们能够提供足够多的信息,同时拥有较低的variance,所以小模型只需要很小的数据就能训练,也可以使用很大的学习率。

2. Distillation

通常情况下,我们使用softmax来将logitz_i转变为概率q_i,如下:

(1)

T
是temperature,通常设置为
1
,一个大的
T
会产生更加soft的概率分布。

在最简单的distillation中,通过在一个由笨重模型产生的transfer set上训练,并且使用soft target作为目标,也就是在softmax中使用大的T来产生概率。在训练distilled模型时,使用相同的T训练,来进行知识迁移。

作者发现使用真实label和soft target的加权平均能够得到很好的效果。也就是loss分两部分,一部分是soft targets和预测值的cross entropy,但是使用和笨重模型产生soft target时相同的大的T值来计算softmax。另一部分是真实label和预测值的cross entropy,这时T为1。
soft targets产生的梯度多了一个\frac{1}{T^2},因此应该乘一个T^2

2.1 Matching logits is a special case of distillation

假设distilled模型产生了logit z_i,笨重的模型产生的logits v_i,以及soft target 概率p_i,transfer learning使用的temperature为T,那么梯度为:

2

如果temperature相对于logits的大小来说比较高,可以使用如下近似:
3

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容