0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数据集,网络架构和剪枝方法

DPVg_AI_era 来源:未知 作者:李倩 2018-10-23 09:15 次阅读

模型剪枝被认为是一种有效的模型压缩方法。然而,剪枝方法真的有文献中声称的那么有效吗?最近UC Berkeley、清华大学的研究人员提交给ICLR 2019的论文《重新思考剪枝》质疑了六种剪枝方法,引起关注。

网络剪枝(Network Pruning)是常用的模型压缩方法之一,被广泛用于降低深度模型的繁重计算量。

一个典型的剪枝算法通常有三个阶段,即训练(大型模型),剪枝和微调。在剪枝过程中,根据一定的标准,对冗余权重进行修剪并保留重要权重,以最大限度地保持精确性。

剪枝通常能大幅减少参数数量,压缩空间,从而降低计算量。

然而,剪枝方法真的有它们声称的那么有效吗?

最近一篇提交给ICLR 2019的论文似乎与最近所有network pruning相关的论文结果相矛盾,这篇论文质疑了几个常用的模型剪枝方法的结果,包括韩松(Song Han)获得ICLR2016最佳论文的“Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding”。

这篇论文迅速引起关注,有人认为它甚至可能改变我们在工业中训练和部署模型的workflow。论文作者来自UC Berkeley和清华大学,他们在OpenReview上与被他们质疑的模型作者有一些有意思的反馈,感兴趣的读者可以去看看。地址:

https://openreview.net/forum?id=rJlnB3C5Ym

论文地址:

https://arxiv.org/pdf/1810.05270.pdf

在这篇论文里,作者发现了几个与普遍观念相矛盾的的观察。他们检查了6种最先进的剪枝算法,发现对剪枝后的模型进行fine-tuning,只比使用随机初始化权重训练的网络的性能好一点点,甚至性能更差。

作者说:“对于采用预定义目标网络架构的剪枝算法,可以摆脱整个pipeline并直接从头开始训练目标网络。我们的观察结果对于具有多种网络架构,数据集和任务的各种剪枝算法是一致的。”

作者总结认为,这一发现有几个意义:

1)训练一个大型、over-parameterized的模型对于最终得到一个efficient的小模型不是必需的;

2)为了得到剪枝后的小模型,求取大模型的“important” weights不一定有用;

3)剪枝得到的结构本身,而不是一组“important” weights,是导致最终模型效果提升的原因。这表明一些剪枝算法可以被视为执行了“网络结构搜索”(network architecture search)。

推翻网络剪枝背后的两个共同信念

过度参数化(over-parameterization)是深度神经网络的一个普遍属性,这会导致高计算成本和高内存占用。作为一种补救措施,网络剪枝(network pruning)已被证实是一种有效的改进技术,可以在计算预算有限的情况下提高深度网络的效率。

网络剪枝的过程一般包括三个阶段:1)训练一个大型,过度参数化的模型,2)根据特定标准修剪训练好的大模型,以及3)微调(fine-tune)剪枝后的模型以重新获得丢失的性能。

网络剪枝的三个阶段

通常,这种剪枝程序背后有两个共同的信念。

首先,人们认为从训练一个大型的、过度参数化的网络开始是很重要的,因为它提供了一个高性能的模型,从中可以安全地删除一组冗余参数而不会显着损害准确性。因此,这通常被认为是比直接从头开始训练较小的网络更好的方法,也是一种常用的baseline方法。

其次,修剪后得到的结构及其相关权重被认为是获得最终的有效模型所必需的。

因此,大多数现有的剪枝技术选择fine-tune剪枝模型,而不是从头开始训练。剪枝后保留的权重通常被认为是关键的,因此如何准确地选择重要权重集是一个非常活跃的研究课题。

在这项工作中,我们发现上面提到的两种信念都不一定正确。

基于对具有多个网络架构的多个数据集的最新剪枝算法的经验评估,我们得出了两个令人惊讶的观察。

图2:预定义和非预定义目标架构的区别

首先,对于具有预定义目标网络架构的剪枝算法(图2),从随机初始化开始直接训练小型目标模型可以实现与剪枝方法获得的模型相同(甚至更好)的性能。在这种情况下,不需要从大型模型开始,而是可以直接从头开始训练目标模型。

其次,对于没有预定义目标网络的剪枝算法,从头开始训练剪枝模型也可以实现与fine-tune相当或甚至更好的性能。这一观察表明,对于这些剪枝算法,重要的是获得的模型架构,而不是保留的权重,尽管找到目标结构需要训练大型模型。

我们的结果主张重新思考现有的网络剪枝算法。似乎在第一阶段的训练期间的过度参数化并不像以前认为的那样有益。此外,从大型模型继承权重不一定是最优的,并且可能将修剪后的模型陷入糟糕的局部最小值,即使权重被剪枝标准视为“重要”。

相反,我们的结果表明,自动剪枝算法的价值在于识别有效的结构和执行隐式架构搜索(implicit architecture search),而不是选择“important”权重。我们通过精心设计的实验验证了这一假设,并展示了剪枝模型中的模式可以为有效的模型架构提供设计指导。

从头开始训练小模型的方法

本节描述了从头开始训练小型目标模型的方法。

目标剪枝架构(Target Pruned Architectures)

我们首先将网络剪枝方法分为两类。在pruning pipeline中,目标剪枝模型的架构可以由人(即预定义的)或剪枝算法(即自动的)来确定(见图2)。

数据集,网络架构和剪枝方法

在network pruning 的相关文献中,CIFAR-10,CIFAR-100和ImageNet数据集是事实上的基准,而VGG,ResNet和DenseNet是常见的网络架构。

我们评估了三种预定义目标架构的剪枝方法:Li et al. (2017), Luo et al. (2017), He et al. (2017b),以及评估了三种自动发现目标模型的剪枝方法Liu et al. (2017), Huang & Wang (2018), Han et al. (2015)。

训练预算

一个关键问题是,我们应该花多长时间从头开始训练这个剪枝后的小模型?用与训练大型模型同样的epoch数量来训练可能是不公平的,因为小模型在一个epoch中需要的计算量要少得多。

在我们的实验中,我们使用Scratch-E表示训练相同epoch的小剪枝模型,用Scratch-B表示训练相同数量的计算预算。

实现(Implementation)

为了使我们的设置尽可能接近原始论文,我们使用了以下协议:

1)如果以前的剪枝方法的训练设置是公开的,如Liu et al.(2017)和Huang & Wang(2018),就采用原始实现;

2)对于更简单的剪枝方法,如Li et al.(2017)和Han et al.(2015),我们重新实现了剪枝方法,得到了与原论文相似的结果;

3)其余两种方法(Luo et al., 2017; He et al., 2017b),剪枝后的模型是公开的,但是没有训练设置,因此我们选择从头训练目标模型。

结果和训练模型的代码可以在这里中找到:

https://github.com/Eric-mingjie/rethinking-networks-pruning

实验与结果

在本节中,我们将展示实验结果,这些实验结果比较了从头开始的训练剪枝模型和基于继承权重进行微调,以及预定义和自动发现的目标体系结构的方法。此外还包括从图像分类到物体检测的转移学习实验。

表1:基于L1范数的通道剪枝的结果(准确度)。“剪枝模型”是从大型模型中进行剪枝的模型。原模型和剪枝模型的配置均来自原始论文。

表2:ThiNet的结果(准确度)。“VGG-GAP”和“ResNet50-30%”等指ThiNet中配置的剪枝模型。为了适应本文的方法和原论文之间不同框架的影响,我们比较了相对于未剪枝的大型模型的相对精度下降。例如,对于剪枝后的模型VGG-Conv为-1.23,即表示相对左侧的71.03的精度下降,后者为原始论文中未剪枝的大型VGG-16的报告精度

表3:基于回归的特征重建结果(准确度)。与表2类似,我们比较了相对于未剪枝的大型模型的相对精度下降。

表4:网络Slimming的结果(准确度)“剪枝比”表示在整个网络中,剪枝通道所占的总百分比。每种模型使用与原论文的相同比率。

表5:使用稀疏结构选择的残余块剪枝结果(准确度)。在原始论文中不需要微调,因此存在一个“剪枝”列,而不是“微调”列

表6:非结构化剪枝的结果(准确度)“剪枝比”表示在所有卷积权重集中,进行剪枝的参数的比例。

表7:用于检测任务的剪枝结果(mAP)。Prune-C指的是剪枝分类预训练的权重,Prune-D指的是在权重转移到检测任务后剪枝。 Scratch-E / B表示从头开始训练分类剪枝模型,移至检测任务。

总之,对于面向预定义目标架构的剪枝方法而言,使用与大型模型(Scratch-E)数量相同的迭代次数来训练小模型,通常就足以实现与三步输出的模型相同的精度。再加上目标架构是预定义的,在实际应用中,人们往往更愿意直接从头开始训练小模型。

此外,如果具备与大型模型相当的计算预算(算力)时,从头训练的模型的性能甚至可能微调模型更高。

讨论与结论

我们建议,未来应采用相对高性能的基线方法来评估剪枝方法,尤其是在预定义目标的体系结构剪枝。除了高精度之外,从头开始训练预定义的目标模型与传统的网络剪枝相比具有以下优势:

• 由于模型较小,可以使用更少的GPU资源来训练模型,而且可能比训练原始大型模型速度更快。

• 无需实施剪枝的标准和流程,这些流程有时需要逐层微调和/或需要针对不同的网络架构进行定制。

• 可以避免调整剪枝过程中涉及的其他超参数。

我们的结果可利用剪枝方法来寻找高效的架构或稀疏模式,可以通过自动剪枝方法来完成。此外,在有些情况下,传统的剪枝方法比从头开始训练要快得多,比如:

•已经提供预训练的大型模型,且训练预算很少。

• 需要获得不同大小的多个模型,在这种情况下,可以训练大型模型,然后以不同的比例剪枝。

总之,我们的实验表明,从头开始训练小修剪模型几乎总能达到与典型的“训练-剪枝-微调”流程获得的模型相当或更高的精度。这改变了我们对过度参数化的必要性的理解,进一步证明了自动剪枝算法的价值,可以用来寻找高效的架构,并为架构设计提供指导。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模型
    +关注

    关注

    1

    文章

    2671

    浏览量

    47573
  • 数据集
    +关注

    关注

    4

    文章

    1174

    浏览量

    24289

原文标题:清华&伯克利ICLR论文:重新思考6大剪枝方法

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    数据基础架构的未来

    处理、存储和网络带宽要求。对于数据密集型工作负载现状(例如大数据、快数据、分析、人工智能和机器学习)而言,“大而全”的方法已不再适用。目前面
    发表于 07-29 06:28

    解读CPU的组成指令架构

    文章目录脑图视频解读CPU的组成指令架构: 复杂指令 (CISC) VS 精简指令 (RISC)X86架构ARM
    发表于 07-30 06:20

    AVR架构下的汇编语言常用指令

    下面是AVR架构下的汇编语言常用指令,英语原版看起来会更容易理解,如下所示:上面是常用的指令,全部指令的使用方法可以在之类找到:
    发表于 11-23 09:10

    精简指令架构RISC与复杂指令架构CISC有何区别

    精简指令架构RISC是什么?复杂指令架构CISC又是什么?精简指令架构RISC与复杂指令
    发表于 12-23 10:02

    卷积神经网络长尾数据识别的技巧包介绍

    1、卷积神经网络长尾数据识别的技巧包  最近,长尾识别持续引起关注,产生了很多不同的方法,这些方法属于不同的范式,度量学习,元学习和知识迁
    发表于 11-30 15:26

    基于PC架构网络时延测量方法

    本内容提供了基于PC架构网络时延测量方法
    发表于 06-29 16:22 28次下载
    基于PC<b class='flag-5'>架构</b>的<b class='flag-5'>网络</b>时延测量<b class='flag-5'>方法</b>

    一种改进的神经网络相关性剪枝算法

    神经网络剪枝有利于网络结构的简化,而作为剪枝算法中的比较重要的相关性剪枝算法,在计算了隐层节点输出的线性相关性和方差后,对于如何根据线性相
    发表于 05-14 11:54 0次下载

    一种新型的决策树剪枝优化算法

    目前关于决策树剪枝优化方面的研究主要集中于预剪枝和后剪枝算法。然而,这些剪枝算法通常作用于传统的决策树分类算法,在代价敏感学习与剪枝优化算法
    发表于 11-30 10:05 0次下载
    一种新型的决策树<b class='flag-5'>剪枝</b>优化算法

    基于影响度剪枝的ELM分类算法

    个数,定义单个隐节点相对于整个网络学习的影响度,根据影响度判断隐节点的重要性并将其排序,采用与ELM网络规模相匹配的剪枝步长删除冗余节点,最后更新隐含层与输入层和输出层连接的权值向量。通过对多个UCI机器学习
    发表于 12-01 17:21 0次下载

    如何使用剪枝优化与索引求交改进Eclat算法

    待连接的项集数量以减少项集连接操作,同时利用先验性质对连接后的项集进行后剪枝处理;接着提出了一种基于事务索引的布尔数组求交方法,即通过将事务标识作为索引来设置并检索布尔数组,以获得项集支持度计数;最后通过设计对比实验,
    发表于 12-19 11:44 2次下载
    如何使用<b class='flag-5'>剪枝</b>优化与索引求交改进Eclat算法

    基于深度神经网络的结构化剪枝算法

      现有结构化剪枝算法通常运用深度神经网络(DNN)的一阶或者零阶信息对通道进行剪枝,为利用二阶信息加快DNN网络模型收敛速度,借鉴HAWQ算法思想提岀一种新的结构化
    发表于 03-10 16:41 2次下载
    基于深度神经<b class='flag-5'>网络</b>的结构化<b class='flag-5'>剪枝</b>算法

    嵌入式设备的YOLO网络剪枝算法

    为保证YoLO网络在嵌入式设备上正常运行,需采用剪枝算法精简滤波器以减小网络存储空间和计算量,而现有剪枝算法耗时较长且剪枝精度较低。提出一种
    发表于 03-11 16:52 4次下载
    嵌入式设备的YOLO<b class='flag-5'>网络</b><b class='flag-5'>剪枝</b>算法

    神经网络模型剪枝后泛化能力的验证方案

    针对神经网络模型在剪枝操作中υrˆ opout率下调造成的过拟合冋题,提岀一种剪枝模型泛化能力的验证方法。硏究人为遮挡数据集模拟图像范围的变
    发表于 05-25 14:48 4次下载

    基于ReliefF剪枝的多标记分类算法综述

    基于ReliefF剪枝的多标记分类算法综述
    发表于 06-24 14:48 12次下载

    DepGraph:任意架构的结构化剪枝,CNN、Transformer、GNN等都适用!

    结构化剪枝是一种重要的模型压缩算法,它通过移除神经网络中冗余的结构来减少参数量,从而降低模型推理的时间、空间代价。在过去几年中,结构化剪枝技术已经被广泛应用于各种神经网络的加速,覆盖了
    的头像 发表于 03-29 11:23 2965次阅读