For dl homework 2 megvii&PKU deep learning 课程
Abstract:
在相同的数据上train不同模型去均值是目前提高性能的一种方法;但是巨大的神经网络训练十分expensive
通过知识蒸馏(distilling knowledge)将大型网络中的知识压缩到一个更容易部署的单一模型中
ensemble :包括一个或者多个full models
可以被并行且快速的训练为细粒度的每一个小模型
Introduction
- 训练一个大的模型
- 用蒸馏的方法进行二次训练,将大模型训练的得到的知识迁移到小模型中
我们通过已学习到的参数来确认其中的知识,难点在与如何在保持相同知识的同时更改模型
a learned mapping from input vectors to output vectors
训练的时候会得到各个类别的概率
可以用和训练大模型相同的泛化方式训练小模型
如果繁琐的模型推广得很好,那么以相同方式训练推广的小模型在测试数据上通常比以正常方式在训练集训练的小模型做得更好。
obvious way:利用繁琐模型产生的类概率作为“软目标”来训练小模型。
迁移阶段,我们可以使用相同的训练集或单独的“转移”集。
当繁琐的模型是简单模型的大集合时,我们可以使用其单个预测分布的算术或几何平均值作为软目标。当软目标具有较高的熵时,软目标比硬目标提供更多的信息,并且在训练用例之间的梯度变化小得多,因此小模型通常比原始模型训练的数据少得多,并且使用更高的学习率。
对于MNIST这样的任务,繁琐的模型几乎总是以很高的置信度产生正确的答案,关于所学习函数的大部分信息存在于软目标中非常小的概率比中。这些信息在损失函数为交叉熵的时候不会带来很大的影响,因为它们的概率和0太接近
使用原始复杂模型产生的logics作为小模型的输入
最小化复杂模型和小模型产生logics的均方误差
distillation:提高final softmax 的temperature,直至复杂模型产生合适的软目标集,使用相同的temperature训练可以和目标所匹配的小模型
- match the soft targets of the cumbersome model
用于训练小模型的迁移集合: 使用
更改后的目标函数训练原训练集的效果很好,通常,小模型不能精确匹配软目标,错误地选择正确答案的方向是有帮助的
Distillation
将softmax 的输入除以温度T
T的值取高于1的值可以得到一个关于类别的软分布
- 在最简单的蒸馏形式中,将知识转移到蒸馏模型中,方法是在一个迁移集上对其进行训练,并对迁移集中的每个情况使用一个软目标分布,该分布是使用在其softmax中温度较高的繁琐模型生成的。在训练蒸馏模型时使用相同的T,但在训练之后使用的温度为1。
- 当已知部分迁移集合的正确标记的时候, 可以通过训练已蒸馏的模型生成正确的标签
一种方法是使用正确的标签来修改软目标;
二 简单地使用两个不同目标函数的加权平均值。
第一个目标函数是与软目标的交叉熵,该交叉熵是使用蒸馏模型的SoftMax中与从笨重模型生成软目标相同的高温来计算的。第二个目标函数是具有正确标签的交叉熵。这是使用蒸馏模型的SoftMax中完全相同的逻辑计算的,但温度为1。
最好的结果通常是通过在第二目标函数上使用一个较低权重获得的。
因为软目标产生的梯度大小缩放了1/T^2 ,因此所使用的软目标和硬目标应该乘上T^2 ,确保了在使用元参数进行实验时,如果蒸馏温度发生变化,则硬目标和软目标的相对贡献基本保持不变
Preliminary experiments on MNIST
如果小型网络正则化通过增加一个额外任务,匹配由大型网络生成的软目标实现,精度会上升
软目标可以将大量的知识转移到提取的模型中,包括从翻译后的训练数据中学习到的如何泛化的知识,即使转换集没有任何转换