本文将介绍最近查阅的有关模型轻量化的相关内容及其方法。

1.网络剪枝

网络剪枝目的在于找出这些冗余连接并将其移除,使其不再参与网络的前向或后向运算过程中,起到减少网络计算量的作用,如下图所示。移除的神经元及相应连接也不再存储,减少了模型的存储量。在这个过程中,一个原本稠密的神经网络由于部分连接的移除而变得稀疏。

由于全连接层冗余度远远高于卷积层,传统的网络剪枝方法多用于全连接层中。网络剪枝往往针对已经训练好的模型进行,在得到训练好的模型后,根据某种评价标准定义每条连接的重要程度一种广泛使用的评价标准是连接权重的绝对值大小,该值越小,说明对应的神经元对网络输出结果影响越小,属于不重要的神经元,应该被移除,对应的连接也应被剪除。虽然移除的连接不那么重要,但随着网络计算过程中的错误累积,网络性能和准确度依然会受到较大的影响,为了消除这些影响,一个很重要的步骤是对剪枝后的网络进行微调训练来恢复网络性能。整个网络剪枝和调优交替进行,直至达到模型大小与模型性能间的最佳平衡。

训练过程:训练->稀疏化->剪枝->微调

权重剪枝主要有两种方式:

(1)后剪枝:拿到一个模型直接对权重进行剪枝,不需要其他条件。

(2)训练时剪枝:训练迭代时边剪枝,使网络在训练过程中权重逐渐趋于0,但是由于训练时权重动态调整,使得剪枝操作对网络精度的影响可以减少,所以训练时剪枝比后剪枝更加稳定。

在剪枝结束后,权值矩阵由稠密矩阵变为稀疏矩阵。

为了减少参数的存储量,通常使用存储稀疏矩阵的压缩存储方式存储参数,代表方式为稀疏行压缩方法 (Compressed Sparse Row,CSR)和稀疏列压缩方法 (Compressed SparseColumn,CSC)。

 

2.权值量化

网络量化通过减少表示每个权重的比特数的方法来压缩神经网络。量化的思想就是对权重数值进行聚类。模型的权值参数往往以32位浮点数的形式保存,神经网络的参数,会占据极大的存储空间,因此,如果在存储模型参数时将 32 位浮点数量化为8位的定点数,可以把参数大小缩小为原来的1/4,整个模型的大小也可以缩小为原来的1/4,不仅如此,随着参数量化后模型的减小,网络前向运算阶段所需要的计算资源也会大大减少。

2.1量化有效原因:

1.量化相当于引入噪声,但CNN(卷积神经网络)对噪声不敏感。

2.位数减少后降低乘法操作,运算变快

3 .减少了访存开销(节能),同时所需的乘法器数目也减少(减少芯片面积)。

3.低秩分解

低秩分解的方法从分解矩阵运算的角度对模型计算过程进行了优化。通过使用线性代数的方法将参数矩阵分解为一系列小矩阵的组合,使得小矩阵的组合在表达能力上与原始卷积层基本一致,这就是基于低秩分解方法的本质。
 

3.1缺点:

1.低秩分解现并不容易,且计算成本高昂;

2.目前没有特别好的卷积层实现方式,而目前研究已知,卷积神经网络计算复杂度集中在卷积层;

3.低秩近似只能逐层进行,无法执行全局参数压缩。

4.知识蒸馏

使用一个大型预先训练的网络(即教师网络)来训练一个更小的网络(又名学生网络)。一旦对一个繁琐笨重的网络模型进行了训练,就可以使用另外一种训练(一种蒸馏的方式),将知识从繁琐的模型转移到更适合部署的小模型。

5.高效网络结构(重新构建轻量化网络)

GoogleNet使用了Inception模块而不再是简单的堆叠网络层从而减小了计算量。ResNet 通过引入瓶颈结构取得了极好的图像识别效果。ShuffleNet结合了群组概念和深度可分离卷积,在ResNet上取得了很好的加速效果。MobileNet采用了深度可分离卷积实现了目前的最好网络压缩效果。

5.1优点:

1.减小卷积核大小

2.减少通道数

3.减少filter数目

4.池化操作

主流轻量化框架:

  1. queezeNet:SqueezeNet 是一个基于 Fire 模块的轻量化卷积神经网络,具有模型大小小、计算速度快的特点。它的设计思想是通过减少网络参数数量和计算量来实现轻量化,同时保持较高的准确率。

  2. CondenseNet:CondenseNet 是一个基于稀疏连接和网络压缩的轻量化卷积神经网络,具有模型大小小、计算速度快的特点。它通过将冗余的连接删除和通道压缩来减少网络参数数量和计算量,同时保持较高的准确率。

  3. MobileNetV2:MobileNetV2 是 MobileNet 的改进版,具有更高的准确率和更快的计算速度。它采用了倒残差结构和线性瓶颈结构来提高模型效率和准确率。

  4. EfficientNet:EfficientNet 是一系列基于自动化网络缩放的轻量化卷积神经网络,具有模型大小小、计算速度快和较高的准确率。它通过自动调整网络深度、宽度和分辨率来实现轻量化,同时保持较高的准确率。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐