模型蒸馏相关记录

参考这篇文章:

https://zhuanlan.zhihu.com/p/24337627

 

有研究表明深度模型具有较大的信息参数冗余。因此我们可以通过一定的技术方法对复杂的模型进行去冗余压缩。现有的压缩方法主要可以下四类:

 

浅层网络:通过设计一个更浅(层数较少)结构更紧凑的网络来实现对复杂模型效果的逼近。但是浅层网络的表达能力很难与深层网络相匹敌【1】。因此,这种设计方法的局限性在于只能应用解决在较为简单问题上。如分类问题中类别数较少的task。




直接压缩训练好的复杂模型:直接对训练得到的复杂模型采用矩阵量化【2】、Kronecker内积、霍夫曼编码、模型剪枝【3】等优化方式,对模型中的参数进行量化。以实现对模型的压缩,部署阶段采用量化过后的模型可以同时达到参数压缩和提速的效果。



多值网络:最为典型就是二值网络【4】、XNOR【5】网络等。其主要原理就是采用1bit对网络的输入、权重、响应进行编码。减少模型大小的同时,原始网络的卷积操作可以被bit-wise运算代替,极大提升了模型的速度。但是,如果原始网络结果不够复杂(模型描述能力),由于二值网络会较大程度降低模型的表达能力。因此现阶段有相关的论文开始研究n-bit编码【6】方式成为n值网络或者多值网络来克服二值网络表达能力不足的缺点。




蒸馏模型:蒸馏模型采用的是迁移学习,通过采用预先训练好的复杂模型(Teacher model)的输出作为监督信号去训练另外一个简单的网络。这个简单的网络称之为student model。

 

 

下面我们将着重介绍蒸馏模型压缩方法,文章来自Geoffrey Hinton《Distilling the Knowledge in a Neural Network》【7】

 

但是上面的文章没有图,所以看了下面的文章:

https://mp.weixin.qq.com/s/tKfHq49heakvjM0EVQPgHw

《BERT蒸馏完全指南|原理/技巧/代码》

是从下面的文章链接过去的:

https://zhuanlan.zhihu.com/p/71986772

《深度神经网络模型蒸馏Distillation》

 

 

 

posted @ 2022-03-04 17:55  blcblc  阅读(80)  评论(0编辑  收藏  举报