深度学习之模型轻量化

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

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

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
模型轻量化是指通过减少模型的大小和计算量,以达到模型压缩和加速的效果的技术。其中,剪枝和蒸馏是常用的模型轻量化方法之一。 剪枝(Pruning)是一种深度学习模型压缩技术,通过去除神经网络中不必要的参数和连接来减少模型的大小和计算量。剪枝的目标是保持模型的性能不受太大影响的情况下,减少模型的存储和运行成本。剪枝可以根据不同的策略和准则进行,例如根据参数的大小或梯度的大小等进行选择。剪枝之后的模型可能会变得更加复杂,难以解释和理解。[1,2] 蒸馏(Distillation)是另一种模型轻量化方法,它通过将一个复杂模型(教师模型)的知识传递给一个简化版本的模型(学生模型)来减少模型的大小和计算量。蒸馏的目标是在保持模型性能的同时,减少模型的复杂性。蒸馏可以通过训练学生模型使其输出与教师模型的输出尽可能接近来实现。通过蒸馏,学生模型可以学习到教师模型的知识和决策能力,从而达到模型轻量化的效果。 剪枝和蒸馏可以相互结合使用,以进一步提高模型轻量化效果。剪枝可以先对模型进行压缩,然后使用蒸馏的方法将压缩后的模型与原始模型进行知识传递,以提高轻量化模型的性能。具体步骤中,剪枝通常是在训练完成后进行,去除不必要的参数和连接,然后进行重新训练(Finetune)以得到可用的最优模型。[1,3]<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [模型轻量化-网络剪枝专栏(一)网络剪枝概述](https://blog.csdn.net/KANG157/article/details/130450717)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [《模型轻量化-剪枝蒸馏量化系列》YOLOv5无损剪枝(附源码)](https://blog.csdn.net/qq_46098574/article/details/125174256)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值