Hinton在15年的这篇文章非常有意思。为了更好的效果,现在训练的DL网络越来越大,而预测的时间也随之增长,这是我们不愿意看到的。所以呢,就有文章提出通过L1或映射的方法对参数进行压缩。这是比较直接的想法,参数多了,就减少参数嘛。
Hinton的这篇文章的task也是压缩神经网络,但是方法就比较新颖了:先训练一个复杂网络,然后直接采用这个网络去训练一个简单网络;相当于复杂网络是老师,而简单网络是学生。
Distillation
神经网络通常采用“softmax”函数生成对对每个类别的预测概率:
T通常设置为1。采用更大的T,会产生更加软化(softer)的概率分布。首先通过这种方法生成软标签,然后将软标签和硬标签同时用于新网络的学习。
Matching logits is a special case of distillation
标签匹配是distillation的一种特殊情况。
在软硬标签结合的情况下,每个logit贡献的梯度计算为:
当T很大的时候:
假设logits的均值为0,那么:
换句话说,在T很大时,蒸馏(distillation)就相当于标签匹配,也就是最小化:
当T较小时,蒸馏更加关注负标签,在训练复杂网络的时候,这些负标签是几乎没有约束的,这使得产生的负标签概率是噪声比较大的,所以采用更大的T值(上面的简化方法)是有优势的。而另一方面,这些负标签概率也是包含一定的有用信息的,能够用于帮助简单网络的学习。这两种效应哪种占据主导,是一个实践问题。
原文是这样说的:
At lower temperatures, distillation pays much less attention to matching logits that are much more negative than the average. This is potentially advantageous because these logits are almost completely unconstrained by the cost function used for training the cumbersome model so they could be very noisy. On the other hand, the very negative logits may convey useful information about the knowledge acquired by the cumbersome model. Which of these effects dominates is an empirical question.
Training ensembles of specialists on very big datasets
训练大数据集的一个简单方法是集成模型(将数据分成数个子集,分别训练然后集成),这种方法很容易并行化,但是却在测试的时候需要耗费大量的计算资源,而distillation可以解决这个问题。
集成的一个主要问题是容易过拟合,这里利用soft targets来处理这个问题:
即通过KL散度约束新模型与全体及分别的概率分布比较相似。