社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

趣味深度学习系列(一):深度学习技术中的   “教师”与“学生”

飞桨PaddlePaddle • 5 年前 • 1174 次点击  

老师,
您辛苦了

“师者,所以传道受业解惑也。”

教师,是神圣而伟大的职业,倾其所能,教书育人,桃李遍开花。

今天是教师节,首先祝所有的老师们节日快乐!

(图片源于网络)

提到深度学习、老师这两个关键词,第一时间是不是想到的是站在讲台上,写着复杂的损失函数和信息论的授课讲师,亦或是教学视频里面,带你劈哩叭啦一行一行敲代码的实践老师?

 

感谢恩师之余,你是否知道,在深度学习的技术中,有这样一个有趣的算法竟然也包含着teacher和student的奥义?

 

不卖关子,它就是:


知识蒸馏(Distill)

 

一种既可以认为是迁移学习也可以认为是模型压缩的算法,最早由 Hinton 在 2015 年提出,不知道是不是也是受他多年教学生涯的启发呢。



化学课上的蒸馏,是不是又想起了高中的化学老师

 

深度学习技术里的模型蒸馏,虽然不是化学里面的概念,但其实也是一个非常形象的过程,在详细的技术介绍之前,我们先通俗的理解一下这个概念。

 

模型蒸馏,是指将一个复杂模型(teacher)所学习到的有效信息提取出来,迁移到一个更简单的模型(student)中去,这里就涉及到了“师”与“生”【知识传授】的概念。

 

我们都知道,对神经网络来说,模型结构越复杂,参数越多,网络能学习到的知识就越丰富,效果也越好。但是过于复杂的神经网络,它的运算量和资源消耗都是非常大的,不便于在移动端的部署。

 

我们将复杂网络类比成是teacher,teacher耗费大量的时间和精力,终于习得了大量的知识。此时,伟大的teacher将毕生所学中最精华的部分“蒸馏”和提炼出来,毫无保留地传授给student网络,能够让student 网络用很简单的结构,就掌握teacher网络中最精华最有价值的知识,从而达到逼近teacher的模型效果,可谓是“浓缩的都是精华”。

 

这就是对模型蒸馏最通俗的解释。

 

经模型蒸馏而得到的student网络,兼具结构简单、准确率高、运算量和资源消耗小等优点。模型蒸馏一般被归类到模型压缩算法中,算是众多模型压缩算法中的一个,在具体了解模型蒸馏之前,我们一起来看看它的大家族模型压缩工具集吧。


01
飞桨模型压缩工具集PaddleSlim


模型蒸馏外,PaddleSlim还提供了模型剪裁、量化训练、轻量神经网络结构自动搜索等功能,并且支持多种压缩策略的组合使用,帮助您的模型减肥瘦身!

 

我们以MobileNetV1模型为Baseline,在ImageNet 1000类分类任务上对PaddleSlim的压缩效果进行了实测:


  • 采用【ResNet50蒸馏训练+量化】的策略,模型大小由17.0M压缩至4.8M,实现了71.76%的压缩,精度不但没有损失反而提升了1.38%(top5)和1.06%(top1)。

  • 采用【剪裁-50% FLOPS+量化】的策略,模型大小由17.0M压缩至2.3M,实现了86.47%的压缩,精度损失只有0.43%(top5)和1.71%(top1)。

 

详细数据如下:

 


以MobileNet v2为Baseline,基于模拟退火的自动剪枝策略和轻量级模型结构自动搜索功能Light-NAS在精度几乎无损的情况下,
FLOPS 减少了17%。详细数据如下:  

 

 

02
PaddleSlim压缩算法介绍

PaddleSlim提供了模型蒸馏、模型剪裁、量化训练、轻量神经网络结构自动搜索等多种压缩算法,下面我们逐一地进行介绍。

 

2.1 模型蒸馏

 

在PaddleSlim工具包中,支持两种模型蒸馏的方法。

 

(1) 传统的蒸馏方法


模型蒸馏的概念,最早由Hinton 在 2015 年提出,核心思想是用一个或多个训练好的 teacher(大模型)指导 student(小模型)进行训练,在论文「Distilling the Knowledge in a Neural Network」中,对于分类任务要学习的目标,将图片实际的类别概率信息称为 hard target(只有真实类别对应的概率为 1,其他为 0),而模型输出的类别概率信息称为 soft target(各个类别概率都为一个大于 0 的值)。

 

由于类别之间具有相关性,softtarget 相比 hard target 具有更高的信息熵,比如一张猫的图片,在 soft target 中,其分到狗的概率一般会大于分到汽车的概率,而不是 hardtarget 中将它们都设置为 0,导致没有区别。

 

使用大模型产生 softtarget 代替 hard target 能获得更多的信息和更小的梯度方差,可以达到更好的性能。一般模型蒸馏的流程如下,先训好一个大模型,让后让小模型去拟合大模型产生的 soft target,在蒸馏结束后,一般还会使用真实的 label 信息进行 fine-tuning,如下图所示:



另外,为了使 softtarget 中各个类别的概率值更加平滑,文章中还引入了一个温度系数 T 的概念,对大模型输出的概率值做一个平滑处理,具体公式如下:

T 一般被设置成一个大于 1 的数,T值越大,输出的概率值越平滑。

 

(2) 基于FSP的蒸馏方法


相比传统的蒸馏方法直接用小模型去拟合大模型产生的soft target,论文「A Gift from Knowledge Distillation: FastOptimization, Network Minimization and Transfer Learning」尝试用小模型去拟合大模型不同层特征之间的转换关系(flow of the solution procedure),用一个 FSP 矩阵(特征的内积)来表示不同层特征之间的关系,计算公式如下:



大模型和小模型不同层之间分别获得多个 FSP 矩阵,对于 Resnet 网络结构,每个 stage 可产生一个 FSP 矩阵,然后使用 L2 loss 让小模型的对应层 FSP 矩阵和大模型对应层的 FSP 矩阵尽量一致,具体公式如下: 



基于FSP的蒸馏全过程如下图:



FSP蒸馏方法的效果是优于传统蒸馏方法的。

 

通俗一点的解释是,蒸馏的过程其实就是teacher(大模型)教 student(小模型)解决问题的过程。在教学的过程中,传统蒸馏方法是teacher直接告诉student这道问题的答案,让小模型记住;而FSP蒸馏方法则是让student学习teacher在解决问题时的中间过程和方法。

 

正所谓“授人以鱼不如授人以渔”,FSP蒸馏方法自然能取得更优的效果。

 

除了模型蒸馏之外,PaddleSlim还提供了多种模型压缩算法


    2.2 模型剪裁


  • 支持通道均匀模型剪裁(uniform pruning)、基于敏感度的模型剪裁、基于进化算法的自动模型剪裁三种方式

  • 支持VGG、ResNet、MobileNet等各种类型的网络

  • 支持用户自定义剪裁范围


    2.3 量化训练


a:支持动态和静态两种量化训练方式

  • 动态策略: 在推理过程中,动态统计激活的量化参数。

  •  静态策略: 在推理过程中,对不同的输入,采用相同的从训练数据中统计得到的量化参数。

b:支持对权重全局量化和Channel-Wise量化

c:支持以兼容Paddle Mobile的格式保存模型


    2.4 轻量神经网络结构自动搜索


  • 支持基于进化算法的轻量神经网络结构自动搜索(Light-NAS)


    2.5 其它功能


  • 支持配置文件管理压缩任务超参数

  • 支持多种压缩策略组合使用

  • 蒸馏和模型剪裁压缩过程支持checkpoints功能


03
传送门


PaddleSlim实战教程:

https://github.com/PaddlePaddle/models/blob/v1.5.1/PaddleSlim/docs/usage.md

  

想与更多的深度学习开发者交流,请加入飞桨官方QQ群:796771754


如果您想详细了解更多飞桨PaddlePaddle的相关内容,请参阅以下文档。

 

官网地址:https://www.paddlepaddle.org.cn

项目地址:

https://github.com/PaddlePaddle/models/tree/v1.5.1/PaddleSlim 


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40141
 
1174 次点击