模型轻量化方法总结

网络剪枝

剪枝目的在于找出网络冗余连接并移除。由于全连接的连接冗余度远高于卷积层,传统的剪枝多在全连接层对冗余神经元及连接进行移除。虽然移出的神经元及连接对结果影响不大,但仍会对性能造成影响,常见方法为对剪枝后的模型进行微调,剪枝与微调交替进行,保证模型性能。
剪枝两种方法。
后剪枝:模型训练后进行剪枝。
训练时剪枝:模型边训练边剪枝。
剪枝后,权值矩阵由稠密变得稀疏。

image.png

权值量化

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

  • 1.量化相当于引入噪声,但CNN对噪声不敏感。
    1. 位数减少后降低乘法操作,运算变快
  • 3 .减少了访存开销(节能),同时所需的乘法器数目也减少(减少芯片面积)。

低秩近似

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

  1. 低秩分解实现并不容易,且计算成本高昂;
  2. 目前没有特别好的卷积层实现方式,而目前研究已知,卷积神经网络计算复杂度集中在卷积层;
  3. 低秩近似只能逐层进行,无法执行全局参数压缩。

知识蒸馏

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

高效网络结构

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

  • 减小卷积核大小
  • 减少通道数
  • 减少filter数目
  • 池化操作

你可能感兴趣的:(模型轻量化方法总结)