【荐读 IEEE TRO】深度卷积神经网络的结构化剪枝综述

题目:[Structured Pruning for Deep Convolutional Neural Networks: A Survey (https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10330640)

深度卷积神经网络的结构化剪枝综述

作者:Yang He;Lingao Xiao


摘要

深度卷积神经网络(CNNs)的显著性能通常归因于其更深和更宽的架构,但这也带来了显著的计算成本。因此,剪枝神经网络引起了广泛关注,因为它有效地降低了存储和计算成本。与导致非结构化模型的权重剪枝不同,结构化剪枝通过生成硬件友好型模型提供了实际加速的好处。结构化剪枝的特殊需求引发了许多新挑战,并推动了创新解决方案的发展。本文综述了深度卷积神经网络结构化剪枝的最新进展。我们总结并比较了最先进的结构化剪枝技术,包括滤波器排序方法、正则化方法、动态执行、神经架构搜索、彩票假设以及剪枝的应用。在讨论结构化剪枝算法时,我们简要介绍了非结构化剪枝以强调它们的差异。此外,我们提供了结构化剪枝领域潜在研究机会的见解。可以在以下网址找到神经网络剪枝论文的精选列表:https://github.com/he-y/Awesome-Pruning。提供了一个更具交互性的结构化剪枝方法比较网站:https://huggingface.co/spaces/he-yang/Structured-Pruning-Survey。

关键词

  • 计算机视觉
  • 深度学习
  • 神经网络压缩
  • 结构化剪枝
  • 非结构化剪枝

I. 引言

深度卷积神经网络(CNNs)在包括图像分类【1】、目标检测【2】和图像分割【3】等广泛的应用中表现出色,并且在其他许多领域也取得了显著成绩【4】。已经提出了许多CNN结构,包括AlexNet【5】、VGGNet【6】、Inceptions【7】、ResNet【8】和DenseNet【9】。这些架构包含数百万个参数,并且需要强大的计算能力,这使得在资源有限的硬件上部署变得具有挑战性。模型压缩是解决这个问题的方法,旨在减少参数数量、计算成本和内存消耗。因此,其研究变得越来越重要。

为了生成更高效的模型,已经提出了包括剪枝【10】、量化【11】、分解【12】和知识蒸馏【13】在内的模型压缩技术。术语“剪枝”指的是移除网络的部分组件以生成稀疏模型,从而实现加速和压缩。剪枝的目的是在不显著影响模型性能的情况下尽量减少参数数量。大多数关于剪枝的研究都是在CNN的图像分类任务上进行的,这是其他计算机视觉任务的基础。

剪枝可以分为非结构化剪枝【10】和结构化剪枝【14】。非结构化剪枝移除神经网络的连接(权重),导致非结构化稀疏性。非结构化剪枝通常可以实现高压缩率,但需要特定的硬件或库支持以实现实际加速。结构化剪枝则移除整个神经网络的滤波器,可以利用高效的标准硬件和库(如基本线性代数子程序(BLAS)库)实现实际的加速和压缩。

在Transformer时代,从结构化剪枝的角度重新审视CNN的特性是有意义的。近年来,越来越多地将CNN的架构设计融入到基于Transformer的模型中【16】【17】【18】【19】【20】。虽然Transformer中的自注意力机制在计算序列表示方面非常有效,但由于Transformer通常缺乏归纳偏差【18】【22】【23】,因此仍然需要大量的训练数据。相比之下,CNN的结构在权重上强加了局部性和权重共享这两个关键的归纳偏差,从而影响学习算法的泛化能力,并且与数据无关【18】。本综述提供了对CNN的更好理解,并为未来高效架构设计提供了见解。

在这里插入图片描述

在本综述中,我们重点介绍了结构化剪枝。现有的相关压缩研究综述如表I所示。一些综述涵盖了包括量化【24】、知识蒸馏【25】和神经架构搜索【26】等正交领域。一些综述提供了更广泛的概述【27】。尽管一些综述关注于剪枝,但它们更多地关注于非结构化剪枝,并且仅涵盖了少量关于结构化剪枝的研究。引用了结构化剪枝论文的数量分别为【28】【29】【30】【31】【32】【33】【34】,分别为1、11、15、55、38、10和20篇。我们提供了一个更加全面的综述,涵盖了超过200篇结构化剪枝论文。例如,【31】可以在章节II-A、II-B、II-C、II-D1、II-G1和III-A中被涵盖。

本综述的安排如下。在分类法(图1)中,我们将结构化剪枝方法分成不同的类别。第二节的每个小节对应一个结构化剪枝方法的类别。大多数方法首先以非结构化方式开发,然后扩展以满足结构约束。尽管一些研究跨越多个类别,我们将它们放置在最能服务于本综述的类别中。第三节则介绍了一些潜在的、有前途的未来方向。由于篇幅限制,仅详细讨论了最具代表性的研究。

II. 方法

预备知识

一个深度卷积神经网络 N N N 可以用 { W l ∈ R N l + 1 × N l × K l × K l , 1 ≤ l ≤ L } \{W_l ∈ \mathbb{R}^{N_{l+1}×N_l×K_l×K_l} , 1 ≤ l ≤ L\} { WlRNl+1×Nl×Kl×Kl,1lL} 参数化。在第 l l l 层,输入张量 I l I_l Il 的形状为 N l × H l × W l N_l × H_l × W_l Nl×Hl×Wl,输出张量 O l O_l Ol 的形状为 N l + 1 × H l + 1 × W l + 1 N_{l+1} × H_{l+1} × W_{l+1} Nl+1×Hl+1×Wl+1 N l N_l Nl N l + 1 N_{l+1} Nl+1 分别表示第 l l l 层输入和输出张量的通道数。 W l W_l Wl 代表输入张量 I l I_ l Il 和输出张量(特征图) O l O_ l Ol 之间的连接(权重)。权重矩阵 W l W_l Wl N l + 1 N_{l+1} Nl+1 个三维滤波器 F l F_l Fl 组成。具体来说,第 l l l 层中的第 i i i 个滤波器可以表示为 { F i l ∈ R N l × H l × W l , 1 ≤ i ≤ N l + 1 } \{F^l_i ∈ \mathbb{R}^{N_l×H_l×W_l} , 1 ≤ i ≤ N_{l+1}\} { FilRNl×Hl×Wl,1iNl+1}。在本文中,我们称 K l ∈ R K l × K l K_l ∈ \mathbb{R}^{K_l×K_l} KlRKl×Kl 为二维核,因此一个滤波器有 N l N_l Nl 个大小为 K l K_l Kl 的核。为了表示单个权重,我们使用 { w = F i l ( n , k 1 , k 2 ) , 1 ≤ n ≤ N l , 1 ≤ k 1 , k 2 ≤ K l } \{w = F^l_i(n, k1, k2) , 1 ≤ n ≤ N_l, 1 ≤ k1, k2 ≤ K_l\} { w=Fil(n,k1,k2),1nNl,1k1,k2Kl}。第 l l l 层的卷积操作可以表示为:

O i l = I l ∗ F i l for  1 ≤ i ≤ N l + 1 O^l_i = I^l ∗ F^l_i \quad \text{for} \ 1 ≤ i ≤ N_{l+1} Oil=IlFilfor 1iNl+1

其中 ∗ ∗ 表示卷积算子。

结构化剪枝,如滤波器剪枝,旨在:

min ⁡ F L ( F ; D ) = min ⁡ F 1 N ∑ i = 1 N L ( F ; ( x i , y i ) ) , \min_F L(F;D) = \min_F \frac{1}{N} \sum_{i=1}^N L (F; (x_i,y_i)) , FminL(F;D)=FminN1i=1NL(F;(xi,yi)),

s.t. Card ( F ) ≤ κ , \text{s.t.} \ \text{Card}(F) ≤ κ, s.t. Card(F)κ,

其中 L ( ⋅ ) L(·) L() 是损失函数(例如交叉熵损失), D = { ( x i , y i ) } i = 1 N D = \{(x_i,y_i)\}_{i=1}^N D={(xi,yi)}i=1N 是数据集。 Card ( ⋅ ) \text{Card}(·) Card() 是滤波器集的基数, κ κ κ 是目标稀疏水平,例如剩余非零滤波器的数量。

A. 基于权重的方法

基于权重的标准专门设计用于评估神经网络中滤波器的重要性。通过评估这些滤波器的权重,确定哪些滤波器和/或通道对模型性能至关重要。与基于激活的方法相比,基于权重的方法不涉及输入数据。因此,基于权重的方法被认为是简单直接的,并且需要较低的计算成本。基于权重的标准有两个子类别:滤波器范数和滤波器相关性。计算滤波器的范数独立于其他滤波器的范数,而计算滤波器相关性则涉及多个滤波器。

1) 滤波器范数

与使用权重大小作为度量标准的非结构化剪枝不同,结构化剪枝将滤波器范数值作为度量标准。滤波器的 p p p 范数可以写成:

∥ F i l ∥ p = ( ∑ n = 1 N l ∑ k 1 = 1 K l ∑ k 2 = 1 K l ∣ F i l ( n , k 1 , k 2 ) ∣ p ) 1 p , \|F^l_i\|_ p = \left( \sum_{n=1}^{N_l} \sum_{k1=1}^{K_l} \sum_{k2=1}^{K_l} |F^l_i(n, k1, k2)|^p \right)^{\frac{1}{p}}, Filp=(n=1Nlk1=1Klk2=1KlFil(n,k1,k2)p)p1,

其中 i ∈ N l + 1 i ∈ N_{l+1} iNl+1 表示第 l l l 层中的第 i i i 个滤波器, N l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白学视觉

您的赞赏是我们坚持下去的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值