没有合适的资源?快使用搜索试试~ 我知道了~
45100ResRep: 通过解耦记忆和遗忘实现无损CNN剪枝0丁晓涵 1,2 郝天翔 1,2 谭建超 3 刘佶 30韩俊功 4 郭宇辰 1 丁贵光 1,2 *01 北京国家信息科学技术研究中心(BNRist) 2 清华大学软件学院,北京,中国 3AI平台部门,西雅图AI实验室和FeDA实验室,快手公司 4阿伯里斯特威斯大学计算机科学系,SY23 3FL,英国0dxh17@mails.tsinghua.edu.cn beyondhtx,tanjianchaoustc,ji.liu.uwisc@gmail.com0jungonghan77,yuchen.w.guo@gmail.com dinggg@tsinghua.edu.cn0摘要0我们提出了ResRep,一种新颖的无损通道剪枝方法,通过减小卷积层的宽度(输出通道数)来精简CNN。受到关于记忆和遗忘独立性的神经生物学研究的启发,我们提出将CNN重新参数化为记忆部分和遗忘部分,其中前者学习保持性能,后者学习剪枝。通过在前者上使用常规SGD进行训练,而在后者上使用一种新的更新规则和惩罚梯度,我们实现了结构化稀疏性。然后,我们将记忆和遗忘部分等效地合并到具有较窄层的原始架构中。从这个意义上讲,ResRep可以看作是结构再参数化的成功应用。这种方法与传统的基于学习的剪枝范式不同,后者在参数上施加惩罚以产生稀疏性,这可能会抑制记忆所需的参数。ResRep将在ImageNet上准确率为76.15%的标准ResNet-50精简为仅有45%的FLOPs,且没有准确率下降,这是首次实现如此高压缩比的无损剪枝。代码和模型可在https://github.com/DingXiaoH/ResRep找到。01. 引言0压缩和加速卷积神经网络(CNN)的主流技术包括稀疏化0*本工作得到了中国国家自然科学基金(No. 61925107, U1936202,61971260)、中国国家重点研发计划(No.2020AAA0105500)的支持。丁小涵的研究得到了百度奖学金计划2019的资助。通信作者:郭宇辰,丁贵光。0[ 10 , 18 , 20 ],通道剪枝[ 26 , 27 , 35 ],量化[ 4 , 5 ,45 , 68 ],知识蒸馏[ 28 , 32 , 41 , 61]等。通道剪枝(也称为滤波器剪枝或网络瘦身)通过减小卷积层的宽度(即输出通道数)有效减少浮点运算(FLOPs)和内存占用,这与其他模型压缩方法互补,因为它产生了原始架构的更窄的模型,没有自定义结构或操作。0然而,由于CNN的表示能力取决于卷积层的宽度,很难在不降低性能的情况下减小宽度。在实际的CNN架构(如ResNet-50)和大规模数据集(如ImageNet)上,高压缩比的无损剪枝一直被认为是具有挑战性的。为了在压缩比和性能之间取得合理的平衡,一种典型的范式(图1.A)通过在卷积核上训练与幅度相关的惩罚损失(例如,组Lasso)来产生结构化稀疏性,这意味着一些通道的所有参数变得很小。理想情况下,如果剪枝通道的参数足够小,剪枝后的模型可能会与之前(即剪枝之前的训练后)的性能相同,我们称之为完美剪枝。0由于训练和修剪都可能降低性能,我们从两个方面评估基于训练的修剪方法。1)抗性。训练阶段倾向于降低准确性(称为训练引起的损害),因为它引入了一些期望的属性(如结构稀疏性)到模型中,这可能是有害的,因为优化目标发生了变化,参数偏离了最优值。如果性能在训练过程中保持较高,则我们称模型具有高抗性。2)修剪性。当我们在训练后将模型修剪为较小的模型时,获得的属性(例如稀疏性)可能会受到损害,因此我们需要评估修剪后模型的性能。45110许多通道接近于零)将减少修剪引起的损害。如果模型在高修剪比例下性能下降较低,我们称其具有高修剪性。我们希望既具有高抗性又具有修剪性,但传统的基于惩罚的范式在抗性和修剪性之间自然存在权衡。例如,强群体Lasso通过巨大的训练引起的损害实现高稀疏性,而弱惩罚保持性能但导致低稀疏性,因此造成了巨大的修剪引起的损害。第3.3节提供了详细的分析。在本文中,我们提出了ResRep来解决上述问题,这受到了关于记忆和遗忘的神经生物学研究的启发。1)记忆要求大脑增强某些突触,但减弱其他突触,这类似于训练CNN使某些参数变大,某些参数变小。2)通过收缩或丧失突刺来消除突触是一种经典的遗忘机制[56],是提高生物神经网络能量和空间效率的关键过程,类似于修剪。神经生物学研究表明,记忆和遗忘分别由Rutabaga腺苷酸环化酶介导的记忆形成机制和Rac调节的突刺收缩机制独立控制[16,21,59],这表明通过两个解耦模块进行学习和修剪更为合理。受到这种独立性的启发,我们提出将“记忆”和“遗忘”解耦,传统范式中的卷积参数既参与“记忆”(目标函数)又参与“遗忘”(惩罚损失),以实现权衡。也就是说,传统方法强制每个通道“遗忘”,并删除“遗忘最多”的通道。相反,我们首先将原始模型重新参数化为“记忆部分”和“遗忘部分”,然后在前者上应用“记忆学习”(即原始目标的常规SGD)以保持“记忆”(原始性能),并在后者上进行“遗忘学习”以“消除突触”(将通道置零)。ResRep包括两个关键组成部分:卷积重新参数化(Rep,解耦的方法和相应的等效转换)和梯度重置(Res,用于“遗忘”的更新规则)。具体而言,在我们希望修剪的原始卷积层之后插入一个压缩器,它是一个1×1的卷积。在训练过程中,我们仅对压缩器添加惩罚梯度,选择一些压缩器通道并将其从目标函数导出的梯度置零。这样的训练过程使得一些压缩器通道非常接近于零,这些通道被移除而不会造成修剪引起的损害。然后,我们通过一些线性变换(Eq. 8,9)将压缩器与前面的卷积等效转换为具有较少通道的单个卷积。请注意,该方法可以很容易地推广到原始卷积之后跟随批归一化(BN)[31]的常见情况。在这种情况下,我们在BN之后添加压缩器,并通过首先将conv-BN等效融合为具有偏置的卷积(Eq.4)来将训练时的模型转换为修剪后的模型。最终,结果模型与原始模型具有相同的架构(即没有压缩器),但是层变窄了(图1.B)。由于从训练时模型到修剪模型的等效转换依赖于参数的等效转换,因此ResRep可以被视为结构重新参数化的应用[11,15,14,13]。其他结构重新参数化的工作通过普通的训练过程改进了类似VGG的架构[15]、基本卷积层[11,13]或MLP风格的构建块[14],但都没有丢失原始信息。相比之下,ResRep不仅构建了额外的结构(即压缩器),可以等效地转换回来(Rep),而且还使用了自定义的训练策略(Res)。如第4.3节所示,Rep和Res都是必不可少的:Rep构建了一些结构,以便Res可以应用于它们而不丢失原始信息;Res将一些通道置零,以便Rep可以使得结果卷积层变窄。值得注意的是,ResRep也可以修剪全连接层,因为它等效于一个1×1的卷积[46]。0如果conv之后跟随批归一化(BN)[31],我们在BN之后添加压缩器,并通过首先将conv-BN等效融合为具有偏置的卷积(Eq.4)来在训练后将conv-BN压缩器序列转换。最终,结果模型与原始模型具有相同的架构(即没有压缩器),但是层变窄了(图1.B)。由于从训练时模型到修剪模型的等效转换依赖于参数的等效转换,因此ResRep可以被视为结构重新参数化的应用[11,15,14,13]。其他结构重新参数化的工作通过普通的训练过程改进了类似VGG的架构[15]、基本卷积层[11,13]或MLP风格的构建块[14],但都没有丢失原始信息。相比之下,ResRep不仅构建了额外的结构(即压缩器),可以等效地转换回来(Rep),而且还使用了自定义的训练策略(Res)。如第4.3节所示,Rep和Res都是必不可少的:Rep构建了一些结构,以便Res可以应用于它们而不丢失原始信息;Res将一些通道置零,以便Rep可以使得结果卷积层变窄。值得注意的是,ResRep也可以修剪全连接层,因为它等效于一个1×1的卷积[46]。0算法1 ResRep通道修剪流程。01:输入:训练良好的模型W2:使用压缩器构建重新参数化的模型ˆW。将压缩器初始化为单位矩阵,将其他部分初始化为W的原始参数03:对于i =0到最大训练迭代次数,执行以下操作:4:通过ˆW前向传递一个批次,使用原始目标函数计算损失,推导梯度05:仅对压缩器的梯度应用梯度重置(Eq.14)06:使用压缩器的重置梯度和其他参数的原始梯度更新ˆW07:结束循环8:删除与0接近的压缩器行(例如,范数≤10-5)在ˆW中。等效地将ˆW的参数转换为W'(Eq.4,8,3)。现在W'0具有与W相同的体系结构,但更窄的层09:输出:修剪后的模型W'0ResRep特征:1)高阻抗。为了保持性能,ResRep不改变原始模型(即conv-BN部分)的损失函数、更新规则或任何训练超参数。2)高修剪性。压缩器受到惩罚梯度的驱动,使得许多通道足够小,以实现完美的修剪,即使惩罚强度较轻。3)给定所需的FLOPs全局减少比例,ResRep自动找到每个层的适当最终宽度,无需先验知识,使其成为CNN的强大工具。......451203×30预测0卷积参数(4个通道,每个通道9个参数)0卷积梯度0SGD更新0多次迭代0损失0+惩罚损失0不完美0修剪卷积参数(2个通道,0每个通道9个参数)0SGD更新0多次迭代0完美0修剪0通道0选择0掩码0梯度0重置0训练过程0修剪层0(A)传统的基于惩罚的范式。0(B)ResRep。0批量归一化03×303×30预测0训练过程0批量归一化0卷积参数0压缩器 压缩器0参数0损失0卷积梯度0压缩器梯度0修剪层03×30等效转换0+惩罚梯度0图1:传统的基于惩罚的修剪与ResRep。我们以一个输入通道和四个输出通道的3×3层为例进行修剪。为了便于可视化,我们将核K∈R4×1×3×3展平为矩阵W∈R4×9。A)为了修剪K的一些通道(即W的行),我们在核上添加一个惩罚损失到原始损失,以便梯度使得某些行的幅度变小,但不足以实现完美修剪。B)ResRep构建了一个具有核矩阵Q∈R4×4的压缩器。在惩罚梯度的驱动下,压缩器选择其中的一些通道并生成一个二进制掩码,将一些Q的原始梯度重置为零。经过多次迭代,那些具有重置梯度的压缩器通道变得无限接近于零,从而实现了完美修剪。最后,卷积-BN-压缩器序列等效转换为具有两个通道的常规卷积层。空白矩形表示零值。0结构优化。4)端到端训练和易于实现(Alg.1)。我们总结了我们的贡献:•受神经生物学研究的启发,我们提出了将“记忆”和“遗忘”解耦以进行修剪。0•我们提出了两种技术,Rep和Res,以实现高抗性和可修剪性。它们可以分别使用,组合后可以获得最佳性能。0•我们在常见的基准模型上取得了最先进的结果,包括在ImageNet上对ResNet-50进行真实的无损修剪,修剪比例为54.5%。02. 相关工作0修剪可以指的是从网络中删除任何参数或结构。非结构化修剪[10, 18, 19,20]可以减少非零参数的数量,但不能在常见的计算框架上实现加速。结构化修剪删除一些整个结构(例如全连接层的神经元、2D卷积核和通道),这对硬件更友好[40,63]。通道修剪是0特别是在减少模型大小、实际计算量和内存占用方面,修剪与彩票票证假设[17]有关。例如,可以在训练之前使用ResRep来找到“中奖”的通道。除了通用模型修剪外,特定上下文中的修剪(例如,有限数据场景[50])也引起了很多关注。0大多数通道修剪方法可以分为两类。先修剪再微调的方法通过一些度量标准从训练良好的模型中识别和修剪不重要的通道[1, 30, 34, 47, 51, 52, 53,67],这可能导致显著的精度下降,然后再进行微调。一些方法重复修剪-微调迭代来度量重要性并逐步修剪[8,37]。一个主要的缺点是修剪后的模型很容易陷入坏的局部最小值,有时甚至无法达到从头开始训练的相同结构的相似精度[44]。这一发现突显了完美修剪的重要性,它消除了微调的需要。在这个类别中,Let i be the index of conv layer. To prune conv i, we ob-tain the index set of pruned channels P(i) ⊂ {1, 2, . . . , D}according to some rules, then its complementary set S(i) ={1, 2, . . . , D}\P(i) for the index set of channels which sur-vive. The pruning operation preserves the S(i) output chan-nels of conv i and the corresponding input channels of thesucceeding layer (conv i + 1), and discard the others. Thecorresponding entries in the bias or following BN, if any,should be discarded as well. The obtained kernels are45130PCAS[66]与ResRep最相关,它通过在卷积层后附加注意力模块来识别不重要的通道。与ResRep不同,PCAS执行的是不完美的修剪,并且在移除不重要的通道后需要进行微调。此外,PCAS在训练后丢弃了注意力模块,这导致更多的结构损坏,而ResRep使用了一个数学上等价的转换来获得最终的模型结构,而不会降低性能。基于学习的修剪方法利用自定义的学习过程来减少修剪引起的损害。除了上述基于惩罚的范式来将一些通道置零[2, 3, 9, 36, 39, 62,63]之外,还有一些其他方法通过使一些滤波器相同来进行修剪[12]、元学习[43]、对抗学习[38]等。03. 无损通道修剪的ResRep03.1. 公式和背景0首先介绍卷积和通道修剪的公式。设 D 和 C 为输出和输入通道数,K 为卷积核大小,K ∈R D × C × K × K 为卷积核参数张量,b ∈ R D 为可选的偏置,I ∈ R N × C × H × W0O ∈ R N × D × H' × W' 为输入和输出,�为卷积运算符,B 为广播函数,将 b 复制成 N × D × H' ×W',我们有0O = I � K + B(b). (1)0对于没有偏置项但有后续批量归一化(BN)[31]层的卷积层,其中平均值为 µ,标准差为 σ,缩放因子为 γ,偏置为 β∈ R D,我们有0O: ,j,:,: = ((I � K):,j,:,: - µj)γj0σj + βj,�1 ≤ j ≤ D. (2)0K(i)' = K(i)S(i),:,:,: , K(i+1)' = K(i+1):,S(i),:,:. (3)03.2. 卷积重新参数化0对于每个卷积层以及后续的BN(如果有的话),我们希望修剪它们,这些被称为目标层,我们附加一个压缩器(1×1卷积),其核为Q ∈ RD ×D。给定经过良好训练的模型W,我们通过初始化卷积-BN来构建重新参数化的模型ˆW。0将W和Q的原始权重视为单位矩阵,以便重新参数化的模型产生与原始模型相同的输出。请注意,如果目标层没有后续的BN,则我们的符号中的“BN”可以安全地视为偏差。在使用渐变重置进行训练后(将在第3.3节中详细描述),我们修剪紧凑器中接近零的通道,并将模型转换为W',其具有与W相同的架构但较窄的层。具体而言,对于具有核Q的特定压缩器,我们修剪范数小于阈值ε的通道。形式上,我们通过P = {j | ||Qj,:||2 < ε}获得待修剪集合,或通过S = {j |||Qj,:||2 ≥ ε}获得存活集合。类似于方程3,我们通过Q' =QS,:修剪Q。在我们的实验中,我们使用ε =10^-5,发现这个值足够小以实现完美的修剪。修剪后,压缩器的行数少于列数,即Q' ∈ RD' × D,D' =|S|。为了将ˆW转换为W',我们试图将每个卷积-BN-压缩器序列转换为具有K' ∈ RD' × C × K × K和偏差b' ∈RD'的卷积层。首先,我们等效地将卷积-BN融合到推理中的卷积中,以产生与原始输出相同的输出。使用卷积-BN的K、µ、σ、γ、β,我们构建一个新的卷积,其核为¯K,偏差为¯b,如下所示。对于1 ≤ j ≤ D,0¯Kj,:,:,: = γj0σjKj,:,:,: , ¯bj = −µjγj0σj + βj. (4)0给定方程1、2和卷积的齐次性,我们可以验证0((I � K):,j,:,: - µj)γj0σj + βj = (I � ¯K + B(¯b)):,j,:,:. (5)0然后我们寻找构建K'和b'的公式,使得0(I � ¯K + B(¯b)) � Q' = I � K' + B(b'). (6)0通过卷积的可加性,我们得到0I � ¯K � Q' + B(¯b) � Q' = I � K' + B(b'). (7)0我们注意到B(¯b)的每个通道都是一个常数矩阵,因此B(¯b) �Q'的每个通道也是一个常数矩阵。由于在I �¯K上使用Q'的1×1卷积仅执行跨通道重组,我们可以通过重新组合¯K中的条目将Q'合并到¯K中。令T为转置函数(例如,T(¯K)为C×D×K×K),我们给出构建K'和b'的公式,这可以很容易地验证。0K' = T(T(¯K) � Q'), (8)0b'j = ¯b ∙ Q'j,:,: , �1 ≤ j ≤ D'. (9)0实际上,我们将经过重新参数化的模型的权重转换并保存,构建一个具有原始架构但较窄的层且没有BN的模型,并使用保存的权重进行测试和部署。01 渐变重置会使一些通道无限接近于零,如图4所示,因此设置ε = 10^-5或ε= 10^-9没有区别。451403.3. 渐变重置0我们描述如何在保持准确性的同时产生压缩器中的结构化稀疏性,首先讨论对特定核K使用惩罚的传统用法,使得某些通道的幅度变小,即||KP,:,:,:|| →0。设Θ为参数的通用集合,X、Y为数据示例和标签,Lperf(X, Y,Θ)为与性能相关的目标函数(例如,分类的交叉熵)。传统范式通过预定义的强度因子λ添加惩罚项P(K),0L total ( X, Y, Θ ) = L perf ( X, Y, Θ ) + λP ( K ) , (10)0其中P的常见形式包括L1 [34],L2 [9]和group Lasso [39,63]。具体而言,groupLasso在产生通道级结构稀疏性方面非常有效。在下面的讨论中,我们用F(j)=Kj,:,:表示K中的特定通道。然后,groupLasso损失被定义为0P Lasso ( K ) =0j =1 || F ( j ) || E, (11)0其中|| F ( j ) || E是欧德范数0|| F || E =0� 0C �0c =10K �0p =10q =1 F 2 c,p,q . (12)0以G(F)为梯度,我们进行导数,0G ( F ) = ∂L total 0∂ F = ∂Lperf(X, Y, 0∂ F + λ F0|| F ||0(13)特定通道F的训练动态非常直观。从训练良好的模型开始,F位于局部最优解附近,因此方程13的第一项接近0,但第二项不接近0,因此F被推向0。如果F对性能很重要,目标函数将试图保持其大小,即第一梯度项将与第二梯度项竞争,因此F将变得比以前更小,这取决于λ。否则,以极端情况为例,如果F根本不影响Lperf,第一项将为0,因此F将通过第二项不断增长向0靠近。换句话说,性能相关的损失和惩罚损失竞争,从而导致F的结果值反映其重要性,我们称之为基于能力的重要性评估以方便起见。然而,我们面临一个困境。问题A:惩罚使每个通道的参数偏离目标函数的最优解。值得注意的是,轻微的偏离可能不会带来负面影响,例如,L2正则化也可以视为轻微的偏离。然而,对于强烈的惩罚,尽管一些通道被归零以进行修剪,但剩余的通道也变得太小以维持表示能力,这是一个不希望出现的副作用。问题B:对于轻微的惩罚0由于高阻力,我们无法实现高可修剪性,因为大多数通道仅仅比以前更接近0,但不足以完美修剪。我们提出通过重置从目标函数导出的梯度来实现轻微惩罚以实现高可修剪性。我们引入一个二进制掩码m∈{0,1},表示我们是否希望将F归零。为了便于实现,我们不向目标函数添加任何项(即Ltotal=Lperf),只是像往常一样导出梯度,然后手动应用掩码,添加惩罚梯度,并使用结果梯度进行SGD更新:0G ( F ) ← ∂L per0∂ F m + λ F0|| F || E . (14)0我们将在下一节中描述如何决定要归零的通道(即为多个通道设置掩码值)。通过这种方式,我们解决了上述两个问题。A)虽然我们将Lasso梯度添加到每个通道的与目标相关的梯度中,这相当于通过在原始损失上添加Lasso损失来偏离最优解,但偏离是温和的(在我们的实验中λ=10-4),对性能无害。B)当m=0时,第一项不再存在与第二项竞争,因此即使是温和的λ也可以使F稳定地趋近于0。03.4. 记住部分始终记住,遗忘部分逐渐遗忘0如果直接用于卷积核上,Res会带来一个问题:一些与目标相关的梯度编码了维持性能的监督信息,但被丢弃了。直观上,参数被迫“遗忘”一些有用的信息(梯度)。幸运的是,Rep恰好是解决方案,它允许我们只修剪压缩器,而不是原始的卷积层。ResRep只强迫压缩器“遗忘”,而所有其他层仍然专注于“记住”,因此我们不会丢失原始卷积核梯度中编码的信息。要将Res与Rep结合起来,我们需要决定要将Q的哪些通道归零。在训练重新参数化模型时,我们只向压缩器添加Lasso梯度。经过几个时期,|| Q j, :||将反映通道j的重要性(基于能力的重要性评估在第3.3节中讨论),因此我们开始根据Q的值执行通道选择。设n为压缩器的数量,m(i)(一个D(i)维二进制向量)为第i个压缩器的掩码,我们将t(i)∈RD(i)定义为度量向量。0t(i)j = ||Q(i)j, :||2,�1≤j≤D(i)。(15)0对于每次通道选择,我们计算每个压缩器中每个通道的度量值,并将它们组织为一个映射M={(i, j)→t(i)j|�1≤i≤n,1≤j≤D(i)}。然后,我们按升序对M的值进行排序,从最小的开始逐个选择。02550125 150 1751.01.52.02.5025507125 150 1756466687072747645150并将相应的掩码m(i)j设置为0。当减少的FLOPs达到目标值或已选择了θ(称为通道选择限制)个通道时,停止选择。未选择通道的掩码值设置为1。这样做的动机很简单:根据基于竞争力的重要性评估的讨论,就像传统上使用惩罚损失与原始损失竞争并选择具有较小范数的通道一样,我们使用惩罚梯度与原始梯度竞争。更好的是,所有度量值在开始时都为1(因为每个压缩器核都初始化为单位矩阵),这使得在不同层之间进行比较变得公平。我们将θ初始化为一个较小的数,每隔几次迭代增加θ并重新选择通道以逐渐“遗忘”,避免一次性将太多通道置零。如图4所示,这些掩码为0的通道将变得非常接近0,从而在压缩器中出现结构化稀疏性。04. 实验04.1. 数据集、模型和设置0我们在ImageNet-1K上使用ResNet-50和MobileNet[29]进行训练。为了可重现性,我们遵循PyTorch官方示例[54]的数据增强,包括随机裁剪和翻转。对于ResNet-50,我们使用官方的torchvision基础模型(76.15%的top-1准确率)[55]进行公平比较。对于MobileNet,我们从头开始训练,初始学习率为0.1,批大小为512,余弦学习率退火进行70个周期。top-1准确率为70.78%,略高于原论文中的报告结果。我们在CIFAR-10上使用ResNet-56/110[33],采用标准的数据增强[22]:填充到40×40,随机裁剪和翻转。我们使用批大小为64的基础模型和常见的学习率调度,初始学习率为0.1,在第120和180个周期时乘以0.1,并在240个周期后终止。我们将FLOPs计算为乘加操作,ResNet-50为4.09G[55],MobileNet为569M,ResNet-56/110为126M/253M。04.2. ImageNet和CIFAR-10上的修剪结果0我们在ResNet-50和MobileNet上应用了相同的超参数:λ=10^(-4),批大小为256,初始学习率为0.01,并进行180个周期的余弦退火。我们将通道选择限制θ设置为4,并且每200个批次将θ增加4,并在5个周期后开始第一次通道选择。也就是说,在经过5个周期的“热身”后,我们从所有层中选择具有最低t值的4个通道,然后每200个批次选择4个更多的通道,直到达到FLOPs减少目标。为了便于比较,我们对ResNet-50进行了三次实验,FLOPs为02我们将没有当前掩码为0的通道的模型的理论FLOPs计为当前FLOPs。减少的FLOPs = 原始FLOPs - 当前FLOPs。0修剪-微调ResRep0修剪-微调ResRep0图2:修剪-微调和ResRep在ResNet-50上的训练损失(左)和验证准确率(右)。0减少目标分别为54.5%(比FPGM[26]高1%),56.1%(SASL [58]),62.1%(HRank[35])和MobileNet为73.9%(与MetaPruning[43]进行比较)。与大多数竞争者一样,我们在ResNet-50的每个残差块的第一个(1×1)和第二个(3×3)卷积层以及MobileNet的每个非深度卷积层中进行修剪。受到先前工作[10]的启发,该工作将一些梯度置零并利用动量和权重衰减进行CNN稀疏化,我们将在压缩器上的SGD动量系数从0.9(大多数情况下的默认设置)提高到0.99。直观地说,掩码为0的通道在同一方向上持续增长(即趋向于零),这种趋势在动量中累积,因此较大的动量系数可以加速置零过程。对于ResNet-56/110,目标层包括残差块的第一层,我们使用与ImageNet相同的超参数,除了批大小为64和480个训练周期。表1、2显示了ResRep的优越性。我们的结果是在ImageNet上进行3次运行,在CIFAR上进行5次运行的平均值。在ResNet-50上,ResRep实现了0.00%的top-1准确率下降,这是我们所知道的首次实现如此高的修剪比例(54.54%)而无损准确率。就top-1准确率下降而言,ResRep比SASL高出0.82%,比HRank高出3.32%,比其他最近的竞争者高出很多。在MobileNet上,ResRep比MetaPruning高出1.77%。在ResNet-56/110上,ResRep也表现出色,尽管在准确率下降方面与其他方法的比较存在偏差,因为我们的基础模型具有更高的准确率(即在不降低准确率的情况下修剪更高准确率的模型更具挑战性)。每个目标层的最终宽度(图3)显示了ResRep在没有任何先验知识的情况下发现了适当的最终结构,给定所需的全局修剪比例。值得注意的是,ResRep选择在ResNet-50和MobileNet的较高级别层保留更多的通道,但在ResNet-56的最后几个块上进行了积极修剪。一个解释是,丰富的高级特征对于在像ImageNet这样的困难任务上保持拟合能力至关重要,而ResNet-56在CIFAR-10上容易过拟合。我们构建了一系列ResRep的基线和变体进行比较(表3)。1)基础模型进一步使用相同的学习率调度进行180个周期的微调,准确率仅提高了0.04%,这表明ResRep的性能不仅仅是由于训练设置的影响。2)我们构建了一个均匀缩小的基础模型-1414161641282565121 2 3 4 510 11 12 13 14112825651210241119271816326445160表1:ResNet-50和MobileNet在ImageNet上的剪枝结果。0模型 结果 基准 Top-1 基准 Top-5 剪枝 Top-1 剪枝 Top-5 Top-1 ↓ Top-5 ↓ FLOPs ↓ %0ResNet-500SFP [24] 76.15 92.87 74.61 92.06 1.54 0.81 41.8 GAL-0.5 [38] 76.15 92.87 71.95 90.94 4.20 1.93 43.03NISP [67] - - - - 0.89 - 44.01 Taylor-FO-BN [51] 76.18 - 74.50 - 1.68 - 44.98 Channel Pr [27] - 92.2 -90.8 - 1.4 50 HP [64] 76.01 92.93 74.87 92.43 1.14 0.50 50 MetaPruning [43] 76.6 - 75.4 - 1.2 - 51.10Autopr [49] 76.15 92.87 74.76 92.15 1.39 0.72 51.21 GDP [37] 75.13 92.30 71.89 90.71 3.24 1.59 51.30FPGM [26] 76.15 92.87 74.83 92.32 1.32 0.55 53.5 ResRep 76.15 92.87 76.15 ± 0.01 92.89 ± 0.04 0.00-0.02 54.54 C-SGD (extension) [12] 76.15 92.87 75.29 92.39 0.86 0.48 55.44 DCP [69] 76.01 92.9374.95 92.32 1.06 0.61 55.76 C-SGD [7] 75.33 92.56 74.54 92.09 0.79 0.47 55.76 ThiNet [48] 75.3092.20 72.03 90.99 3.27 1.21 55.83 SASL [58] 76.15 92.87 75.15 92.47 1.00 0.40 56.10 ResRep 76.1592.87 75.97 ± 0.02 92.75 ± 0.01 0.18 0.12 56.11 TRP [65] 75.90 92.70 72.69 91.41 3.21 1.29 56.52LFPC [23] 76.15 92.87 74.46 92.32 1.69 0.55 60.8 HRank [35] 76.15 92.87 71.98 91.01 4.17 1.86 62.10ResRep 76.15 92.87 75.30 ± 0.01 92.47 ± 0.01 0.85 0.40 62.100MobileNet MetaPruning [43] 70.6 - 66.1 - 4.5 - 73.81 ResRep 70.78 89.78 68.02 ± 0.02 87.66 ± 0.02 2.76 2.12 73.910块索引0通道数0原始 最终1×1 最终3×30块索引0通道数0原始最终0块索引0通道数0原始最终0图3:剪枝模型中目标层的宽度。左:ResNet-50,分别显示每个块中的第一个1×1和3×3层。中:MobileNet。右:ResNet-56。垂直虚线表示ResNet中的阶段转换。0表2:CIFAR-10上ResNet-56/110的剪枝结果。0模型 结果 基准 Top-1 剪枝 Top-1 Top-1 ↓ % FLOPs ↓ %0R560AMC [25] 92.8 91.9 0.9 50 FPGM [26] 93.59 93.260.33 52.6 SFP [24] 93.59 93.35 0.24 52.6 LFPC [23]93.59 93.24 0.35 52.9 ResRep 93.71 93.71 ± 0.020.00 52.91 TRP [65] 93.14 91.62 1.52 77.82 ResRep93.71 92.66 ± 0.07 1.05 77.830R1100Li等人[34] 93.53 93.30 0.23 38.60 GAL-0.5 [38]93.50 92.74 0.76 48.5 HRank [35] 93.50 93.36 0.1458.2 ResRep 94.64 94.62 ± 0.04 0.02 58.210通过构建一个ResNet-50,将所有目标层的宽度减少到原始宽度的1/2,从而重新计算FLOPs。0表3:ResNet-50基准模型和ResRep的变体。0Top-1 准确率 FLOPs ↓ %01)基准模型微调76.19 - 2)均匀缩小的基线74.39 55.43)剪枝-微调74.66 54.504)向量重新参数化 75.57 54.5 5)将压缩器的动量设置为0.975.05 45.10减少了55.4%。我们使用与基准模型相同的训练设置从头开始训练它,最终准确率为74.39%,比我们的剪枝模型低1.58%。3)我们将ResRep与经典的剪枝-微调方法进行比较,通过按照欧几里德范数对基准模型的所有通道进行排序,从最小的通道开始剪枝,直到减少比例达到54.5%,然后使用相同的180个迭代次数对结果模型进行微调。不出所料,3040708087888990919293940100230040020304050607080900100230040015.012.510.07.55.02.50.02.545170FLOPs 减少%0top-1准确率0仅基线仅RepResResRep0迭代次数0top1准确率0基线 原始基线剪枝 ResRep原始 ResRep剪枝0迭代次数0对数10(二次和)0基线幸存基线剪枝ResRep幸存ResRep剪枝0图4:左:基线、Res、Rep和ResRep的FLOPs减少与准确性。中:每5个时期的原始和剪枝准确性。右:幸存参数和待剪枝参数的平方和(注意对数刻度)。0令人惊讶的是,微调模型几乎比从头开始训练的剪枝基线模型更好。训练损失和验证准确性(图2)显示剪枝模型恢复得很快,但无法达到与剪枝54.5%的ResRep模型相当的准确性。这一观察结果与先前的研究一致,即剪枝模型可能很容易陷入坏的局部最小值[44]。4)重新参数化的直接替代方法,以验证卷积重参数化的重要性。它将压缩器的形式从1×1卷积更改为D维可训练向量(即逐通道缩放层),初始化为1,Lasso惩罚自然降级为L1。在与剪枝54.5%模型相同的设置下进行180个时期的训练后,最终准确性为75.57%,比原始准确性低0.58%。直观地说,1×1卷积的重新参数化将原始核折叠成较低维的核(即重新组合通道),而向量只是删除了一些通道。5)我们通过将压缩器的动量设置为0.9来验证0.99动量的必要性,较少的通道最终接近零(低于ϵ=10-5)。尽管较高的动量会更快地减少参数,但如果可以接受更长的训练时间,则不是必要的。04.3.消融研究0然后,我们使用与上述相同的训练配置在ResNet-56上进行受控实验,以分别评估Rep和Res。作为基线,我们采用传统范式,直接在所有目标层上添加Lasso损失(Eq.11)。通过λ∈{0.3,0.03,0.003,0.001},我们获得四个具有不同最终准确性的模型:69.81%,87.09%,92.65%,93.69%。为了实现对每个训练模型的完美剪枝,我们通过逐个删除通道直到准确性低于原始准确性(即剪枝最小结构的任何一个通道将降低准确性)来获得最小结构。然后我们记录最小结构的FLOPs减少:81.24%,71.94%,57.56%,28.31%。我们测试Rep但没有Res,通过在压缩器上应用具有不同λ的Lasso损失来实现与基线相当的FLOPs减少。对于Res但没有Rep,我们直接在原始卷积核上应用梯度重置,目标是与四个模型相同的FLOPs减少0基线模型。
下载后可阅读完整内容,剩余1页未读,立即下载
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- VMP技术解析:Handle块优化与壳模板初始化
- C++ Primer 第四版更新:现代编程风格与标准库
- 计算机系统基础实验:缓冲区溢出攻击(Lab3)
- 中国结算网上业务平台:证券登记操作详解与常见问题
- FPGA驱动的五子棋博弈系统:加速与创新娱乐体验
- 多旋翼飞行器定点位置控制器设计实验
- 基于流量预测与潮汐效应的动态载频优化策略
- SQL练习:查询分析与高级操作
- 海底数据中心散热优化:从MATLAB到动态模拟
- 移动应用作业:MyDiaryBook - Google Material Design 日记APP
- Linux提权技术详解:从内核漏洞到Sudo配置错误
- 93分钟快速入门 LaTeX:从入门到实践
- 5G测试新挑战与罗德与施瓦茨解决方案
- EAS系统性能优化与故障诊断指南
- Java并发编程:JUC核心概念解析与应用
- 数据结构实验报告:基于不同存储结构的线性表和树实现
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)