模型轻量化-网络剪枝专栏(一)网络剪枝概述

发布时间 2023-04-24 20:20:20作者: CV技术指南(公众号)
前言 近年来,深度神经网络在许多计算机视觉和自然语言处理任务中取得了很大的成功。然而,这些网络通常具有非常高的计算和存储成本,限制了它们在嵌入式设备和移动设备上的部署。为了解决这个问题,网络剪枝技术被广泛应用于深度神经网络中,以减少其计算和存储需求,成为模型压缩领域流行的研究发现之一。为了全面介绍网络剪枝的相关内容,我们决定以专栏的形式与大家一起分享网络剪枝领域的技术文章。

本教程禁止转载。同时,本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

CV各大方向专栏与各个部署框架最全教程整理

【CV技术指南】CV全栈指导班、基础入门班、论文指导班 全面上线!!

本专栏将包含16篇左右的推文,分为剪枝技术概述、文章解读、总结梳理三个部分,专栏目录初步安排如下:

  • (1)网络剪枝技术概述
  • (2)基本任务,评估指标,数据集等基础内容
  • (3)-(4)传统网络剪枝方法
  • (5)-(12)结构化剪枝方法(主流方法)
  • (13)-(15)非结构化剪枝方法
  • (16)总结梳理

文章安排顺序也可参照图1:

图1 专栏文章安排顺序导图

本专栏适用于想要入门剪枝技术以及想要全面系统的了解剪枝技术发展的读者。本专栏会从剪枝的基本任务,常用数据集、评价指标等基础内容开始讲解,即使是小白也能轻松入门。随后根据网络剪枝技术的发展历程,带领大家由浅入深的了解各阶段的经典方法,让读者对网络剪枝有一个全面且深刻的了解。同时,我们也会对最新的技术进行解读,保证大家能够了解到剪枝领域的前沿技术及发展趋势。最后,会对本专栏内容进行全面总结,梳理各方法的优缺点以及文章之间的递进关系,让读者对网络剪枝有个全面系统的了解。

目录

  • 目录
  • 剪枝三问
    • 什么是网络剪枝?
    • 为什么会有网络剪枝?
    • 网络剪枝是怎么发展的?
  • 剪枝技术的难点
  • 下篇内容预告
  • 参考文献

剪枝三问

什么是网络剪枝?

网络剪枝(Network Pruning)是一种深度学习模型压缩技术,它的主要目标是通过去除神经网络中不必要的参数和连接,以减少模型的大小和计算量,从而实现模型压缩和加速的效果,同时减少模型的存储和运行成本,提高模型的泛化性能。其他的压缩技术还有低秩分解、量化、蒸馏等,由于这几种模型压缩技术是相互正交的,因此可以组合使用。

为什么会有网络剪枝?

网络剪枝技术的出现是为了解决深度学习模型过于庞大,计算资源需求高的问题。通常,深度学习模型中的大部分参数都是冗余的(主要集中在卷积层和全连接层),这些参数对模型的预测结果没有显著的影响,同时会占据大量的存储空间和计算资源,这种现象称为过参数化。

图2.1 HRank剪枝效果示例图

其实不只有深度学习模型中存在过参数化的问题,大多数的机器学习算法和模型也存在参数冗余的现象。去除这些冗余参数和连接可以显著地减少模型的大小和计算量,从而提高模型的效率和准确率,同时还能顺便解决网络过拟合的问题。由此可见,网络剪枝技术的发展是必然的。图2是HRank[1]剪枝方法的实验结果(HRank是结构化剪枝的一个经典方法,在专栏的第二部分我们会单独解读这篇论文,有兴趣的朋友可以先行了解,这里只是通过实验结果来表明剪枝可以在几乎不牺牲精度的前提下大幅度降低计算量和参数量)。

图2.2 HRank剪枝效果示例图

网络剪枝是怎么发展的?

网络剪枝技术最早可以追溯到上世纪80年代,当时学者们就开始研究神经网络的剪枝问题。早期的神经网络剪枝方法主要是基于启发式的规则和经验,例如删除连接时优先选择权重较小的连接,或者基于激活值和权重的敏感度来选择连接等。

然而,这些启发式的规则往往只能在特定的应用场景下发挥作用,并不能通用地适用于各种神经网络结构和任务。直到近年来,随着深度学习的兴起和计算机硬件的发展,网络剪枝技术才开始获得更广泛的关注和应用。

网络剪枝技术的现代形式最早可以追溯到2015年,由Han等人[2]提出的"L1正则化剪枝"方法。此后,网络剪枝技术得到了快速的发展,涌现出了很多新的剪枝方法和算法,例如"L2正则化剪枝"、"Structured Pruning"、"Dynamic Network Surgery"等方法。这些方法不仅提高了模型的效率和准确率,也为网络剪枝技术的研究和应用打下了坚实的基础。

剪枝技术的难点

  1. 剪枝策略的设计:剪枝技术的核心是选择合适的参数和连接进行剪枝,而选择剪枝目标和策略是非常困难的。不同的剪枝策略可能会导致不同的结果,因此需要针对不同的任务和模型选择合适的剪枝策略。
  2. 剪枝后的重训练:剪枝后的模型需要重新训练,以使其性能不会受到剪枝的影响。但是,由于剪枝会导致模型的结构和参数发生变化,因此重新训练会面临很大的挑战。需要设计合适的重训练策略,以保证模型的性能和收敛速度。
  3. 剪枝的可解释性:剪枝后的模型结构变得更加复杂,难以理解和解释。因此,如何保持模型的可解释性和可视化能力也是一个重要的难点。
  4. 剪枝的稳定性:不同的数据集和训练环境可能会对剪枝结果产生影响。因此,如何保证剪枝结果的稳定性和可重复性也是一个挑战。
  5. 剪枝与其他技术的结合:剪枝技术通常需要结合其他的模型压缩和优化技术,例如参数共享、量化、低秩分解等方法,以达到更好的效果。如何将剪枝与其他技术结合起来,并优化整个压缩和优化流程,也是一个非常困难的问题。

下篇内容预告

本篇文章我们通过剪枝三问了解了网络剪枝技术的含义,基本任务,发展历程以及剪枝技术的难点。在下篇文章中我们将继续讲解网络剪枝技术的评价指标以及几种常用的数据集,具体内容请参考下篇【网络剪枝的评价指标与数据集】。

 

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

计算机视觉入门1v3辅导班

【技术文档】《从零搭建pytorch模型教程》122页PDF下载

QQ交流群:470899183。群内有大佬负责解答大家的日常学习、科研、代码问题。

其它文章

CUDA 教程(三)CUDA C 编程简介

目标跟踪(二)单、多目标跟踪的基本概念与常用数据集

【CV技术指南】咱们自己的CV全栈指导班、基础入门班、论文指导班 全面上线!!

即插即用模块 | RFAConv助力YOLOv8再涨2个点

CVPR 2023|21 篇数据集工作汇总(附打包下载链接)

CVPR 2023|两行代码高效缓解视觉Transformer过拟合,美图&国科大联合提出正则化方法DropKey

LargeKernel3D:在3D稀疏CNN中使用大卷积核

ViT-Adapter:用于密集预测任务的视觉 Transformer Adapter

CodeGeeX 130亿参数大模型的调优笔记:比FasterTransformer更快的解决方案

分割一切还不够,还要检测一切、生成一切,SAM二创开始了

CVPR 2023 深挖无标签数据价值!SOLIDER:用于以人为中心的视觉

SegGPT:在上下文中分割一切

上线一天,4k star | Facebook:Segment Anything

Efficient-HRNet | EfficientNet思想+HRNet技术会不会更强更快呢?

实践教程|GPU 利用率低常见原因分析及优化

ICLR 2023 | SoftMatch: 实现半监督学习中伪标签的质量和数量的trade-off

目标检测创新:一种基于区域的半监督方法,部分标签即可(附原论文下载)

CNN的反击!InceptionNeXt: 当 Inception 遇上 ConvNeXt

神经网络的可解释性分析:14种归因算法

无痛涨点:目标检测优化的实用Trick

详解PyTorch编译并调用自定义CUDA算子的三种方式

深度学习训练模型时,GPU显存不够怎么办?

deepInsight:一种将非图像数据转换图像的方法

ICLR2023|基于数据增广和知识蒸馏的单一样本训练算法

拯救脂肪肝第一步!自主诊断脂肪肝:3D医疗影像分割方案MedicalSeg

AI最全资料汇总 | 基础入门、技术前沿、工业应用、部署框架、实战教程学习

改变几行代码,PyTorch炼丹速度狂飙、模型优化时间大减

AAAI 2023 | 轻量级语义分割新范式: Head-Free 的线性 Transformer 结构

计算机视觉入门1v3辅导班

计算机视觉交流群

聊聊计算机视觉入门