李宏毅《机器学习》模型压缩-知识蒸馏

概述

需要做模型压缩的原因在于我们有将模型部署在资源受限的设备上的需求,比如很多移动设备,在这些设备上有受限的存储空间和受限的计算能力。本文主要介绍五种模型压缩的方法:
①网络剪枝(Network Pruning)
②知识蒸馏(Knowledge Distillation)
③参数量化(Parameter Quantization)
④结构设计(Architecture Design)
⑤动态计算(Dynamic Computation)

知识蒸馏

1.知识蒸馏是什么?

知识蒸馏指的是模型压缩的思想,通过一步一步地使用一个较大的已经训练好的网络去教导一个较小的网络确切地去做什么。“软标签”指的是大网络在每一层卷积后输出的feature map。然后,通过尝试复制大网络在每一层的输出(不仅仅是最终的损失),小网络被训练以学习大网络的准确行为。

2.这样和从头训练一个模型有什么不一样?

显然,模型越复杂,理论搜索空间越大。但是,如果我们假设较小的网络也能实现相同(甚至相似)的收敛,那么教师网络的收敛空间应该与学生网络的解空间重叠。

不幸的是,仅凭这一点并不能保证学生网络收敛在同一点。学生网络的收敛点可能与教师网络有很大的不同。但是,如果引导学生网络复制教师网络的行为(教师网络已经在更大的解空间中进行了搜索),则其预期收敛空间会与原有的教师网络收敛空间重叠。

3.教师学生网络 — 到底如何工作?
(1).训练教师网络:首先使用完整数据集分别对高度复杂的教师网络进行训练。这个步骤需要高计算性能,因此只能在离线(在高性能gpu上)完成。
李宏毅《机器学习》模型压缩-知识蒸馏_第1张图片
一个高度复杂和深度的网络可以用作教师网络的例子:GoogleNet

(2).构建对应关系:在设计学生网络时,需要建立学生网络的中间输出与教师网络的对应关系。这种对应关系可以直接将教师网络中某一层的输出信息传递给学生网络,或者在传递给学生网络之前进行一些数据增强。
李宏毅《机器学习》模型压缩-知识蒸馏_第2张图片
构建对应关系的例子
(3). 通过教师网络前向传播:教师网络前向传播数据以获得所有中间输出,然后对其应用数据增强(如果有的话)。
(4). 通过学生网络反向传播:现在利用教师网络的输出和学生网络中反向传播误差的对应关系,使学生网络能够学会复制教师网络的行为。

4.知识蒸馏的好处:
好处是Teacher Network的输出提供了比独热编码标签更多的信息,比如对于输入的数字1,Teacher Network的输出表明这个数字是1,同时也表明了这个数字也有一点像7,也有一点像9。另外训练Student Network时通常使用交叉熵作为损失函数,这是因为训练过程相当于要拟合两个概率分布。

知识蒸馏训练出的Student Network有一点神奇的地方就是这个Network有可能辨识从来没有见过的输入,不如把Student Network的训练资料中的数字7移除后可能训练完成后也会认识数字7,这是因为Teacher Network输出的soft label提供了额外的信息。

李宏毅《机器学习》模型压缩-知识蒸馏_第3张图片

知识蒸馏的一个用处是用来拟合集成模型,有时候我们会集成(Ensemble)很多个模型来获取其输出的均值从而提高总体的效果,我们可以使用知识蒸馏的方式来使得
Student Network学习集成模型的输出,从而达到将集成模型的效果复制到一个模型上的目的:

李宏毅《机器学习》模型压缩-知识蒸馏_第4张图片

你可能感兴趣的:(模型压缩,模型压缩)