目录
量化
为了保证较高的精度,大部分的科学运算都是采用浮点型进行计算,常见的是32位浮点型和64位浮点型,即float32和double64。
对于深度学习模型来说,乘加计算量是非常大的,往往需要GPU等专用的计算平台才能实现实时运算,而模型量化是一个有效降低计算量的方法。
量化,即将网络的权值,激活值等从高精度转化成低精度的操作过程,例如将32位浮点数转化成8位整型数int8,同时期望转换后的模型准确率与转化前相近。
剪枝
深度学习网络模型从卷积层到全连接层存在着大量冗余的参数,大量神经元激活值趋近于0,将这些神经元去除后可以表现出同样的模型表达能力,这种情况被称为过参数化,而对应的技术则被称为模型剪枝。就是去掉模型中不重要的参数或者没有用的神经元。
知识蒸馏
量化和剪枝是最常用的模型压缩方法,有成熟的配套工具,但为了保证一定精度,其压缩比一般较小
知识蒸馏(Knowledge Distillation,KD),是2015 年由深度学习开山鼻祖Hinton 提出的一种模型压缩方法,是一种基于教师-学生网络思想的训练方法。
蒸馏已经成为压缩模型的主流方法之一,可以与量化和剪枝叠加使用,达到可观的压缩比。
在知识蒸馏使用的教师-学生(Teacher-Student)网络中,教师模型是“知识”的输出者,学生模型是“知识”的接受者,整个过程分为两个阶段。
1)教师模型训练:教师模型一般为参数量巨大,结构相对复杂的待压缩的模型,简称为Model-T。教师模型一般由大量数据训练而成,性能指标高于蒸馏后的学生模型。
2)学生模型训练:学生模型一般为参数量很小,结构相对简单的模型,简称为Model-S,其训练过程以学习Model-T 为主,而不是学习数据的真实标签。