【AI不惑境】模型压缩中知识蒸馏技术原理及其发展示状和展望

你们好,这是专栏《AI不惑境》的第十一篇文章,讲述知识蒸馏相关的内容。面试

进入到不惑境界,就是向高手迈进的开始了,在这个境界须要本身独立思考。若是说学习是一个从模仿,到追随,到创造的过程,那么到这个阶段,应该跃过了模仿和追随的阶段,进入了创造的阶段。从这个境界开始,讲述的问题可能再也不有答案,更多的是激发你们一块儿来思考。算法

做者&编辑 | 言有三网络

知识蒸馏是很是经典的基于迁移学习的模型压缩技术,在学术界的研究很是活跃,工业界也有许多的应用和较大的潜力,本文给你们梳理知识蒸馏的核心技术,发展示状,将来展望以及学习资源推荐。架构

1 知识蒸馏基础app

1.1 什么是知识蒸馏框架

通常地,大模型每每是单个复杂网络或者是若干网络的集合,拥有良好的性能和泛化能力,而小模型由于网络规模较小,表达能力有限。利用大模型学习到的知识去指导小模型训练,使得小模型具备与大模型至关的性能,可是参数数量大幅下降,从而能够实现模型压缩与加速,就是知识蒸馏与迁移学习在模型优化中的应用。机器学习

Hinton等人最先在文章“Distilling the knowledge in a neural network”[1]中提出了知识蒸馏这个概念,其核心思想是一旦复杂网络模型训练完成,即可以用另外一种训练方法从复杂模型中提取出来更小的模型,所以知识蒸馏框架一般包含了一个大模型(被称为teacher模型),和一个小模型(被称为student模型)ide

1.2 为何要进行知识蒸馏函数

以计算机视觉模型的训练为例,咱们常常用在ImageNet上训练的模型做为预训练模型,之因此能够这样作,是由于深度学习模型在网络浅层学习的知识是图像的色彩和边缘等底层信息,某一个数据集学习到的信息也能够应用于其余领域。性能

那实际上知识蒸馏或者说迁移学习的必要性在哪里?

(1) 数据分布差别。深度学习模型的训练场景和测试场景每每有分布差别,以自动驾驶领域为例,大部分数据集的采集都是基于白天,光照良好的天气条件下,在这样的数据集上训练的模型,当将其用于黑夜,风雪等场景时,颇有可能会没法正常工做,从而使得模型的实用性能很是受限。所以,必须考虑模型从源域到目标域的迁移能力。

(2) 受限的数据规模。数据的标注成本是很是高的,致使不少任务只能用少许的标注进行模型的训练。以医学领域为典型表明,数据集的规模并不大,所以在真正专用的模型训练以前每每须要先在通用任务上进行预训练。

(3) 通用与垂直领域。虽然咱们能够训练许多通用的模型,可是真实需求是很是垂直或者说个性化的,好比ImageNet存在1000类,可是咱们可能只须要用到其中若干类。此时就能够基于1000类ImageNet模型进行知识迁移,而不须要彻底从头开始训练。

所以,在工业界对知识蒸馏和迁移学习也有着很是强烈的需求,接下来咱们讲解其中的主要算法。

2 知识蒸馏主要算法

知识蒸馏是对模型的能力进行迁移,根据迁移的方法不一样能够简单分为基于目标驱动的算法,基于特征匹配的算法两个大的方向,下面咱们对其进行介绍。

2.1 知识蒸馏基本框架

Hinton最先在文章“Distilling the knowledge in a neural network”中提出了知识蒸馏的概念,即knowledge distilling,对后续的许多算法都产生了影响,其框架示意图以下:

从上图中能够看出,包括一个teacher model和一个student model,teacher model须要预先训练好,使用的就是标准分类softmax损失,可是它的输出使用带温度参数T的softmax函数进行映射,以下:

当T=1时,就是softmax自己。当T>1,称之为soft softmax,T越大,由于输入zk产生的几率f(zk)差别就会越小。

之因此要这么作,其背后的思想是当训练好一个模型以后,模型为全部的误标签都分配了很小的几率。然而实际上对于不一样的错误标签,其被分配的几率仍然可能存在数个量级的悬殊差距。这个差距,在softmax中直接就被忽略了,但这实际上是一部分有用的信息。

训练的时候小模型有两个损失,一个是与真实标签的softmax损失,一个是与teacher model的蒸馏损失,定义为KL散度。

当teacher model和student model各自的预测几率为pi,qi时,其蒸馏损失部分梯度传播以下:

能够看出形式很是的简单,梯度为二者预测几率之差,这就是最简单的知识蒸馏框架。

2.2 优化目标驱动的知识蒸馏框架

Hinton等人提出的框架是在模型最后的预测端,让student模型学习到与teacher模型的知识,这能够称之为直接使用优化目标进行驱动的框架,相似的还有ProjectionNet[2]。

PrjojectNet同时训练一个大模型和一个小模型,二者的输入都是样本,其中大模型就是普通的CNN网络,而小模型会对输入首先进行特征投影。每个投影矩阵P都对应了一个映射,由一个d-bit长的向量表示,其中每个bit为0或者1,这是一个更加稀疏的表达。特征用这种方法简化后天然就可使用更加轻量的网络的结构进行训练。

那么怎么完成这个过程呢?文中使用的是locality sensitive hashing(LSH)算法,这是一种聚类任务中经常使用的降维的算法。

优化目标包含了3部分,分别是大模型的损失,投影损失,以及大模型和小模型的预测损失,所有使用交叉熵,各自定义以下:

基于优化目标驱动的方法其思想是很是直观,就是结果导向型,中间怎么实现的不关心,对它进行改进的一个有趣方向是GAN的运用。

2.3 特征匹配的知识蒸馏框架

结果导向型的知识蒸馏框架的具体细节是难以控制的,会让训练变得不稳定且缓慢。一种更直观的方式是将teacher模型和student模型的特征进行约束,从而保证student模型确实继承了teacher模型的知识,其中一个典型表明就是FitNets[3],FitNets将比较浅而宽的Teacher模型的知识迁移到更窄更深的Student模型上,框架以下:

FitNets背后的思想是,用网络的中间层的特征进行匹配,不只仅是在输出端。

它的训练包含了两个阶段:

第一阶段就是根据Teacher模型的损失来指导预训练Student模型。记Teacher网络的某一中间层的权值Wt为Whint,意为指导的意思。Student网络的某一中间层的权值Ws为Wguided,即被指导的意思,在训练之初Student网络进行随机初始化。

咱们须要学习一个映射函数Wr使得Wguided的维度匹配Whint,获得Ws',并最小化二者网络输出的MSE差别做为损失,以下:

第二个训练阶段,就是对整个网络进行知识蒸馏训练,与上述Hinton等人提出的策略一致。

不过FitNet直接将特征值进行了匹配,先验约束太强,有的框架对激活值进行了归一化[4]。

基于特征空间进行匹配的方法实际上是知识蒸馏的主流,相似的方法很是多,包括注意力机制的使用[5],相似于风格迁移算法的特征匹配[6]等。

3 知识蒸馏算法的展望

上一节咱们介绍了知识蒸馏的基本方法,固然知识蒸馏还有很是多有意思的研究方向,这里咱们介绍其中几个。

3.1 不压缩模型

机器学习模型要解决的问题以下,其中y是预测值,x是输入,L是优化目标,θ1是优化参数。

由于深度学习模型没有解析解,每每没法获得最优解,咱们常常会经过添加一些正则项来促使模型达到更好的性能。

Born Again Neural Networks[7]框架思想是经过增长一样的模型架构,而且从新进行优化,以增长一个模型为例,要解决的问题以下:

具体的流程就是:

(1) 训练一个教师模型使其收敛到较好的局部值。

(2) 对与教师模型结构相同的学生模型进行初始化,其优化目标包含两部分,一部分是要匹配教师模型的输出分布,好比采用KL散度,另外一部分就是与教师模型训练时一样的目标,即数据集的预测真值。

而后经过下面这样的流程,一步一步往下传,因此被形象地命名为“born again”。

相似的框架还有Net2Net,network morphism等。

3.2 去掉teacher模型

通常知识蒸馏框架都须要包括一个Teacher模型和一个Student模型,而Deep mutual learning[8]则没有Teacher模型,它经过多个小模型进行协同训练,框架示意图以下。

Deep mutual learning在训练的过程当中让两个学生网络相互学习,每个网络都有两个损失。一个是任务自己的损失,另一个就是KL散度。因为KL散度是非对称的,因此两个网络的散度会不一样。

相比单独训练,每个模型能够取得更高的精度。值得注意的是,就算是两个结构彻底同样的模型,也会学习到不一样的特征表达。

3.3 与其余框架的结合

在进行知识蒸馏时,咱们一般假设teacher模型有更好的性能,而student模型是一个压缩版的模型,这不就是模型压缩吗?与模型剪枝,量化先后的模型对比是同样的。因此知识蒸馏也被用于与相关技术进行结合,apprentice[9]框架是一个表明。

网络结构如上图所示,Teacher模型是一个全精度模型,Apprentice模型是一个低精度模型。

固然模型蒸馏还有一些其余方向,以及对其中每个方向的深刻解读。对模型蒸馏感兴趣的同窗,欢迎到有三AI知识星球的网络结构1000变-模型压缩-模型蒸馏板块进行学习,数十期内容定能知足你的求知欲。

扫码便可加入,了解有三AI知识星球详情请阅读如下文章。

【杂谈】有三AI知识星球一周年了!为何公众号+星球才是完整的?

参考文献

[1] Hinton G, Vinyals O, Dean J. Distilling the knowledge in a neural network[J]. arXiv preprint arXiv:1503.02531, 2015.

[2] Ravi S. ProjectionNet: Learning Efficient On-Device Deep Networks Using Neural Projections[J]. arXiv: Learning, 2017.

[3] Romero A, Ballas N, Kahou S E, et al. Fitnets: Hints for thin deep nets[J]. arXiv preprint arXiv:1412.6550, 2014.

[4] Huang Z, Wang N. Like What You Like: Knowledge Distill via Neuron Selectivity Transfer.[J]. arXiv: Computer Vision and Pattern Recognition, 2017.

[5] Zagoruyko S, Komodakis N. Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer[C]. international conference on learning representations, 2017.

[6] Yim J, Joo D, Bae J, et al. A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning[C]. computer vision and pattern recognition, 2017: 7130-7138.

[7] Furlanello T, Lipton Z C, Tschannen M, et al. Born Again Neural Networks[C]. international conference on machine learning, 2018: 1602-1611.

[8] Zhang Y, Xiang T, Hospedales T M, et al. Deep Mutual Learning[C]. computer vision and pattern recognition, 2018: 4320-4328.

[9] Mishra A K, Marr D. Apprentice: Using Knowledge Distillation Techniques To Improve Low-Precision Network Accuracy[C]. international conference on learning representations, 2018.

总结

本次咱们总结了模型蒸馏的核心技术,并对其重要方向进行了展望,推荐了相关的学习资源,下一期咱们将介绍AutoML在模型优化上的进展。

有三AI秋季划-模型优化组

若是你想系统性地学习模型优化相关的理论和实践,并得到持续的指导,欢迎加入有三AI秋季划-模型优化组,系统性地学习数据使用,模型使用和调参,模型性能分析,紧凑模型设计,模型剪枝,模型量化,模型部署,NAS等内容

模型优化组介绍和往期的一些学习内容总结请参考阅读如下文章:

【通知】如何让你的2020年秋招CV项目经历更加硬核,可深刻学习有三秋季划4大领域32个方向

【总结】有三AI秋季划模型优化组3月直播讲了哪些内容,为何每个从事深度学习的同窗都应该掌握模型优化的内容

转载文章请后台联系

侵权必究

往期精选