没有合适的资源?快使用搜索试试~ 我知道了~
4943用于修剪具有复杂结构卷积网络的向心SGD算法丁晓涵1丁贵光1郭宇晨1韩俊功21清华大学2兰卡斯特大学dxh17@mails.tsinghua.edu.cndinggg@tsinghua.edu.cn{yuchen. w. guo,jungonghan 77}@gmail.com摘要冗余在卷积神经网络(CNN)中得到广泛认可,这使得能够从卷积层中移除重要的滤波器,以便以可接受的性能下降来精简网络。受卷积线性的启发为此,我们提出了向心1SGD(C-SGD),一种新的优化方法,它可以训练多个过滤器折叠成参数超空间中的一个点。当训练完成时,去除相同的滤波器可以在没有性能损失的情况下修整网络,因此不需要微调。通过这样做,我们已经部分解决了一个开放的问题,约束过滤器pruning CNN具有复杂的结构,其中一些层必须修剪后,其他。我们在CIFAR-10和ImageNet上的实验结果证明了基于C-SGD的过滤器修剪的有效性。此外,我们还为深度神经网络中的冗余有助于训练收敛的假设提供了经验证据,表明使用C-SGD训练的冗余CNN优于具有相同宽度的正常训练的CNN。1. 介绍卷积神经网络(CNN)已经成为机器学习和许多相关领域的重要工具然而,由于其计算强度的性质,随着CNN变得更宽和更深,其内存占用、功耗和所需的浮点运算(FLOP)急剧增加。本课题得到了国家重点科技&攻关项目(2005年第103号)的资助。2018YFC0807500)、国家自然科学基金(No. 61571269)、国家创新人才博士后计划(No. BX20180172)、中国博士后科学基金(No. 2018M640131)。通讯作者:丁贵光。[1]这里的这使得它们很难部署在没有丰富计算资源的平台上,如嵌入式系统。在这种情况下,CNN压缩和加速方法已经被深入研究,包括十元低秩扩展[31],连接修剪[20],过滤器修剪[40],量化[19],知识蒸馏[27],快速卷积[48],特征图压缩[61]等。我们专注于过滤器修剪,又名。信道修剪[26]或网络瘦身[44],原因有三个。首先,过滤器修剪是一种通用技术,能够处理任何类型的CNN,对应用领域,网络架构或部署平台没有任何假设。其次,过滤器修剪有效地减少了网络的FLOP,这是计算负担的主要标准。最后,作为一个重要的优势,过滤修剪产生一个更薄的网络,没有自定义的结构或额外的操作,这是正交的其他模型压缩和加速技术。由于过滤剪枝技术的普遍性和重要性,人们对过滤剪枝技术进行了大量的研究.由于CNN中广泛观察到的冗余[8,9,13,19,66,69],许多优秀的作品已经表明,如果CNN被适当修剪,结构损伤可接受1)一些先前的工作[2,5,28,40,49,50,66]根据过滤器的重要性对过滤器进行排序由于保留了重要的过滤器,因此可以通过微调达到相当的性能水平。然而,最近一些强大的网络具有复杂的结构,如身份映射[23] 和密集连接[29],其中一些层必须以与其他层相同的模式修剪,这引发了约束过滤器修剪的开放问题。这进一步挑战了这种修剪技术,因为不能假设不同层处的重要滤波器驻留在相同位置上。2)显然,如果减少修剪的破坏性影响,则模型更有考虑到这一点,另一种方法[3,15,43,60,63]试图提前将一些滤波器归零,其中组-4944conv2添加到conv1conv2conv1图1:归零与向心约束该图显示了在第一和第二卷积层分别具有4个和6个滤波器的CNN,其采用2通道输入。左:conv1处的第三个滤波器被清零,因此第三个特征图接近于零,这意味着conv2处的6个滤波器的第三个输入通道是无用的。在修剪期间,去除convl处的第三滤波器以及conv2处的6个滤波器的第三输入通道。右图:conv1处的第3个和第4个过滤器被向心约束强制靠近,直到第3个和第4个特征图变得相同。但是conv2处的6个滤波器的第三和第四输入通道仍然可以在没有约束的情况下增长,使得编码信息仍然被充分利用。当修剪时,去除conv1处的第4个滤波器,并且将conv2处的每个滤波器的第4个输入通道添加到第3个通道。Lasso Regularization [53]经常使用。从本质上讲,归零过滤器可以被认为是在CNN中产生所需的冗余模式。在对某些整体滤波器的参数大小进行缩减后,对这些滤波器进行剪枝,精度下降较小,因此更容易通过微调恢复性能。在本文中,我们还旨在在CNN中产生一些冗余模式以进行过滤器修剪。然而,我们打算将多个滤波器合并为一个,而不是将滤波器清零,这最终导致一些滤波器接近零的模式,从而导致一些滤波器相同的冗余模式激发所提出的方法的直觉是对CNN中信息流的观察(图1)。1)如果两个或更多个滤波器被训练成相同的,由于卷积的线性,我们可以简单地丢弃所有滤波器,只留下一个滤波器,并沿着下一层的相应输入通道将参数相加。这样做将导致零性能损失,并且不需要耗时的微调过程。值得注意的是,这种微调过程对于归零方法[3,43,63]是必不可少的,因为丢弃的滤波器仅在幅度上很小,但仍然对一定量的信息进行编码。因此,移除这样的滤波器必然会降低网络的性能。2)当多个过滤器被约束在参数超空间中变得更接近时,我们称之为向心约束,尽管它们开始产生越来越相似的信息,但是从下一层的相应输入通道传递的信息仍然被充分利用,因此模型的表示能力比过滤器被归零的对应物更我们将我们的贡献总结如下。• 我们建议通过训练一些过滤器来在CNN中产生冗余模式。与基于重要性的过滤器剪枝方法相比,这样做不需要关于过滤器重要性的启发式知识。与归零方法相比,不需要微调,并且保持了网络的更有代表性的能力• 我们提出了向心SGD(C-SGD),一种创新的SGD优化方法。顾名思义,我们使多个过滤器向过滤器参数的超空间中的中心移动。同时,在模型原有目标函数的监督下,尽可能地保持了模型的• 通过C-SGD,我们已经部分解决了约束过滤器修剪,这是一个精简具有复杂结构的现代非常深的CNN的开放问题,其中某些层必须以与其他层相同的模式修剪。• 我们提出了C-SGD的有效性的理论和实证分析。我们已经展示了支持我们动机的经验证据(图1)。1)和冗余有助于神经网络收敛的假设[14,27] 。 这 些 代 码 可 在 https://github.com/ShawnDing1994/Centripetal-SGD 上 获得。2. 相关工作过滤器修剪。 许多鼓舞人心的作品[7,17,20,22,39,58,67]已经表明,这是可行的,以消除一个来自神经网络的大部分连接或神经元在没有显著性能下降的情况下工作。然而,由于连接修剪方法使参数张量不是更小而是更稀疏,因此在没有专用硬件支持的情况下可以观察到很少或没有加速。然后,研究人员自然会在CNN上走得更远:通过删除过滤器而不是零星的连接,我们将宽卷积层转换为窄卷积层,因此FLOP,内存占用和功耗显着降低。一种方法通过某种方法定义滤波器的重要性,然后仔细选择和修剪不重要的滤波器,以最小化性能损失。一些先前的作品通过4945:,:,j:,:,R,:iP=(KRi RiRi贡献方差[50]、基于泰勒展开的卷积[49]、卷积核的幅度 [40] 和 零 激 活 的 平 均 百 分 比 ( APoZ ) [28] , re-explanation; Luoet al.[47]根据信息选择过滤器-这一层将M(i−1)∈ Rhi−1 ×wi−1 ×ci−1作为输入并输出M(i)。 设f为2-D卷积算子,第j个输出通道由下式给出:Σ来自下一层的信息; Yu等人[66]考虑ci−1M(i−1,k)<$K(i)-µ(i)考虑误差传播的影响; He等人[26日]M(i,j)=k=1:,:,k,jjγ(i)+β(i).通过求解Lasso回归来选择滤波器;他和韩[24] 在强化学习的帮助下拾取过滤器。一个-(一)JJ J(一)其他类别试图在某些约束下训练网络,以便将某些过滤器归零,其中经常使用group-Lasso正则化[3,43,63]。值得注意的是,由于移除一些完整的滤波器会使网络降级很多,因此CNN通常以逐层[3,24,26,28,47,50]或逐滤波器[2,49]的方式修剪,并且需要一个或多个微调过程来恢复准确性[2,3,5,24,26,28,40,44,47,49、50、63、66]。其他方法。除了过滤器修剪,一些优秀的作品寻求以其他方式压缩和加速CNN。相当多的作品[4,14,31,32,54,56,65,68]基于重要性的过滤器修剪方法[2,28,40,49,50,66]通过某种方式定义滤波器的重要性,修剪不重要的部分并使用剩余的参数重建网络设Ii是层i的过滤器索引集(例如,I2={1,2,3,4}(如果第二层具有四个滤波器),T是滤波器重要性评估函数,θi是阈值。剩下的一组,即,过滤器的索引集,幸存的修剪,是Ri={j ∈Ii|T(F(j))> θ i}。然后,我们通过将从第i层的原始张量或向量切片的参数组装成新参数来重建网络。也就是说,分解或近似参数张量;量化和二值化技术[11,18,19,51,64]使用每个参数更少的位来近似模型;(i)(i):,Ri,μ(i),σ(i),γ(i),β(i))。(二)边缘蒸馏方法[6,27,52]将知识从大网络转移到较小的网络;一些研究人员试图在穿孔[16],FFT [48,59]或DCT [62]的帮助下加速卷积; Wang等人[61]通过循环矩阵提取信息来压缩特征映射。值得注意的是,由于过滤器修剪只是将宽CNN缩小为较窄的CNN,没有特殊的结构或额外的操作,因此它与其他方法正交3. 通过向心SGD3.1. 制剂在现代CNN中,批量归一化[30]和缩放变换通常用于增强卷积层的表示能力 为了简单和一般性,我们将可能的后续批次归一化和缩放层视为卷积层的一部分。 设i为层索引,M(i)∈ Rhi×wi×ci为具有ci个通道的hi× wi特征映射,M(i,j)= M(i)成为第j个频道。卷积层i具有ker-nel sizeui×vi有一个四阶张量和最多四个向量作为参数,即K(i)∈Rui×vi×ci−1×ci和μ(i),σ(i),γ(i),β(i)∈Rci,其中K(i)是卷积核,μ(i)和σ(i)是批归一化的均值和标准差,γ(i)和β(i )是标度变换的参数然后我们用P(i )=(K(i),μ(i),σ(i),γ(i),β(i))表示第i层的参数。在本文中,第i层的滤波器j是指包括与第i层的第j个输出通道相关的所有参数切片的五元组,形式上,F(j)=下一层的输入通道对应于修剪的滤波器也应该被丢弃,P(i+1)=(K(i+1),μ(i+1),σ(i+1),γ(i+1),β(i+1)). (三)3.2. 更新规则对于每个卷积层,我们首先将过滤器划分为集群。簇的数量等于所需的过滤器数量,因为我们为每个簇只保留一个过滤器。我们使用Ci和H分别表示层i的所有过滤器聚类的集合和过滤器索引集合形式的单个聚类。我们均匀地或通过k-means [21]生成聚类,我们的实验证明两者之间只有微小的差异(表1)。①的人。• K均值聚类我们的目标是在参数超空间中生成具有低簇内距离的簇,使得将它们折叠成单个点对模型的影响较小,这是自然的。为此,我们简单地将滤波器的内核变平• 甚至集群。我们可以在不考虑过滤器固有属性的情况下生成聚类。设ci和ri分别是原始过滤器和期望聚类的数量,则每个聚类将具有最多只能用fixci/ri滤波器。例如,如果第二层有六个滤波器,我们希望将其精简为四个滤波器,则我们将有C2={H1,H2,H3,H4},其 中 H1={1 , 2} , H2={3 , 4} , H3={5} ,H4={6}。我们使用H(j)来表示包含过滤器j的聚类,因此在上面的例子中,我们有H(3)=H2和H(6)=H4。(K㈠),μ(i),σ(i),γ(i),β(i))。在前向传播期间,设F(j)是滤波器j的核或向量参数,σ4946:,j j j j j49472每次训练迭代,C-SGD的更新规则为F(j)←F(j)+τ<$F(j),公司简介损失一损失一Q3MB<$F(j)=−k∈H(j)<$F(k)|H(j)|-ηF(j)第一季(四)Σk∈H(j) F(k)(j)Q0Q0第二季第四+C++(-F),|H(j)|2 22 2y11年11X x0 0其中L是原始目标函数,τ是学习速率,η是模型是唯一引入的超参数,称为(a) 正常重量衰减。(b) 向心约束。向心力设L为层索引集,我们使用核偏差的平方和χ来度量簇内相似性,即,过滤器在每个簇中的接近程度,图2:损失曲面上的梯度下降方向正常的重量衰减和向心约束,而不合并原始梯度。Σ ΣX=||K(i)Σ-k∈H(j)K(i):,k||二、 (五)通过满足i∈Lj∈Ii:,j|2|2Lim||一t→∞(吨)-b(t)|| = 0.(六)很容易从Eq。在忽略浮点运算误差的情况下,当学习率τ适当时,χ单调地和指数地降低。Eq背后的直觉。4很简单:对于同一簇中的滤波器,对由目标函数导出的增量求平均(第一项),也应用正常权重衰减(第二项),并且逐渐消除初始值中的差异(最后一项),因此滤波器将向它们在超空间中的中心移动。在实践中,我们固定η并随时间减少τ,就像我们在正常SGD训练中所做的那样,并随意设置τ直觉上,具有大规模可持续发展的C-SGD培训更喜欢“快速变化”而不是“稳定过渡”,反之亦然。例如,如果λ太大,10,过滤器在瞬间被合并,使得整个过程变得等同于训练一个被破坏的模型,设a(t+1)=a(t)+τ∈a(t)且b(t+1)=b(t)+τb(t),其中τ是学习率,等式6意味着Lim||(a(t)−b(t))+τ(τa(t)−τb(t))||=0。(七)t→∞我们试图通过lim(a(t)−b(t))=0来实现这一点t→∞以及lim(a(t)−b(t))=0。名称,如两点t→∞它们的距离越来越近,它们的梯度应该越来越近,为了让训练收敛。如果我们只是想使A和B比过去更靠近彼此,一个自然的想法是将A和B都推到它们的中点M(a+b),如图所示。2b. 因此,点A的梯度下降方向变为抓痒.你知道如果λ非常小,如1×10−10,C-SGD训练和正常SGD之间的差异几乎是在很长一段时间内看不见。然而,由于差异-→−→L02-03-2016刘晓波(a+B - (a)、(8)2每个簇中的滤波器之间的距离单调地和指数地减小,即使极小的距离也可以使滤波器足够接近,迟早。如Ap-曲线所示,C-SGD对α不敏感。一个简单的类比重量衰减(即,2正则化)可能有助于理解向心SGD。图2a示出了3-D损失表面,其中某个点A对应于二维参数a=(a1,a2)。假设最陡的下降其中,λ是控制推动A和B靠近的强度或速度的超参数。我们有b=−第2章联系我们a−(十)拉克布·拉克瓦-→−→L这里我们看到了问题:我们不能保证lim(L-方向是AQ0,我们有AQ0=−a,其中L是t→∞(吨)目标函数重量衰减通常应用于L)= 0。实际上,即使a=b也不意味着L=L,-→Na2SO4(t)拉吉卜4948减少过拟合[35],即AQ1=−ηa,其中η是模型1×10−4用于ResNets [23]。实际的梯度下降方向则变为因为它们参与不同的计算流程。作为因此,我们不能确保lim(a(t)−b(t))=0t→∞等式8、Eq. 9.第九条。-→−→−→La=AQ2=AQ0+AQ1=−形式上,t表示训练迭代的数量,我们力求使A点和B点日益增长,我们通过合并导出原始目标函数。为了简单和对称性,通过替换Eq.8,在Eq。拉吉卜4949K←9与1(L+L),我们有a-b=(η+)(b-a)。卷积的线性度(等式(1)不造成损害,因此2个国家a以这种方式,编码在目标函数相关的梯度被保留,以保持模型的性能,和方程。6是满意的,这很容易验证。直观地说,我们根据b的一些信息使a偏离最陡下降方向,反之亦然,就像m-2正则化使a和b都偏离坐标原点一样3.3. C SGD现代CNN训练和部署平台的效率,Tensorflow [1]基于大规模的tensor运算。因此,我们寻求实现C-SGD高效的矩阵乘法,引入最小的计算负担。具体地,给定卷积层i,核K∈Rui×vi×ci−1×ci和梯度不需要微调。3.5. 用于约束过滤器修剪的C SGD最近,随着CNN设计理念的进步尽管一些优秀的工作 [28 , 32 , 49 , 66 , 69]已 经 表 明 , 经 典 的 普 通CNN,例如,AlexNet [34]和VGG [55]是高度冗余的,可以显著修剪,修剪后的版本在准确性和效率方面通常仍然不如最新和我们认为过滤器修剪非常深和复杂的CNN具有挑战性,原因有三个。1)首先,考虑到计算效率,设计了我们将K整形为W∈Ruivici−1×ci,到KW相应地我们构造了平均矩阵Γ∈Rci×ci和衰减矩阵Λ∈Rci×ci作为Eq. 12、Eq. 13、这样的话,11是等价于Eq。4,这可以很容易地验证。显然,当簇的数目等于滤波器的数目时,等式(1)为:11降解为正常SGD,其中Γ=diag(1),Λ=diag(η)。其它可训练参数(即,γ和β)被整形为W∈R1×ci,并以同样的方式处理。在实践中,我们在配备CUDA9.0和cuDNN7.0的Nvidia GeForce GTX1080Ti GPU上使用Tensorflow时,观察到普通SGD和C-SGD之间的速度几乎没有差异W←W−τ(<$LΓ+W Λ).(十一)W.这使他们内在的紧凑和高效。古老的2)其次,这些网络比经典网络要深得多,因此逐层修剪技术变得效率低下,并且当通过多层传播时,错误会急剧增加,使得过滤器重要性的估计不那么准确[66]。3)最后也是最重要的是,这些网络中大量使用了一些创新结构,例如,跨层连接[23]和密集连接[29],提出了约束过滤器修剪的开放问题即,在ResNets的每个阶段中,每个残差块都被期望将 学 习 的 残 差 添 加 到 由 第 一 层 或 投 影 层 ( 称 为pacesetter)产生的主干特征图中,因此每个残差块的最后一层(称为follower)必须以相同的模式进行修剪rm,n=1/|H(m)|如果H(m)=H(n),0其他(十二)作为标兵,即,所有跟随者和标兵的剩余集合R必须相同,或者网络Λm,n.η+(1−1/|H(m)|)如果H(m)=H(n),=0其他(十三)会被严重损坏,以至于微调无法恢复其准确性。例如,Liet al. [40]曾经尝试过猛烈地修剪ResNets,但结果准确率很低Liet al. [40]避开这个问题,3.4. C SGD后的滤波器微调在C-SGD训练之后,由于每个集群中的过滤器已经变得相同,如将在节中所示。4.3,拿哪个没什么区别.我们简单地拿起第一个过滤器(即,具有最小索引的滤波器),以形成每个层的剩余集合,R i={min(H)|C i {\displaystyle Ci}。对于下一层,我们将待删除的输入通道添加到相应的剩余通道,Σ仅修剪ResNet-56上的内部层,即,每个残差块中的第一层Liu等[44] Heet al.[26]跳过修剪这些麻烦的层,并且在推断时间期间在每个残差块中的第一层之前插入额外采样器层,虽然这些方法能够在一定程度上修剪网络,但从整体的角度来看,网络并没有完全“瘦身”,而是实际上“修剪”,如图所示。3.第三章。我们已经通过C-SGD部分解决了这个问题,其中的关键是迫使不同的层学习相同的冗余模式。例如,如果层p和层q必须以相同的模式修剪,则我们仅生成聚类(i+1):,:,k,:K4950(i+1):,:,H(k),:k∈Ri,对于层p通过某种手段,并分配结果的CLU,t设为q层,即Cq←Cp。然后在C-SGD然后,我们删除冗余滤波器以及等式2之后的下一层二,三。由于训练时,在层p和q中的滤波器之间产生相同的冗余模式即,如果第j个和第k个滤波器49513×3643×3643×364………采样器3×3643×3403×3403×3643×3643×364采样器3×3643×3453×3453×3643×3643×3643×340…3×3403×3403×3403×340100-7533...(a) 原始.…(b) 夹住了。…(c) 抽检…(d) 瘦了约1 −(5/8)2= 61%。 虽然它是侵略性的,但没有观察到明显的准确性下降。对于DenseNet-40,修剪后的模型在三个阶段分别有5、8和10个增量卷积层,因此FLOP减少了60.05%,并且观察到显著提高的准确性,这与[44]一致但优于ImageNet. 我们使用ResNet-50[23]在ImageNet上验证C-SGD的有效性在现实世界中的应用。我们在过滤器内核上应用k-means聚类来生成聚类,然后使用ILSVRC 2015训练集,该训练集包含1.28M高图3:与之前只在ResNets上裁剪内部层[40]或插入采样器层[26,44]的工作相比,C-SGD实际上是在在层p变得相同时,我们也确保在层q处的第j和第k滤波器的相同性,因此麻烦的层可以与其它层一起被修剪。为了更直观,附录中给出了一些草图。4. 实验4.1. 瘦身非常深和复杂的CNN我们在CIFAR-10 [33]和ImageNet-1 K[12]来评估我们的方法 对于每个试验,我们从一个经过良好训练的基础模型开始,并同时在所有目标层上应用C-SGD训练。C-SGD和其他过滤器修剪方法之间的比较如表所示。1、桌子2的绝对和相对误差增加,这是通常采用的指标,公平地比较不同的基础模型的准确性的变化。例如,我们的ResNet-50基础模型和C-SGD-70的Top-1精度分别为75.33%和75.27%,因此绝对误差和相对误差增加了75。33%-75。27% = 0。06%和0。06= 0。分别为24%CIFAR-10。 基础模型是从头开始训练的600个时期,以确保收敛,这是非常比通常采用的基准(160 [23]或300 [29] epoch)更长,使得修剪模型的改进的准确性不能简单地归因于尚未完全收敛的基础模型上的额外我们使用[23]采用的数据增强技术,即,填充到40×40,随机裁剪和翻转。超参数被随意设置为3×10−3。我们使用批量大小为64的C-SGD训练,学习率初始化为3×10−2,然后当损失停止减少时衰减0.1。对于每个网络,我们独立地执行两个实验,其中唯一的区别是我们生成过滤器聚类的方式,即均匀划分或k-means聚类。我们试图将每个模型的FLOP减少约60%,因此我们修剪了ResNets的每个卷积层的3/8,因此参数和FLOP减少了高质量的图像用于训练。我们采用标准的数据增强技术,包括b盒失真和颜色偏移。在测试时,我们使用一个单一的中心作物。对于C-SGD- 7/10、C-SGD-6/10和C-SGD-5/10,每个残留块中的所有第一层和第二层分别收缩到原始宽度的70%、60%和50%。讨论。我们的修剪网络表现出更少的FLOP,更简单的结构和更高或相当的准确性。请注意,我们对ResNets全局应用相同的修剪率,如果进行更多的层敏感性分析实验[26,40,66],并且相应地调整所得网络结构,则有望实现更好的结果。有趣的是,即使是任意生成的聚类也可以产生合理的结果(表1)。①的人。4.2. 冗余训练vs.正常训练C-SGD与其他修剪和微调方法[26,40,47,66]之间的比较表明,训练冗余网络并将其等效转换为更窄的网络可能比在修剪后对其进行微调更好这一观察结果与[14]和[27]一致,其中作者认为神经网络中的冗余对于克服高度非凸优化是必要的我们通过使用正常SGD训练窄CNN并将其与使用具有等效宽度的C-SGD训练的另一个模型进行比较来验证这一假设,这意味着在训练期间产生了一些冗余滤波器,例如,如果一个网络有2倍数量的滤波器作为正常的对应物,但每两个滤波器是相同的,它们最终将具有相同的结构。如果冗余节点的性能优于正常节点,我们可以得出结论,C-SGD确实产生更强大的网络通过利用冗余过滤器。在DenseNet-40上,我们将每个增量层的12个过滤器平均分为3个集群,使用C-SGD从头开始训练网络,然后对其进行修剪,以获得每个增量层3个过滤器即,在训练期间,每4个过滤器向心地增长。相比之下,我们通过普通SGD训练DenseNet-40,每层最初有3个过滤器。类似地进行另一组实验,其中每层以6个过滤器结束在那之后,前4952表1:CIFAR-10上的修剪结果对于C-SGD,左边是通过均匀聚类实现的,右边使用k-means。模型结果基本Top1修剪的Top1K均值Top1误差FLOPs架构表2:使用k-means聚类在ImageNet上修剪ResNet-50。结果Base Top1 Base Top5 Pruned Top1 Pruned Top5Top1错误Top5错误FLOPs绝对值/相对值↑%绝对值/相对值↑%↓%C-SGD-7075.3392.5675.2792.460.06/0.240.10/1.3436.75ThiNet-70 [47]72.8891.1472.0490.670.84/3.090.47/5.3036.75[25]第二十五话76.1592.8774.6192.061.54/6.450.81/11.3641.8NISP [66]----0.89/-- /-43.82C-SGD-6075.3392.5674.9392.270.40/1.620.29/3.8946.24[57]第五十七话75.392.273.491.41.9/7.690.8/10.2549.6[26]第二十六话-92.2-90.8- /-1.4/17.9450[46]第四十六话76.1592.8774.7692.151.39/5.820.72/10.0951.21国内生产总值[42]75.1392.3071.8990.713.2413.021.59/20.6451.30SSR-L2 [41]75.1292.3071.4790.193.65/14.672.11/27.4055.76DCP [70]76.0192.9374.9592.321.06/4.410.61/8.6255.76ThiNet-50 [47]72.8891.1471.0190.021.87/6.891.12/12.6455.76C-SGD-5075.3392.5674.5492.090.79/3.200.47/6.3155.76还进行了VGG [55]上的实验,其中我们分别将每层减薄到原始宽度的1/4和1/2表3:在CIFAR-10上使用C-SGD或正常SGD的划痕训练的DenseNet- 40和VGG的验证准确性。从表中可以得出结论。3、冗余滤波器确实有帮助,与具有相同宽度的正常训练的对应物相比。这一观察结果支持了我们的直觉,即向心增长的过滤器可以在一定程度上保持模型①的人。4.3. 使过滤器相同vs.归零由于使滤波器相同和将滤波器归零[3,15,43,60,63]是产生用于滤波器修剪的冗余模式的两种方法,因此我们进行了对照实验模型普通SGD C-SGDDenseNet-3DenseNet-6 89.9690.89VGG-1/4VGG-1/2 92.4993.22在ResNet-56上进行测试,以研究差异。为了公平比较,我们的目标是在使用C-SGD训练的模型和使用group-Lasso正则化的模型对于C-SGD,每层中的簇的数量是过滤器数量的5/8。为even /k-means绝对值/相对值↑%↓%ResNet-56Li等[第四十届]93.0493.06-0.02 /-0.2827.60仅修剪内部ResNet-56NISP-56 [66]--0.03/-43.61-ResNet-56[26]第二十六话92.891.81.0/13.8850取样层ResNet-56[24]第二十四话92.891.90.9/12.550取样层ResNet-56C-SGD-5/893.3993.31 /93.44-0.05 /-0.7560.8510-20-40ResNet-110Li等[第四十届]93.5393.300.23/3.5538.60仅修剪内部ResNet-110NISP-110 [66]--0.18/-43.78-ResNet-110C-SGD-5/894.3894.44 /94.270.11/1.9560.8910-20-40ResNet-164[44]第四十四话94.5894.73-0.15 /-2.7644.90取样层ResNet-164C-SGD-5/894.8394.75 /94.750.08/1.5460.9110-20-40DenseNet-40[44]第四十四话93.8994.35-0.46 /-7.5255.00-DenseNet-40C-SGD-5-8-1093.8194.31 /94.44-0.63 /-10.1760.055-8-10495322024680 50 100 150 200历元(a) χ或φ的值。0.80.60.40.2修剪前的C-SGD修剪前套索修剪后的C-SGD修剪后套索0 50 100 150 200历元(b) 验证准确度。0.9250.9000.8750.8500.8250.8000.7750.7500.930.920.910.900.890.880.87图4:在ResNet-56上使用C-SGD或group-Lasso的训练过程。注意左图的对数刻度。0100200300400500600历元(a) 每层三个过滤器。0100200300400500600历元(b) 每层6个过滤器。Lasso,pacesetters和inter-nal层中的3/8的原始过滤器通过group-Lasso进行正则化,并且以相同的模式处理followers我们使用前面提到的核偏差平方和χ和核残差平方和φ分别测量冗余度。设L为层索引集,Pi为层i的待修剪滤波器集,即,具有group-Lasso正则化的3/8滤波器的集合,图5:DenseNet-40上的受控修剪实验。所有的结果都在Fig. 5. 每个模型的训练设置都是相同 的 : 学 习 率 τ=3×10−3 , 3×10−4 , 3×10−5 ,3×10−6,对于200,200,分别为100和100个历元,以确保收敛每一个模型。对于我们的方法,模型是用C-SGD训练和修剪的。[28]第29话:我的天!(i)φ=||K:,j||2.基于泰勒展开[49],通过不同的标准修剪模型标签为Lassoi∈Lj∈Pi我们在Fig.4修剪前后的χ、φ曲线及验证精度。 学习率τ初始设定为3×10−2,在第100和200个历元分别衰减0.1。可以观察到:1)Group Lasso不能从字面上将滤波器归零,但可以在一定程度上降低它们的大小,因为当从正则化项导出的梯度变得接近从原始目标函数导出的梯度时,φ趋于平稳我们通过实验发现,即使当φ达到4 × 10−4左右,比初始值小了近2 ×106倍,修剪 仍然会造成 明显 的损害 (精度下 降约10%)。当学习率衰减并且φ在epoch 200处减小时,我们没有观察到修剪准确度的改善,因此没有进行具有更小学习率或更强组Lasso正则化的更多实验我们认为这是由于非常深的CNN中的错误传播和放大[66]。2)通过C-SGD ,χ单调地和完全指数地减小,从而加快了收敛速度。即,每个群中的滤波器可以以恒定的学习速率以恒定的速率无限地彼此接近。对于C-SGD,修剪在大约90个时期之后几乎不会导致性能损失。3 )使用group-Lasso训练比C-SGD慢2倍,因为它需要昂贵的平方根运算。4.4. C SGDvs.其他过滤器修剪方法我们通过在DenseNet-40上的对照实验将C-SGD与其他方法进行比较[29]。我们将训练有素的DenseNet-40的每一个递增层分别精简为3个和6个过滤器。实验重复3次,提前用group-Lasso正则化训练600个epoch,修剪,然后用相同的学习率时间表微调另外每10,000次迭代(12.8个epoch)在验证集上测试模型。结果表明,C-SGD具有精度高、稳定性好的优点。虽然group-LassoRegularization确实可以减少修剪导致的性能下降,但它的性能远远优于C-SGD。有趣的是,剧烈修剪的网络是不稳定的,容易陷入局部最小值,例如,精度曲线在开始时急剧增加,但随后略有下降。这一观察结果与Liu等人的观察结果一致。[45]第45段。5. 结论我们建议在CNN中产生相同的滤波器,以实现网络瘦身。直觉是,使滤波器相同不仅可以消除微调的需要,而且与归零方式相比,还可以保留网络的更多代表性能力(图1)。①的人。我们已经部分解决了非常深和复杂的CNN上的约束过滤器修剪的开放问题,并在几个常见的基准测试中取得了最先进的结果。通过使用C-SGD训练具有冗余滤波器的网络,我们已经证明了冗余可以帮助神经网络训练收敛的假设的经验证据,这可能会鼓励未来的除了修剪,我们认为C-SGD有望作为正则化或训练技术的一种手段。C-SGDLassoAPoZLasso幅度C-SGD泰勒log10 或log10APoZLasso幅度C-SGD泰勒前1精度值精度值精度4954引用[1] M. Abadi、A.Agarwal,P.Barham,E.Brevdo,Z.陈先生,C.西特罗湾S. Corrado,A. Davis,J. Dean,M. Devin等人Tensorflow:异构分布式系统上的大规模机器学习。arXiv预印本arXiv:1603.04467,2016。[2] R. Abbasi-Asl和B.Yu. 基于贪婪滤波器剪枝的卷积神经网络结构压缩arXiv预印本arXiv:1705.07356,2017。[3] J. M. Alvarez和M.萨尔茨曼学习深度网络中的神经元数量。神经信息处理系统的进展,第2270-2278页,2016年[4] J. M. Alvarez和M.萨尔茨曼深度网络的压缩感知训练。神经信息处理系统的进展,第856-867页,2017年[5] S. Anwar,K. Hwang和W. 宋 深度卷积神经网络的结构化 裁剪 。ACM Journal on Emerging Technologies inComputing Systems(JETC),13(3):32,2017。[6] J. Ba和R.卡鲁阿纳深网真的需要深吗?神经信息处理系统的进展,第2654-2662页,2014年[7] G.卡斯特拉诺A. M. Fanelli和M.佩利罗前馈神经网络的迭代剪枝算法。IEEE神经网络学报,8(3):519[8] Y. Cheng,F. X.于河,巴西-地S. Feris,S.库马尔A.Choudhary和S.- F.昌循环投影深度网络中参数冗余的探索。在IEEE计算机视觉国际会议论文集,第2857-2865页[9] M. D. Collins和P.科利。内存有界深度卷积网络。arXiv预印本arXiv:1412.1442,2014年。[10] R. Collobert和J.韦斯顿自然语言处理的统一架构:具有多任务学习的深度神经网络。第25届机器学习国际会议论文集,第160-167页。ACM,2008年。[11] M.库尔巴里奥岛Hubara,D.苏德里河El-Yaniv,以及Y.本吉奥。二进制神经网络:训练深度神经网络,权重和 激 活 限 制 为 +1 或 -1 。 arXiv 预 印 本 arXiv :1602.02830,2016。[12] J. Deng,W.东河,巴西-地索赫尔湖J. Li,K. Li和L.飞飞。Imagenet:一个大规模的分层图像数据库。 在计算机视觉和模式识别,2009年。CVPR 2009。IEEE会议,第248-255页。IEEE,2009年。[13] M.德尼尔湾沙基比湖Dinh,N. De Freitas等人深度学习中的预测参数。神经信息处理系统的进展,第2148-2156页,2013年[14] E. L. Denton,W. Za
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 新代数控API接口实现CNC数据采集技术解析
- Java版Window任务管理器的设计与实现
- 响应式网页模板及前端源码合集:HTML、CSS、JS与H5
- 可爱贪吃蛇动画特效的Canvas实现教程
- 微信小程序婚礼邀请函教程
- SOCR UCLA WebGis修改:整合世界银行数据
- BUPT计网课程设计:实现具有中继转发功能的DNS服务器
- C# Winform记事本工具开发教程与功能介绍
- 移动端自适应H5网页模板与前端源码包
- Logadm日志管理工具:创建与删除日志条目的详细指南
- 双日记微信小程序开源项目-百度地图集成
- ThreeJS天空盒素材集锦 35+ 优质效果
- 百度地图Java源码深度解析:GoogleDapper中文翻译与应用
- Linux系统调查工具:BashScripts脚本集合
- Kubernetes v1.20 完整二进制安装指南与脚本
- 百度地图开发java源码-KSYMediaPlayerKit_Android库更新与使用说明
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功