【荐读 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 N_l Nl 是输入通道大小, K l K_l Kl 是核大小。 p p p 是范数的阶数,两种常见的范数是 L 1 L1 L1 范数(曼哈顿范数)和 L 2 L2 L2 范数(欧几里得范数)。

高效卷积网络剪枝(PFEC)【14】基于 L 1 L1 L1 范数计算滤波器的重要性。Li 等人认为范数较小的滤波器激活较弱,对最终的分类决策贡献较小【14】。

软滤波器剪枝(SFP)【115】经验发现 L 2 L2 L2 范数比 L 1 L1 L1 范数略好。这将在第 II-E1 节进一步讨论。

2) 滤波器相关性

通过几何中值滤波器剪枝(FPGM)【52】揭示了“较小范数不重要”的假设并不总是正确的,基于神经网络的实际分布。它不是剪掉不重要的滤波器,而是通过利用同一层滤波器之间的关系来找到冗余滤波器。He 等人认为靠近几何中值的滤波器是冗余的,因为它们代表了同一层所有滤波器共享的公共信息【52】。这些冗余滤波器可以被移除,而不会显著影响性能。

RED【53】使用了一种无数据的结构化压缩方法。它包括三个步骤。首先,对每层的权重进行标量散列。其次,基于滤波器的相对相似性合并冗余滤波器。第三,使用一种新的不均匀深度分离技术对层进行剪枝。

在 RED++【54】中,第三步被替换为一种输入分割技术,以去除诸如乘法和加法之类的冗余操作。其背后的原因是数学操作比内存分配更容易成为瓶颈。

与 FPGM【52】不同的是,FPGM 衡量的是层内滤波器的重要性,而基于相关性的剪枝(COP)【55】比较了跨层滤波器的重要性。为了确定层内滤波器之间的冗余性,COP【55】首先进行皮尔森相关性测试。接下来,采用层级最大归一化来解决基于相关性的重要性度量的缩放效应,以便对跨层的滤波器进行排序。最后,增加了一个成本感知正则化项到全局滤波器重要性计算中,使用户能够更精细地控制预算。

结构冗余减少(SRR)【56】通过寻找最冗余的层来利用结构冗余,而不是在所有层中排名最低的滤波器。首先,每层中的滤波器被建立为一个图。图的冗余性可以通过其两个关联属性来评估,即商空间大小和 ℓ ℓ 覆盖数。具有大值的两个属性表示一个复杂的、因此冗余较少的图。在最冗余的层中,可以应用滤波器范数来剪除最不重要的滤波器。最后,重新建立该层的图,并重新评估各层的冗余性。

在这里插入图片描述

B. 基于激活的方法

与通过权重确定滤波器重要性不同,基于激活的剪枝方法利用激活图来进行剪枝决策。激活图,如公式(1)所述,是通过输入数据和滤波器之间的卷积过程生成的。通道剪枝是滤波器剪枝的另一种说法,因为移除激活图的通道等同于移除滤波器。除了当前层的影响外,滤波器剪枝还通过特征图影响下一层的滤波器。

为了评估第 l l l 层的滤波器,我们可以利用以下激活图的信息:

  1. 当前层 - 可以通过使用重构误差【59】、激活图的分解【60】、通道独立性【62】和后激活【63】【64】来评估通道的重要性;
  2. 相邻层 - 通过利用当前层和下一层之间的依赖关系【67】【68】可以有效识别冗余通道。此外,还可以利用前一层的激活图来指导剪枝决策【123】【124】;
  3. 所有层 - 可以通过最小化最终响应层【70】的重构误差并考虑所有层的判别能力【71】来评估移除滤波器的整体效果。
1) 当前层

通道剪枝(CP)【59】使用第 l l l 层(当前层)的激活图来指导第 l l l 层滤波器的剪枝。它将层级通道剪枝建模为一个优化问题,最小化稀疏激活图的重构误差。解决该优化问题涉及两个交替步骤。(1)为了找到要剪枝的通道,CP 通过固定权重显式解决 LASSO 回归,而不是在训练损失中引入稀疏正则化。(2)为了最小化第 l l l 层特征图的重构误差,在固定剪枝决策的情况下微调权重。

HRank【60】使用当前层激活图的平均秩作为滤波器的重要性,从一小组输入数据中获得。一个重要的发现是,无论接收到什么数据,单个滤波器生成的激活图具有相同的平均秩。为了找到平均秩,采用了奇异值分解(SVD)。在确定了平均秩之后,提出了一种层级剪枝算法来保留排名前 k k k 的滤波器。

基于核心集的压缩(CBC)【61】采用滤波器剪枝对核心集压缩【226】进行预处理。滤波器评分基于整个训练集上激活范数的平均值。然后使用二分搜索找到满足精度约束的最小滤波器数量。

剪枝后,讨论了三种基于核心集的压缩技术,包括 k-Means、结构稀疏 PCA 和激活加权核心集。利用深度压缩【1】,激活加权核心集的表现优于其他方法。

通道独立性(CHIP)由 Sui 等人使用来评估通道重要性【62】。通道独立性由交叉通道相关性确定,表示一个通道是否在其他通道上线性依赖。通道的独立性越高,其重要性越大。通道重要性通过测量激活图的核范数变化来确定。

零平均百分比(APoZ)【63】利用当前层的后激活图,这些图是经过 ReLU 等激活函数后的激活图。后激活图的零平均百分比(APoZ)用于衡量通道的重要性。较小的 APoZ 值意味着大部分激活图被激活,因此这些激活图对最终结果的贡献更大,也更重要。

DropNet【64】使用后激活图的平均幅值作为度量标准。在此度量标准下,小的非零激活值在 DropNet【64】中不再重要,APoZ【63】认为这些值是重要的。使用此度量标准的原因有两个。首先,小的平均幅值表明存在许多不活跃的节点。其次,小的幅值也意味着这些节点对学习的适应性较差。

2) 相邻层

ThiNet【67】使用第 l + 1 l+1 l+1 层(下一层)的激活图来指导第 l l l 层(当前层)的剪枝。其主要思想是通过第 l l l 层激活图的子集来近似第 l + 1 l+1 l+1 层的激活图。子集以外的通道被剪枝。为了找到这些子集,提出了一种贪婪算法。具体来说,该算法贪婪地将通道添加到一个初始为空的集合中,并测量重构误差。选择满足稀疏性约束并且具有最小重构误差的子集。

近似 Oracle 滤波器剪枝(AOFP)【68】使用第 l + 1 l+1 l+1 层的激活图,目标是在剪枝过程中避免使用通常由 Oracle 剪枝方法【14】【63】【95】要求的启发式知识。首先,引入损害隔离的概念,以避免使用启发式重要性度量。损害隔离意味着第 l l l 层剪枝造成的损害由第 l + 1 l+1 l+1 层隔离,使得损害对第 l + 2 l+2 l+2 层不可见。其次,采用多路径框架,利用并行评分和微调的优势。第三,二元滤波器搜索方法用于解决多路径框架的问题。

除了使用下一层的激活图,运行时神经剪枝(RNP)【123】和特征提升与抑制(FBS)【124】利用第 l − 1 l-1 l1 层(前一层)的激活图来指导当前层的剪枝。这两种方法都使用前一层全局平均池化结果作为滤波器的重要性。这将在第 II-E2 节进一步讨论,因为这两种方法都在推理过程中进行动态剪枝。

3) 所有层

尽管现有方法取得了一定的成功,神经元重要性分数传播(NISP)【70】的支持者认为,大多数方法没有考虑重构误差的传播。NISP 提出使用最终响应层(FRL)来确定神经元的重要性,因为所有先前层的重构误差最终将传播到 FRL。最初,FRL 的重要性分数可以通过任何特征排序技术来确定,例如 Inf-FS【227】。然后,神经元的重要性从 FRL 向后传播到前一层。最后,具有低重要性分数的神经元被剪枝。被剪枝的神经元将不再向前传播分数到前一层。

辨别感知通道剪枝(DCP)【71】旨在保留那些在缺失时显著改变最终损失的辨别性通道。然而,剪枝浅层通常会触发最终损失的较小下降,因为传播路径较长。为了解决这个问题,Zhuang 等人引入了每个中间层的辨别感知损失。然后,使用贪婪算法根据辨别感知损失和基线与剪枝网络之间的重构损失来选择通道。

C. 正则化

通过添加不同的稀疏正则化项 R s ( ⋅ ) R_s (·) Rs(),可以用正则化来学习结构化稀疏网络。如果网络包含批量归一化层,则稀疏正则化项可以应用于 BN 参数。为了实现结构化稀疏性,BN 参数用于指示通道或滤波器等结构的剪枝决策。引入额外的参数作为可学习的门来指导剪枝。使用这些额外参数后,网络不再需要批量归一化层。稀疏正则化项也可以直接应用于滤波器。组 Lasso 正则化通常用于以结构化方式稀疏化滤波器。

一般的组 Lasso 定义为以下凸优化问题的解【32】:

min ⁡ β ∈ R p ( ∥ y − ∑ g = 1 G X g β g ∥ 2 2 + λ ∑ g = 1 G n g ∥ β g ∥ 2 ) \min_{\beta ∈ \mathbb{R}^p} \left( \left\| y - \sum_{g=1}^G X_ g β_ g \right\|_ 2^2 + λ \sum_ {g=1}^G \sqrt{n_ g} \left\| β_ g \right\|_2 \right) βRpmin yg=1GXgβg 22+λg=1Gng βg2

其中,特征矩阵被分为 G G G 个组,形成矩阵 X g X_g Xg,该矩阵仅包含组 g g g 的样本以及相应的系数向量 β g β_ g βg n g n_ g ng 表示组 g g g 的大小, λ ≥ 0 λ ≥ 0 λ0 是调节参数。在滤波器剪枝的背景下,第一个项可以看作特征图的重构误差,第二个项可以重写为:

λ ∥ F l ∥ 2 , 1 = λ ∑ i = 1 N l + 1 ∥ F i l ∥ 2 λ \left\| F^l \right\|_ {2,1} = λ \sum_{i=1}^{N_{l+1}} \left\| F^l_i \right\|_2 λ Fl 2,1=λi=1Nl+1 Fil 2

其中,组 G G G 被输出通道 N l + 1 N_{l+1} Nl+1 替换,系数向量 β g β_g βg 被滤波器替换。此外,在使用 ℓ 1 ℓ_1 1 范数、 ℓ 2 ℓ_2 2 范数和 ℓ 2 , 1 ℓ_{2,1} 2,1 范数作为惩罚函数时存在差异(图2)。

1) BN 参数正则化

批量归一化(BN)层已广泛应用于许多现代 CNN,以提高模型泛化能力。通过对每个小批量进行归一化,解决了内部协变量转变的问题。以下方程描述了 BN 层的操作【NS 74】:

z ^ = z in − μ B σ B 2 + ϵ ; z out = γ z ^ + β \hat{z} = \frac{z_{\text{in}} - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} ; \quad z_{\text{out}} = \gamma \hat{z} + \beta z^=σB2+ϵ zinμB;zout=γz^+β

其中, N l + 1 N_{l+1} Nl+1 维度 z in z_{\text{in}} zin z out z_{\text{out}} zout 是 BN 层的输入和输出, μ B μ_B μB σ B σ_B σB 是当前小批量 B \mathcal{B} B 的均值和标准差。 ε ε ε 是一个小数以防除以零。 γ ∈ R N l + 1 γ ∈ \mathbb{R}^{N_{l+1}} γRNl+1 β ∈ R N l + 1 β ∈ \mathbb{R}^{N_{l+1}} βRNl+1 是可学习参数,分别表示缩放和偏移。因此,BN 参数用于滤波器剪枝的门,因为可学习参数的数量等于特征图和滤波器的数量。

网络瘦身(NS)【74】直接使用 BN 中的缩放参数 γ γ γ 来控制输出通道。然后引入通道级稀疏诱导 ℓ 1 ℓ_1 1 正则化以与 γ γ γ 一起训练权重。训练后,剪除那些 γ γ γ 接近于零的通道。为了优化非光滑 ℓ 1 ℓ_1 1 惩罚项,使用子梯度下降法【229】。

与 NS【74】类似,门控批量归一化(GBN)【75】使用 γ γ γ 作为通道级门和 γ γ γ ℓ 1 ℓ_1 1 范数作为正则化项。提出了一种 Tick-Tock 剪枝框架,通过迭代剪枝提高准确性。Tick 阶段以少量数据训练网络,并且在一个周期内只允许更新门和最终线性层。与此同时,通道重要性通过一阶泰勒展开为全局滤波器排名计算。Tock 阶段然后在稀疏性约束下微调稀疏网络。

极化正则化(PR)【76】提供了一种变体 ℓ 1 ℓ_1 1 基正则化器来极化缩放因子 γ γ γ。它认为,在大多数稀疏正则化方法中,如 NS【74】,一个简单的 ℓ 1 ℓ_1 1 正则化器会将所有缩放因子无差别地收敛到零。更合理的方法是将不重要神经元的缩放因子推到零,而重要神经元的缩放因子推到大值。为了实现极化效果,另一个惩罚项被添加到简单 ℓ 1 ℓ_1 1 项中,将 γ γ γ 从其均值尽可能分离开来。与 NS【74】类似,在不可微点上使用子梯度【229】来解决非光滑正则化器。

重新思考较小范数较少信息(RSNLI)【77】是在先前方法的基础上发展起来的,这些方法往往会受到模型重参数化问题和变换不变性问题的影响。由于怀疑较小范数参数的信息量较少,Ye 等人提出在 ISTA【230】的基础上用较大的权重强制 γ γ γ 稀疏性。通道 γ γ γ 等于零则被剪枝。然后使用 γ − W γ-W γW 缩放技巧快速启动稀疏化过程。

考虑操作感知软通道剪枝(SCP)【78】涉及 BN 和 ReLU 操作。与 NS【74】仅基于通道缩放 γ γ γ 进行决策不同,Kang 等人还考虑了移位参数 β β β。具体来说,具有大负 β β β 和大 γ γ γ 的通道被认为不重要,因为这些通道在 ReLU 后将变为零。为了考虑 BN 的大负均值值,高斯分布的累积分布函数(CDF)由 β β β γ γ γ 参数化,并用作指示函数。为了优化 β β β γ γ γ,设计了一个稀疏性损失诱导的 CDF 大值以鼓励网络更稀疏。

EagleEye【79】提出了一个三阶段管道。首先,剪枝策略(即层级剪枝比率)通过简单的随机采样生成。其次,根据剪枝策略和滤波器的 ℓ 1 ℓ_1 1 范数生成子网络。第三,使用自适应 BN 基候选评估模块评估子网络的性能。Li 等人认为,过时的 BN 统计数据对子网络评估不公平,每个候选的 BN 统计数据应在训练数据集的一小部分上重新计算【79】。评估带有自适应 BN 统计数据的子网络后,选择表现最好的一个作为最终剪枝模型。

2) 额外参数正则化

虽然某些研究【75】【77】针对没有 BN 层的网络做了特殊调整,但引入额外参数是一种更通用的解决方案。额外参数 θ θ θ 是可训练的,并将门 g ( θ ) g(θ) g(θ) 参数化以确定剪枝结果。

为了找到稀疏结构,稀疏结构选择(SSS)【80】尝试将结构的输出强制为零。每个结构(即神经元、组或残差块)之后引入一个缩放因子 θ θ θ。当 θ θ θ 低于某个阈值时,移除相应的结构。门 g ( θ ) g(θ) g(θ) 函数为:

g ( θ ) = { 0 , if  θ < Threshold 1 , otherwise g(θ) = \begin{cases} 0, & \text{if } θ < \text{Threshold} \\ 1, & \text{otherwise} \end{cases} g(θ)={0,1,if θ<Thresholdotherwise

它采用凸松弛 ℓ 1 ℓ_1 1 范数作为额外参数 θ θ θ 的稀疏正则化。为了更新 θ θ θ,使用了修正加速近端梯度【231】。

生成对抗学习(GAL)【81】共同剪枝结构,并采用生成对抗网络(GAN)来实现无标签学习。生成器中的每个结构之后引入额外缩放因子,形成软掩码。在训练过程中,提出了包含三种正则化器的特殊正则化项:(1)生成器上的 ℓ 2 ℓ_2 2 权重衰减正则化,(2)掩码上的 ℓ 1 ℓ_1 1 稀疏正则化,和(3)判别器上的对抗正则化。此外,使用 FISTA【230】迭代更新生成器和判别器,并且掩码与生成器一起更新。

离散模型压缩(DMC)【82】在特征图后明确引入离散(二进制)门,以精确反映剪枝通道对损失函数的影响。首先,DMC 使用门函数 g ( θ ) g(θ) g(θ) 随机抽样子网络:

g ( θ ) = { 1 , w.p.  θ 0 , w.p.  1 − θ g(θ) = \begin{cases} 1, & \text{w.p. } θ \\ 0, & \text{w.p. } 1 - θ \end{cases} g(θ)={1,0,w.p. θw.p. 1θ

其中 w.p. 表示“以某概率”。门的随机性确保每个通道都有机会被抽样(如果 θ ≠ 0 θ ≠ 0 θ=0),因此可以生成不同的子网络。为了更新不可微的二进制门,采用了直通估计器【232】。

与 PR【76】类似,具有可区分极化的门(GDP-Guo)【83】旨在极化门。设计一个具有极化效应的门具有平滑 ℓ 0 ℓ_0 0 公式化【233】的特性:

g ( θ ) = θ 2 θ 2 + ε  has property  { ≈ 1 , if  θ ≠ 0 0 , if  θ = 0 g(θ) = \frac{θ^2}{θ^2 + ε} \ \text{has property} \ \begin{cases} ≈ 1, & \text{if } θ ≠ 0 \\ 0, & \text{if } θ = 0 \end{cases} g(θ)=θ2+εθ2 has property {1,0,if θ=0if θ=0

其中 ε ε ε 是一个小的正值以防除以零。此特性将 θ θ θ 极化到精确的 0 或接近 1 的值。门本身是可微的。然而, θ θ θ 的稀疏正则化涉及 ℓ 0 ℓ_0 0 范数并使目标函数不可微。因此,使用近端-SGD【234】更新 θ θ θ

卷积重参数化和梯度重置(ResRep)【84】将 CNN 重新参数化为两个部分。第一部分“记忆部分”学习保持模型性能,不会被剪枝。第二部分“遗忘部分”在 BN 层之后插入 1 × 1 1 × 1 1×1 卷积层或压缩器。在训练过程中,修正的 SGD 更新规则仅更新压缩器。因此,只有压缩器被允许遗忘(剪枝),而其他卷积层保持不变(记忆)。

科学控制剪枝(SCOP)【85】认为,滤波器的重要性可能会受到潜在因素的干扰,例如输入数据。例如,滤波器的重要性排名方法在数据依赖方法中可能因输入数据略有变化而变化。为了最大限度地减少潜在因素的影响,SCOP 通过创建对照组在科学控制下进行剪枝【235】。对照特征与真实特征相同,除了不知道真实标签。引入两个缩放因子 θ θ θ θ ^ \hat{θ} θ^ 来控制真实和对照特征的参与。两个参数互补, θ + θ ^ = 1 θ + \hat{θ} = 1 θ+θ^=1。如果 θ θ θ 不能抑制 θ ^ \hat{θ} θ^,则认为真实特征对真实输出没有或几乎没有关联。因此,滤波器重要性分数定义为 I = θ − θ ^ I = θ - \hat{θ} I=θθ^,具有低重要性分数的滤波器被认为是冗余的。

为了直接控制模型预算,预算感知正则化(BAR)【86】使用优先损失并引入可学习的 dropout 参数 θ θ θ【236】。优先损失是两个函数的乘积。第一个函数是对预算的近似,对 θ θ θ 可微。第二个函数是使用 S 型调度的对数障碍函数【237】。新的目标函数由优先损失组成,使得训练和剪枝同时根据预算进行。然后使用知识蒸馏提高准确性。

3) 滤波器正则化

结构化稀疏学习(SSL)【91】使用组 Lasso 剪枝通道。移除第 l l l 层的通道将导致移除第 l l l 层的滤波器和第 l + 1 l + 1 l+1 层的输入通道。因此,它添加了两个分别用于滤波器级和通道级剪枝的正则化项:

∑ n l = 1 N l + 1 ∥ W n l , : , : , : ( l ) ∥ 2 , ∑ c l = 1 N l ∥ W : , c l , : , : ( l ) ∥ 2 , \sum_{n_l=1}^{N_{l+1}} \left\| W^{(l)}_ {n_l,:,:,:} \right\|_ 2 , \quad \sum_{c_l=1}^{N_l} \left\| W^{(l)}_{:,c_l,:,:} \right\|_2 , nl=1Nl+1 Wnl,:,:,:(l) 2,cl=1Nl W:,cl,:,:(l) 2,

其中 W ( l ) ∈ R N l + 1 × N l × K l × K l W^{(l)} ∈ \mathbb{R}^{N_{l+1}×N_l×K_l×K_l} W(l)RNl+1×Nl×Kl×Kl

出入通道稀疏正则化(OICSR)【92】使用组 Lasso 共同正则化协作工作的滤波器。正则化项为:

∑ i = 1 N ∥ W i , : ( l ) ⊕ W : , i ( l + 1 ) ∥ 2 , \sum_{i=1}^N \left\| W^{(l)}_ {i,:} ⊕ W^{(l+1)}_{:,i} \right\|_2 , i=1N Wi,:(l)W:,i(l+1) 2,

其中 ⊕ ⊕ 表示出通道滤波器 W i , : ( l ) W^{(l)}_ {i,:} Wi,:(l) 和入通道滤波器 W : , i ( l + 1 ) W^{(l+1)}_{:,i} W:,i(l+1) 的连接。它使用的前提是第 l l l 层的出通道滤波器与第 l + 1 l + 1 l+1 层的入通道滤波器相互依赖,因此这些滤波器应共同正则化。

仅训练一次(OTO)【93】认为即使所有滤波器权重为零,激活图也会因为三个参数而非零:1)卷积偏差,2)BN 均值,3)BN 方差。该方法将所有导致非零激活的参数分组到名为零不变组的组中。然后通过应用混合 ℓ 1 / ℓ 2 ℓ_1/ℓ_2 1/2 范数将结构化稀疏引入此组。为了解决非光滑混合范数正则化,使用了名为半空间随机投影梯度的随机优化算法。

增长正则化(GREG)【94】利用增长惩罚进行正则化,并使用两种算法。第一种算法侧重于剪枝计划并采用 ℓ 1 ℓ_1 1 范数【14】以获得剪枝掩码。相反于立即移除不重要的滤波器,使用增长 ℓ 2 ℓ_2 2 惩罚逐渐将其推向零。第二种算法使用增长正则化来利用底层 Hessian 信息。作者观察到随着正则化参数的增加,权重差异增加,权重自然分离。如果差异足够大,即使简单的 ℓ 1 ℓ_1 1 范数也可以作为准确的标准。

在这里插入图片描述

D. 优化工具

优化工具被整合到剪枝过程中,以在神经网络中找到或引导结构化稀疏性。例如,泰勒展开通过在特定滤波器变为零时近似损失函数来找到滤波器的重要性。变分贝叶斯方法通过利用先验和后验分布确定滤波器的重要性。基于 SGD 的方法修改梯度更新规则以检测和解决冗余滤波器。基于 ADMM 的方法通过使用 ADMM 优化算法施加结构化稀疏性约束并找到解决方案。贝叶斯优化有助于减少学习最佳稀疏结构时遇到的“维度诅咒”【238】。

1) 泰勒展开

泰勒展开【239】将函数展开为泰勒级数,这是无穷项的总和。函数 f ( x ) f(x) f(x) 的泰勒展开在某点 a a a 处展开为:

f ( x ) = f ( a ) + f ′ ( a ) 1 ! ( x − a ) + f ′ ′ ( a ) 2 ! ( x − a ) 2 + R 2 ( x ) , f(x) = f(a) + \frac{f'(a)}{1!} (x - a) + \frac{f''(a)}{2!} (x - a)^2 + R_2(x) , f(x)=f(a)+1!f(a)(xa)+2!f′′(a)(xa)2+R2(x),

其中 f ′ ( ⋅ ) f'(·) f() f ′ ′ ( ⋅ ) f''(·) f′′() 分别是关于 x x x 的一阶导数和二阶导数。

在结构化剪枝中,泰勒展开用于近似剪枝结构(如滤波器或通道)时损失 Δ L ΔL ΔL 的变化。由于剪枝权重被设置为零,权重 w w w 的损失函数 L ( w ) \mathcal{L}(w) L(w) 可以在 a = 0 a = 0 a=0 处使用泰勒展开进行评估。通过操控(12),我们可以得到:

L ( w ) − L ( 0 ) = L ′ ( 0 ) 1 ! ( w − 0 ) + L ′ ′ ( 0 ) 2 ! ( w − 0 ) 2 + R 2 ( w ) . \mathcal{L}(w) - \mathcal{L}(0) = \frac{\mathcal{L}'(0)}{1!} (w - 0) + \frac{\mathcal{L}''(0)}{2!} (w - 0)^2 + R_2(w) . L(w)L(0)=1!L(0)(w0)+2!L′′(0)(w0)2+R2(w).

L ( w ) − L ( 0 ) = Δ L \mathcal{L}(w) - \mathcal{L}(0) = ΔL L(w)L(0)=ΔL 为移除某些权重的损失变化, w − 0 = Δ w w - 0 = Δw w0=Δw 为权重的变化。我们可以基于【98】得到以下方程:

Δ L = ∂ L T ∂ w Δ w + 1 2 Δ w T H Δ w + R 2 ( w ) , ΔL = \frac{∂\mathcal{L}^T}{∂w} Δw + \frac{1}{2} Δw^T \mathbf{H} Δw + R_2(w) , ΔL=wLTΔw+21ΔwTHΔw+R2(w),

其中 ∂ L ∂ w \frac{∂\mathcal{L}}{∂w} wL 是损失函数关于权重的梯度, H \mathbf{H} H 是包含二阶导数的 Hessian 矩阵。与基于正则化的方法相比,使用泰勒展开剪枝不需要等待激活函数训练得足够小【96】。

一阶和二阶泰勒展开各有特点。二阶展开包含更多信息,但需要计算二阶导数,这在计算上是不可行的。相反,一阶展开可以通过反向传播获得,而不需要额外的内存,但提供的信息较少。

一阶泰勒:Mol-16【95】使用一阶信息来估计剪枝激活图的损失变化。由于计算上不可行,高阶余项,包括二阶项,被丢弃,因为它们在计算上是不可行的,并且被广泛使用的 ReLU 激活函数鼓励其变得较小。因此,使用一阶项作为特征图重要性的度量,近似的损失变化为:

∣ 1 M ∑ m ∂ L ∂ z m z m ∣ , \left| \frac{1}{M} \sum_m \frac{∂\mathcal{L}}{∂z_m} z_m \right| , M1mzmLzm ,

其中 M M M 是展平特征图的长度, z z z 是特征图中的一个激活值。确定特征图重要性后,将剪枝排名最低的图。

与在跳过连接时失效的 Mol-16【95】相比,Mol-19【96】提出了一种更通用的方法,使用泰勒展开来近似最终损失变化的平方。与 Mol-16【95】使用增加内存消耗的激活不同,Mol-19【96】根据权重计算重要性 I I I

I S ( W ) ≜ ∑ s ∈ S ( ∂ L ∂ w s w s ) 2 , I_S(W) \triangleq \sum_{s ∈ S} \left( \frac{∂\mathcal{L}}{∂w_s} w_s \right)^2 , IS(W)sS(wsLws)2,

其中 S S S 是结构参数集,如卷积滤波器, w s w_s ws 是滤波器的单个权重,并且 ∂ L ∂ w s \frac{∂\mathcal{L}}{∂w_s} wsL 表示梯度。一阶展开的性能显著快于二阶展开,准确率稍有下降。

由于计算的简便性和效率,一阶展开被许多方法广泛采用,如 GBN【75】和 GDP-Lin【116】,将在其他章节讨论。

二阶泰勒:在本小节中,利用包含(14)中二阶信息的 Hessian 矩阵 H \mathbf{H} H。首先,简要介绍了非结构化剪枝的开创性研究。其次,讨论结构化剪枝方法。

开创性非结构化研究:大多数使用二阶泰勒展开的当前结构化剪枝方法基于两项非结构化剪枝的开创性研究:Optimal Brain Damage (OBD)【240】和 Optimal Brain Surgeon (OBS)【241】。OBD【240】假设 H \mathbf{H} H 是对角线以简化计算。然后使用对角线 H \mathbf{H} H 计算参数重要性。然而,OBS【241】发现大多数 Hessian 矩阵 H \mathbf{H} H 强非对角线。因此,使用完整的 H \mathbf{H} H 计算参数重要性,并且 H \mathbf{H} H 的逆被用来计算。

结构化剪枝方法:随着 OBD【240】和 OBS【241】在非结构化剪枝中的成功,二阶展开被应用于结构化剪枝。由于深度 CNN 拥有数百万个参数,计算和存储 Hessian H \mathbf{H} H 变得具有挑战性【97】。最近的方法旨在近似结构化剪枝的 Hessian 矩阵。

协作通道剪枝(CCP)【97】仅使用预训练模型的一阶导数近似 Hessian 矩阵。一阶信息可以通过反向传播获得,不需要额外的存储。此外,Peng 等人利用移除多个通道而不是单个通道的效果。 H \mathbf{H} H 中的非对角线元素反映了两个通道之间的相互作用,因此利用了通道间的依赖性。CCP 将通道选择问题建模为约束的 0-1 二次优化问题,以评估剪枝和未剪枝通道的联合影响。

特征损害(ED)【98】引入了一种基线方法,即 OBD【240】和 OBS【241】的简单结构化扩展。然后应用两种算法改进基线方法。基线方法汇总了单个参数变化,提高到滤波器级。然而,计算和存储 Hessian H \mathbf{H} H 是不可行的。Wang 等人提出使用第一种算法【98】,采用 K-FAC【242】近似分解滤波器。由于朴素扩展和第一种算法未能捕捉滤波器之间的相关性,因此在剪枝前应用第二种算法以使权重去相关。第二种算法采用 K-FAC【242】并将权重投影到 Kronecker-Factored 特征空间(KFE)【243】,其中相关性较小。

组费舍尔剪枝(GFP)【99】解决了其他剪枝方法在多层通道耦合和需要同时剪枝时面临的困难。首先,使用分组算法自动识别耦合通道。其次,使用 Hessian 信息作为单通道和耦合通道的统一重要性标准。借助费舍尔信息,Hessian 矩阵转换为一阶导数的平方。

2) 变分贝叶斯

贝叶斯推断【244】是一种方法,通过已知参数 θ \theta θ 的先验概率分布 p ( θ ) p(\theta) p(θ) 和观测数据 x x x 推断后验概率分布 p ( θ ∣ x ) p(\theta|x) p(θx)。计算后验分布的公式为:

p ( θ ∣ x ) = p ( x ∣ θ ) ⋅ p ( θ ) p ( x ) , 其中  p ( x ) = ∫ p ( x ∣ θ ) p ( θ ) d θ . p(\theta|x) = \frac{p(x|\theta) \cdot p(\theta)}{p(x)} , \quad \text{其中 } p(x) = \int p(x|\theta)p(\theta)d\theta . p(θx)=p(x)p(xθ)p(θ),其中 p(x)=p(xθ)p(θ)dθ.

然而,当涉及大量数据时,计算证据通常需要计算上不可行的积分。变分贝叶斯(VB)方法【245】用于通过变分分布 q ( θ ) q(\theta) q(θ) 近似后验分布 p ( θ ) p(\theta) p(θ)。具体来说,通过最小化测量 q ( θ ) q(\theta) q(θ) p ( θ ∣ x ) p(\theta|x) p(θx) 之间“相似性”的 Kullback-Leibler (KL) 散度来优化 q ( θ ) q(\theta) q(θ)。由于 KL 散度的计算涉及不可行的 p ( θ ∣ x ) p(\theta|x) p(θx),通过等价转换它以最大化证据下界(ELBO)解决优化问题。

变分剪枝(VP)【102】基于随机变量指示的通道重要性,因为通过确定性通道重要性剪枝固有不当且不稳定。因此,使用 BN 的参数 γ γ γ 指示通道显著性,并通过高斯分布 N ( μ , σ ) \mathcal{N}(μ, σ) N(μ,σ) 建模 γ γ γ。为了引入稀疏性,VP 利用高斯分布 N \mathcal{N} N 的中心性属性,并从 N ( μ = 0 , σ ) \mathcal{N}(μ = 0, σ) N(μ=0,σ) 采样 γ γ γ 作为稀疏先验分布。优化 ELBO 后, γ γ γ 的均值接近零且方差较小的分布被认为是安全的剪枝,因为这样的分布不太可能具有显著参数。

为了找到冗余通道,递归贝叶斯剪枝(RBP)【103】针对假设通道间依赖关系的冗余后验。首先,每个输入通道被标度为 dropout 噪声 θ θ θ【105】【236】,具有 dropout 率 r r r。其次,将 dropout 噪声跨层建模为马尔可夫链,以利用通道间依赖性。为了获得冗余后验,选择诱导 Dirac 样先验的稀疏诱导。进一步,RBP【103】采用重参数化技巧【236】将噪声 θ θ θ 标度为相应的通道以考虑数据适应性。结果是,dropout 率 r r r 可以与权重一起更新,采用基于梯度的方式进行剪枝。剪枝通过在 r r r 大于某个阈值时将相应的通道设置为零来进行。

一些其他研究也使用贝叶斯观点。VIBNet【104】使用变分信息瓶颈,其是通道间冗余的理论信息测量。

Louizos 等人【105】利用马蹄先验高效近似通道冗余。Neklyudov 等人【106】使用对数正态先验,导致可行且可解释的对数正态后验。

3) 其他:基于 SGD

相反于剪零滤波器,中心化三元 SGD(C-SGD)【107】使冗余滤波器相同,并将相同的滤波器合并为一个滤波器。正则化动量 RDA (RMDA)【108】增加动量到 RDA 算法【246】,确保训练后的模型具有与原始模型相同的结构。为剪枝模型,RMDA 采用组 Lasso 促进结构化稀疏性。

基于 ADMM:交替方向乘子法(ADMM)【247】是一种优化算法,用于将初始问题分解为两个更小、更易处理的子问题。StructADMM【111】研究了滤波器级和形状级等不同类型的结构化稀疏性的解决方案。Zhang 等人使用渐进和多步 ADMM 框架:每一步,使用 ADMM 剪枝并屏蔽零权重,留下剩余权重作为下一步的优化空间。

贝叶斯优化:贝叶斯优化(BO)【248】是一种全局优化顺序设计策略,用于全局优化不假设任何函数形式的黑盒函数。在涉及极大搜索空间的模型剪枝时,会出现维度诅咒【249】。Roll-back【113】采用 RL 风格的自动通道剪枝【130】,并使用 BO 确定最佳剪枝策略。

软阈值:软阈值【250】是数字信号处理中降噪算子。软阈值重参数化(STR)【114】采用此算子学习非均匀稀疏性预算,并优化每层。

E. 动态剪枝

结构化剪枝可以在训练和推理期间动态进行。训练期间动态剪枝旨在通过在训练期间维持动态剪枝掩码来保持模型的代表能力。这也称为软剪枝,以确保稍后可以恢复不当的剪枝决策。另一方面,硬剪枝永久性移除具有固定掩码的权重。推理期间动态剪枝表示根据不同输入样本动态剪枝网络。例如,与复杂图像相比,包含清晰目标的简单图像需要较少的模型容量【108】。因此,动态推理在资源-准确性权衡方面提供了更好的表现。

1) 训练期间动态:权重级动态

训练时间动态剪枝的概念最早在动态网络手术(DNS)【251】中提出,这是一种非结构化剪枝方法。为了澄清不同方法之间的差异,其公式为:

W i , j l ← W i , j l − η ∂ L ( W l ⊙ T l ) ∂ ( W i , j l T i , j l ) , W^l_{i,j} ← W^l_{i,j} - η \frac{∂\mathcal{L}(W^l ⊙ T^l)}{∂(W^l_{i,j} T^l_{i,j})} , Wi,jlWi,jlη(Wi,jlTi,jl)L(WlTl),

其中 η η η 是学习率, ⊙ ⊙ 表示 Hadamard 乘积运算符。 W l W^l Wl 是第 l l l 层的权重矩阵,所有核展开并连接在一起。 T l T^l Tl 是具有与权重矩阵相同形状的二进制掩码,指示权重的重要性。 L ( ⋅ ) \mathcal{L}(·) L() 是损失函数。 W i , j l W^l_{i,j} Wi,jl T i , j l T^l_{i,j} Ti,jl 分别表示 W l W^l Wl T l T^l Tl 中的单个元素。 W W W T T T 交替更新。更新所有权重,因此被剪枝的参数有机会重新生长。

滤波器级动态:软滤波器剪枝(SFP)【115】采用动态剪枝的想法以结构化方式。其使用基于硬剪枝在整个训练过程中使用固定掩码将减少优化空间的前提。因此,它动态生成基于滤波器 ℓ 2 ℓ_2 2 范数的掩码。软剪枝意味着将滤波器值设置为零而不是移除滤波器。以前软剪枝的滤波器允许在下一个周期更新,在此期间根据新权重重建掩码。更新规则为:

W l ← W l − η ∂ L ( W l ⊙ m l ) ∂ ( W l ⊙ m l ) , W^l ← W^l - η \frac{∂\mathcal{L}(W^l ⊙ m^l)}{∂(W^l ⊙ m^l)} , WlWlη(Wlml)L(Wlml),

其中 W l ∈ R N l + 1 × N l × K l × K l W^l ∈ \mathbb{R}^{N_{l+1}×N_l×K_l×K_l} WlRNl+1×Nl×Kl×Kl m l ∈ R N l + 1 m^l ∈ \mathbb{R}^{N_{l+1}} mlRNl+1

全球动态剪枝(GDP-Lin)【116】在训练期间基于滤波器重要性维持二进制动态掩码。GDP-Lin 采用一阶泰勒展开近似每个滤波器的全局判别力。此外,作者认为频繁更改掩码无法有效指导剪枝。因此,每 ε ε ε 次迭代更新掩码, ε ε ε 设置为递减值以加速收敛。

除了维持稀疏动态掩码外,带反馈的动态剪枝(DPF)【117】同时维持密集模型。其使用背后的前提是可以视为具有压缩误差的密集模型。可以使用误差作为反馈,确保在梯度更新中正确方向。为此目的,从稀疏模型计算的梯度用于更新密集模型。在密集模型上应用梯度的优点是帮助权重从错误中恢复。

通道探索(CHEX)【118】使用两个过程动态调整滤波器重要性。第一个过程是使用列子集选择标准【252】的通道剪枝过程。第二个过程是重新生长过程,基于正交投影【253】避免重新生长冗余通道,并探索通道多样性。重新生长通道恢复到最近使用(MRU)参数而不是零。为了更好地保持模型准确性,剩余通道在所有层之间动态重新分配。

动态稀疏图(DSG)【119】通过在每次迭代动态激活构建的稀疏图中的少量关键神经元进行。DSG 基于按输出激活的直接计算非常昂贵的论点发展。维度减少搜索被制定为通过在较低维度计算输入和滤波器来预测激活输出。此外,为了防止 BN 层损害稀疏性,Liu 等人引入双掩码选择,使用相同选择掩码在 BN 层之前和之后【119】。

其他方法,如 SCP【78】和 DMC【82】,也在推理时动态维持掩码。这些将在第 II-E 节中讨论。

2) 推理期间动态

运行时神经剪枝(RNP)【123】基于稀疏模型利用相同的权重高效地识别简单和复杂的输入图像。它使用 CNN 作为主干网络,RNN 作为决策网络。网络剪枝被建模为马尔可夫决策过程,模型通过强化学习(RL)进行训练。RL 代理评估滤波器的重要性,并根据任务的相对难度执行按通道剪枝。当任务较容易时,为任务生成一个较稀疏的网络。

特征提升和抑制(FBS)【124】根据输入引入可训练和可微分的辅助网络来预测输出通道重要性。在辅助网络中,使用二维全局平均池化来替换通道的激活图。其优点是减少辅助网络的计算开销。辅助预测器则利用所选通道的缩放因子来生成预测分数,通过完全连接的层进行激活函数。最高 k 个显著通道最后在推理时间中用于计算。

深度强化学习剪枝(DRLP)【126】学习整体数据集的重要性来生成剪枝决策。DRLP 使用 RL。RL 框架包含两个部分:静态和运行时。每个部分包含重要性预测器和代理,分别提供静态/运行时重要性和层级剪枝比率。还生成一个联合剪枝决策,基于两个部分的输出。

对比双门控(CDG)【129】使用两个单独的模块(空间和通道门控)来确定推理时间的重要性。空间模块由 3×3 卷积层的自适应平均池化组成,用于提取交互空间特征。通过具有空间掩码,允许仅来自空间特征的有用特征传播到下一层。通道门控模块类似于现有方法,如 FBS【124】,通过使用全局平均池化后的缩放因子来确定通道重要性。为了启用梯度流动,使用 Gumbel-Softmax 重参数化【254】用于空间和通道门控。

火一起生(FTWT)【128】将主要剪枝任务作为自监督二分类问题。提出的框架包含 1)一个预测头,用于学习每个卷积层的二进制掩码和 2)一个地面真相掩码,用于引导学习预测头。预测头由全局最大池化层、1x1 卷积层和一个 softmax 层组成。然后,从预测头到地面真相生成二进制掩码。为了实现自监督学习,基于输入激活对二进制掩码进行排序,生成用于指导学习的地面真相剪枝决策。

同时,对比双门控(CDG)【129】实现了另一种自监督动态剪枝框架,使用对比学习【255】。对比学习从高层特征的潜在对比中学习。类似的基于相似度的对比流【256】用于在有标签数据中进行梯度为主的学习。经验研究表明,剪枝决策不能从对比分支转移。因此,引入了双门控,并且两个分支具有不同的剪枝掩码。CDG【129】使用类似于 CGNet【257】的框架用于每个对比分支。像 DDG【127】一样,使用 3×3 卷积层提取未剪枝特征的空间特征。

F. 基于 NAS 的剪枝

鉴于手动确定剪枝相关超参数(如层级剪枝比率)繁琐,基于 NAS 的剪枝被提出用于自动化和发现剪枝结构。基于对 NAS 方法的调查【26】,我们将 NAS 分为三类:

1) 强化学习(RL)问题,RL 代理通过在操作空间(如剪枝比率)上搜索子网络来找到最佳子网络。
2) 基于梯度的方法,修改梯度更新规则以进行优化并推广具有稀疏约束的剪枝结构。
3) 进化方法,应用进化算法探索和搜索最佳子网络。

1) 基于强化学习

基于强化学习的自动化模型压缩(AutoML for Model Compression, AMC)【130】使用 RL 自动选择合适的层级剪枝比率,而无需敏感性分析。为了在连续操作空间上搜索最佳策略,采用了深度确定性策略梯度(DDPG)算法【258】。Actor 接收 11 个与层相关的状态,并输出连续操作。为了保证准确性,DPG 代理的奖励从(20)到(21)得出:

R e r r = − Error R_{err} = -\text{Error} Rerr=Error

R F L O P s = − Error ⋅ log ⁡ ( FLOPs ) R_{FLOPs} = -\text{Error} \cdot \log(\text{FLOPs}) RFLOPs=Errorlog(FLOPs)

R P a r a m = − Error ⋅ log ⁡ ( Param ) R_{Param} = -\text{Error} \cdot \log(\text{Param}) RParam=Errorlog(Param)

自动图编码器模型压缩(AGMC)【131】提出 AMC【130】仍需手动选择固定 11 状态供 RL 代理使用。相反,使用图神经网络的图形内丰富信息。然后,DNN 被建模为计算图并输入到 GCN 基图编码器【259】,自动学习 RL 代理的状态。与 AMC【130】相比,AGMC 重新调整剪枝比率以学习任何稀疏约束,而不仅应用 FLOPs 进行奖励函数【221】。

DECORE【132】采用多代理学习。由于存在多个代理,用于剪枝的参数通过更高奖励给定,精度保持任务和压缩任务得以平衡:

R l c o m p = ∑ j = 1 N l + 1 1 − a j l , R a c c = { 1 if  y = y ^ 1 − λ else R_{l}^{comp} = \sum_{j=1}^{N_{l+1}} 1 - a_j^l , \quad R_{acc} = \begin{cases} 1 & \text{if } y = \hat{y} \\ 1 - λ & \text{else} \end{cases} Rlcomp=j=1Nl+11ajl,Racc={11λif y=y^else

R l = R l c o m p ⋅ R a c c R_{l} = R_{l}^{comp} \cdot R_{acc} Rl=RlcompRacc

其中 N l + 1 N_{l+1} Nl+1 代表第 l l l 层的输出通道大小, a j l a_j^l ajl 是第 l l l 层的动作向量, y y y y ^ \hat{y} y^ 分别是真实标签和预测标签, − λ -λ λ 是错误预测的惩罚。奖励函数不考虑 FLOPs;相反,压缩任务奖励仅考虑通道数量。

GNN-RL【133】首先将 DNN 建模为多级图神经网络(GNN)以学习全局拓扑。然后,使用生成的层级计算图作为 RL 代理的环境状态。与 AMC【130】和 AGMC【131】不同,GNN-RL 使用近端策略优化(PPO)算法【260】,在稀疏设计上获得更好的结果。此外,由于专门的图设计,RL 系统的奖励不需要包含稀疏约束。精度是奖励的唯一度量,如(20)所述。

2) 基于梯度

火一起生(FTWT)【128】在卷积层和全连接层分别使用两个学习任务:1)与 CNN 的分类任务并行,2)学习稀疏化掩码。通过此框架生成掩码并进行剪枝。首先,FTWT【128】根据每个层的卷积特征生成初始掩码。然后,通过最小化与稀疏正则化【237】结合的交叉熵损失函数来微调掩码。该方法通过结合局部稀疏性和全局稀疏性进行剪枝,确保最终网络具有高稀疏性。

学习滤波器剪枝准则(LFPC)【140】搜索基于层级剪枝准则,而不是剪枝率。其基础在于滤波器有不同的分布以提取粗粒度和细粒度特征。因此,将所有层使用相同的剪枝准则不合适。为了探索剪枝空间,引入准则参数以指导准则选择。为了启用梯度流动,使用 Gumbel-Softmax 重参数化【254】使准则参数可微分。

可变架构搜索(TAS)【141】搜索网络的宽度和深度。引入两个可学习参数 α \alpha α β \beta β 以指示可能的通道和层的分布。根据 α \alpha α β \beta β 采样子网。应用 Gumbel-Softmax 重参数化【254】使采样过程区分。搜索目标是最小化验证损失,同时鼓励更小的计算成本并惩罚不必要的资源预算。知识蒸馏被用来提升剪枝网络的性能。

探索和估计(EEN)【142】通过两步基于梯度的方法实现剪枝。第一步,通过快速采样方法(随机梯度哈密顿蒙特卡罗【262】)探索子网空间。第二步,估计步骤指导高质量子网的生成。

3) 基于进化

元剪枝(MetaPruning)【148】旨在通过两阶段框架找到最佳层-通道数量。第一阶段训练网络 PruningNet 以生成各种结构。PruningNet 随机采样编码向量表示结构,并在端到端方式下学习。第二阶段,部署进化算法搜索最佳结构。在这种情况下无需微调,因为 PruningNet 预测所有已剪枝网络的权重。与 MetaPruning 相比,ABCPrune【149】寻找一阶段方法,无需额外支持网络。此外,通过限制给定空间的预定义结构组合,极大减少搜索时间。

与在整个网络上使用进化算法(EA)不同,剪枝的协作共进化算法(CCEP)【150】使用协作共进化【264】,将网络按层分组,并在每层应用 EA。通过将网络分解为多个组,搜索空间大大减少。总体框架使用迭代剪枝和微调策略。在每次迭代中,通过随机剪枝生成多个个体候选(父代)。通过在父代上进行位级突变生成后代,每个位代表滤波器的存在。然后根据精度和 FLOPs 评估个体,并选择前 top-k 个保留用于下一次迭代。

G. 扩展

结构化剪枝可以通过彩票假设、正交网络压缩技术扩展,并且可以应用不同的结构化稀疏性。

1) 彩票假设

彩票假设(LTH)【265】认为,“当随机初始化的前馈网络包含子网络(中奖票),在单独训练时能以类似迭代次数达到与原始网络相似的精度。”权重重置在 LTH 基于的论文中很常见。在 Frankle 和 Carbin 的研究【265】中,权重和学习率计划重置为 epoch k = 0 k = 0 k=0 的值,以找到初始化时的稀疏子网络。Frankle 等人【266】提议重置权重和学习率计划到 k > 0 k > 0 k>0 的 epoch,并使用 SGD 随机性(噪声)进行训练。提出了不同的实现无结构 LTH 方法:SNIP【267】保留了训练动态;GraSP【268】捕获了梯度流动;神经切片核(NTK)【269】捕获了训练动力学;GF【270】修剪使权重变化最小的权重。Renda 等人【271】建议重置学习率计划,但不重置权重,称为学习率计划重置,结果显示学习率计划重置比权重重置在所有场景下表现更优。

重新评估网络修剪(RVNP)【152】重新评估网络修剪的价值。论点是相对于从头开始修剪,传统微调技术工作得更好。扩展 LTH 到结构化修剪设置以获得大规模数据集不太适合彩票假设。

早鸟(EB)【153】提议在稠密网络早期训练阶段找到中奖票,而不是在整个网络中训练。为了找到 EB 票,衡量来自同一模型修剪的两个子网络之间的汉明距离,并修剪得分最高的票。

前景剪枝(ProsPr)【154】认为应考虑剪枝网络的可训练性。可训练性作为模型在剪枝后重新训练的能力。提出了元梯度(渐变梯度)的可训练性测量。与在训练开始时估计损失变化不同,建议在训练开始时的剪枝效果。

通过梯度流保持早期压缩(Early-CROP)【155】解决早期修剪问题,通过扩展 GF 基于的修剪准则【270】到结构化修剪:1) 如何修剪通过保留训练动态使用梯度流和 NTK【269】,2) 如何在懒惰学习阶段找到稀疏性。

剪枝时觉醒训练(PaT)【156】尝试解决何时开始早期修剪的问题。PaT 的前提是具有相同数量剩余神经元的子网络可能具有非常不同的结构。为了确定架构稳定时剪枝,提出了一个新的度量指标,称为早期修剪指标(EPI),计算两个子网络的结构相似性。

2) 联合压缩

有些方法,例如架构搜索、分解和量化,是正交于结构化剪枝的新型网络压缩方法。应用这些正交压缩序列可能会导致次优解决方案。尽管如此,研究人员尝试将这些技术联合应用。

剪枝与 NAS:NPAS【161】提供一个联合网络剪枝和架构搜索框架。该方法是编译器感知的,并用计算激活函数(如 sigmoid 函数)替换为更友好的激活函数。

剪枝与量化:DIJO【162】在基于梯度的方法中联合执行结构化剪枝和混合精度量化。该结构化剪枝基于变分信息瓶颈【104】,并扩展混合精度量化到 8 位量化。贝叶斯比特(BBs)【163】结合混合精度量化和剪枝,并引入混合门控以执行结构化剪枝。IODF【164】使用 8 位量化后的单次量化,并具有可训练门控以引导结构化剪枝。

剪枝与 NAS 和量化:APQ【165】联合执行剪枝、NAS 和量化。一个一体化网络【272】表示一个大的搜索空间供联合训练。需要设计量化感知精度预测器【273】以验证所选结构,并引导量化。接着,使用进化架构搜索【274】找到资源和精度最佳的模型层次。

剪枝与分解:一些研究在统一框架中利用剪枝和低秩分解。作者 Hinge【166】认为剪枝技术无法处理最后一个 CONV 层在残差块内的低秩分解。两种方法通过在滤波器之后引入稀疏诱导矩阵来实现剪枝和分解。协同压缩(CC)【167】同时学习模型稀疏性和低秩性,显示了通道剪枝和张量分解的优势。

3) 特殊粒度:

除了在权重级别上无结构剪枝和在滤波器级别上结构化剪枝外,还有其他粒度的剪枝方法。为了对这些方法进行分类,我们定义了三个基本维度:输出维度 N l + 1 N_{l+1} Nl+1,输入维度 N l N_l Nl 和卷积核维度 K 2 K^2 K2。滤波器剪枝可以看作沿着 N l × K 2 N_l \times K^2 Nl×K2 维度的剪枝,通道剪枝则沿着 N l + 1 × K 2 N_{l+1} \times K^2 Nl+1×K2 维度。它们类似,因为在第 l l l 层剪枝滤波器将移除第 l + 1 l+1 l+1 层的对应通道。更多不同的剪枝粒度如图 3 所示。

在这里插入图片描述

按基本维度分组:

GBD【170】和 SSL【91】引入了按组剪枝(图 3©),它修剪位于同一层中所有滤波器中相同位置的权重,即沿输出维度 N l + 1 N_{l+1} Nl+1。SWP【171】以条带方式(图 3(d))沿输入维度 N l N_l Nl 修剪滤波器。与按组剪枝相比,条带方式剪枝保持了滤波器独立性,因为没有滤波器之间的模式。PCONV【172】使用按核剪枝(图 3(e))沿卷积核维度 K 2 K^2 K2 修剪权重。

在基本维度中多样化:

一些研究人员认为在基本维度上做出相同的剪枝决策可能不是最优的,因此他们建议查看基本维度。GKP-TMI【173】使用按组核剪枝(图 3(f))。在按核剪枝的基础上,该方法将不同滤波器分组,并在输出维度 N l + 1 N_{l+1} Nl+1 上做出多样化的剪枝决策。剩余的核重新排列以输出一个密集的结构化剪枝网络,从并行计算中受益。1xN【174】(图 3(f))使用 1xN 剪枝模式,处理共享相同输入通道索引的 N N N 输出核作为基本剪枝粒度。PCONV【172】通过查看卷积核并在卷积核维度 K 2 K^2 K2 中做出不同的剪枝决策,使用按模式剪枝(图 3(g))。块状剪枝【161】(图 3(h))推广了按模式剪枝【172】以共享同一模式的卷积核组,其中卷积核在输出维度 N l + 1 N_{l+1} Nl+1 和输入维度 N l N_l Nl 中都被分组。其他可能的粒度。还有一些可能的结构化粒度,如分组条带(图 3(d) 扩展)和分组模式(图 3(g) 扩展)。多粒度【179】也值得在结构剪枝中进行调查。

层级:

除了将滤波器分解成更小的粒度外,浅化深度网络(SDN)【175】使用层级剪枝剪掉整个层。具体地说,SDN 在每层之后放置一个线性分类探针【275】以评估该层的有效性。网络通过蒸馏技术在修剪不重要的层后进行重新训练。

III. 未来方向

A. 修剪主题:

第二部分中的每个小节在未来都有进一步发展的潜力。此外,结构化剪枝将继续借鉴无结构剪枝的思想。在本节中,我们将讨论一些直接与剪枝相关的有前途的主题。

剪枝理论:除了使用第 II-D 节中的优化工具进行剪枝外,一些工作从突触流【180】、信号传播【181】和图论【182】的角度来看待剪枝。此外,剪枝过程可以通过利用模型的解释【183】、损失地形【110】、泛化稳定性权衡【184】和模型熵【185】来指导。此外,研究了 LTH 背后的理论与对数修剪【186】。此外,可以结合不同的训练方法【187】、【188】、【189】进行剪枝。上述方向在结构剪枝中具有潜力。

剪枝机制:研究人员对现有的三阶段训练-剪枝-再训练机制有了新的看法。首先,在无结构剪枝上提出的彩票假设预计将在结构剪枝上扩展。其次,单次剪枝【190】、【191】仅剪枝一次以获得修剪后的模型。结构化剪枝可能受益于该机制。第三,AC/DC 训练【192】能够同时训练密集和稀疏模型。因此,在剪枝和训练期间处理多个模型是结构化剪枝的另一个有前途的方向。

剪枝率:结构化剪枝还可以扩展当前权重剪枝策略,研究逐层剪枝比率【144】、【193】、【194】。

剪枝域:在频域中利用表示【65】、【195】来指导剪枝是另一个有趣的方向。

B. 针对特定任务的剪枝

剪枝技术可以应用于其他任务以实现高计算效率。以下是一些直观的例子:超分辨率【203】、个人重识别【204】、【276】、医学成像诊断【205】、面部属性分类【206】和集成学习【207】、【208】。除了上述任务外,一些新兴方向仍处于早期阶段,但在未来前景光明。

联邦学习的剪枝:联邦学习【277】旨在解决无需将数据传输到中央位置而训练模型的问题。剪枝【196】、【197】有助于减轻设备和服务器之间所需的通信成本。Zhang 等【196】认为每个设备和服务器的非独立同分布(non-IID)程度不同,因此提出计算每个设备的不同剪枝比率,并为服务器汇总预期的剪枝比率。

持续学习的剪枝:持续学习解决灾难性遗忘问题【198】。一些开创性工作【199】、【200】、【201】使用稀疏化网络的修剪滤波器来训练新任务,因此训练过程不会导致以前任务性能的下降。

有限数据集:数据集压缩和剪枝【278】正在兴起。其思想是利用训练数据集中图像的一部分来训练网络。结构化剪枝【202】在这一新趋势中有很多话题可以研究。

C. 剪枝特定网络

除了流行的 CNN 之外,剪枝对其他类型的神经网络(如 MLP【217】、整流神经网络【218】、尖峰神经网络【219】、【220】和生成对抗网络(GAN)【209】、【210】、【211】、【212】)也是有益的。

基于 CNN 的 Transformer 的剪枝:将 CNN 的架构设计融入 Transformer 模型的趋势不断增长【16】、【17】、【18】、【19】、【20】。因此,采用这些结构化剪枝技术压缩这些新架构设计具有意义【15】、【213】。

基于 Transformer 架构的剪枝:Transformer 架构的注意力机制基本上通过使用全连接层进行操作,可以视为卷积层的独特表现,当卷积核大小设置为 1 时【279】。近年来,基础模型【214】(如 GPT-3【215】)和通用代理(如 Gato【216】)是通向人工通用智能(AGI)的可能途径。这些庞大模型的注意力组件的效率可以从结构化剪枝研究中受益。

D. 剪枝目标

近年来,剪枝的目标已经从无结构剪枝中减少参数数量转变为结构化剪枝中最小化 FLOP。最近,剪枝的目标一直在演变以满足实际场景的需求。

硬件:将剪枝纳入硬件过程是一个新兴趋势。硬件编译器感知剪枝【221】基于编译器调优期间构建的子图的结构信息进行剪枝。

能源:随着 AI 模型的部署扩大,AI 模型的能源消耗需要更多关注。在剪枝过程中考虑能源应该被调查。能源感知剪枝【222】贪婪地剪掉消耗最多能源的层,因为最小化 MACs 可能无法减少最多能源消耗。

鲁棒性:网络的鲁棒性描述了在攻击下网络被愚弄做出错误预测的难易程度【223】。在模型设计过程中考虑鲁棒性和计算成本是一个新趋势。研究人员发现剪枝带来的稀疏性可以提高对抗鲁棒性【280】。线性嫁接(Grafting)【224】基于网络鲁棒性倾向于线性函数,并提出了线性嫁接方法。ANP-VS【225】识别出具有高脆弱性的潜在特征,并提出了一个贝叶斯框架,通过最小化对抗损失和特征级脆弱性来剪除这些特征。

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值