文章目录

  • 一、概述
    • 1.分类
    • 2.评估
  • 二、Magnitude based pruning
    • 1.权重剪枝
    • 2.彩票定理
    • 3.特征图和过滤器剪枝
      • (1)基于通道方差的剪枝
        • Inbound pruning
        • Reduce and Reuse pruning
        • 结论
      • (2)基于熵的通道剪枝
        • 结论
      • (3)APoZ: 基于通道中0的数量进行通道微调
      • (4)剪枝小的过滤器
      • (5)基于几何中位数的过滤器剪枝
      • (6)ThiNet and AOFP: 识别较弱的通道
        • ThiNet
        • AOFP
      • (7)使用Lasso回归优化通道选择
  • 三、相似度和聚类方法
    • 1.使用余弦相似度来验证重复
    • 2.使用聚类来识别冗余
  • 四、敏感度分析方法
    • 1.使用骨架化(Skeletonization)来剪枝节点
    • 2.使用OBD和OBS来剪枝权重
      • OBD算法
      • OBS算法
    • 3.使用一阶泰勒估计剪枝特征图
    • 4.学习用智能体(Agent)来剪枝过滤器
    • 5.多臂赌博机(MAB)中的剪枝

论文链接:Methods for Pruning Deep Neural Networks

一、概述

近年来,随着嵌入式设备的广泛使用,在嵌入式设备上运行神经网络模型有了很大的需求,然而当前的网络结构越来越复杂,因此对网络进行修剪成为了比较热门的问题。

1.分类

本文将一系列减小网络结构的方法分为了以下八部分,分别是:

  1. Magnitude based pruning methods:权重和神经元的显著性可以通过其数量级等本地度量来确定,或者通过它们对下一层的影响来近似确定。具有最小的显著性的权重和神经元被删除后对准确性的影响最小。
  2. 相似度和聚类方法:重复或者相似的权重是多余的,可以被剪枝
  3. 敏感度分析方法:评估移除或干扰权重对损耗的影响,然后移除对精度影响最小的权重的部分。
  4. 知识蒸馏方法:利用Teacher网络来学习Student网络。
  5. 低轶方法:将一个矩阵分解成两个较小的矩阵的乘积。
  6. 量化方法:使用量化,哈希,低精度和二进制表示的权值来减少计算。
  7. 结构设计方法(NAS):利用智能搜索和强化学习方法生成神经网络架构。
  8. 混合方法:将以上方法混合使用

本文主要介绍前三种方法,更细节的分类如下图所示:

基于数量级的方法可以细分为:

  • 依赖数据的方法:利用一些样本来评估去除权重对下一层直接产出的影响程度;
  • 不依赖数据的方法:利用诸如权重大小等措施的独立数据方法;
  • 使用优化方法减少一层中的权重数,同时近似层的功能。

基于相似度和聚类方法比较少,因此不进行细分。

利用灵敏度分析的方法可以细分为:

  • 利用泰勒级数近似的损失和
  • 使用采样等方法估计权重被删除时损失的变化。

2.评估

当评估剪枝方法,以下措施用来比较他们的性能:

  • 模型的准确性取决于正确分类最先出现的列表中排名结果(Top-1)或排名列表的前五名(Top-5)。在下面的章节中,除非我们明确地限定了一个度量,否则应该假定精度为Top-1。
  • 剪枝方法的有效性通常体现在压缩率;即对模型进行剪枝前后的参数比。
  • 结果模型的计算效率通常以执行分类所需的浮点运算(FLOPs)来表示。

二、Magnitude based pruning

1.权重剪枝

论文Learning both Weights and Connections for Efficient Neural Networks首先介绍了权重剪枝的方法:将权重低于某个阈值的全部被剪枝,之后进行fine-tuned直到准确率达到预期。

该论文的作者在LeNet、AlexNet、VGGNet上分别进行了实验验证了剪枝的作用。另一个针对L1和L2正则化的结论表明,不进行fine-tuned的情况下L1正则化更好,进行fine-tuned则L2正则化更好。另外,前面的网络层对剪枝更加敏感,因此迭代式剪枝方式更好。

2.彩票定理

彩票理论:对于一个已经训练好的网络,一定存在它的一个子网络可以在不超过原网络训练轮数的情况下达到和原网络相当的准确率。这个子网络就类似于买彩票。

在LeNet和MNIST数据的实验中,研究者尝试了两种方法,第一种是完成训练后剪枝p%的参数,将剩余的参数重新初始化并重新训练,第二种方法是进行n轮迭代式剪枝。研究者们得到了如下结论:

  • 仅仅有原网络3.6%大小的子网络效果依然很好
  • 剪枝后网络再进行重新初始化训练会很慢
  • 迭代式剪枝会得到更准确的小型网络

在比较大的网络如AlexNet和VGGNet的结论表明,彩票理论依赖于学习率,较小的学习率更容易找到“彩票”。

在之后的论文Rethinking the Value of Network Pruning中,研究者对彩票理论提出了质疑。该作者使用了三种剪枝方法,分别是结构化剪枝(每层剪枝的通道比例是预定义的),自动化剪枝(全局剪枝比例确定,每层剪枝比例由算法决定),非结构化权重剪枝(只有权重的剪枝比例是预定义的)。

根据以上三种方法进行的实验,作者得出的结论是对于结构化和自动剪枝,随机初始化依旧有效,对于非结构化剪枝,在小型数据集可以去得不错的结果,大型数据集需要进行fine-tuning。

在后续的研究中,针对以下几个问题进行了更多的实验:

  • “彩票”能不能从一个图像分类任务迁移到另一个任务?
  • “彩票”能不能适用于其他任务,例如NLP?
  • 在不同的优化器之间是否可以进行迁移?

经过大量实验得到的结论是:

  • 在更大规模的任务上(例如ImageNet)会取得更好的结果
  • 在NLP领域和RL领域的实验表明迭代式剪枝比重新初始化效果好
  • 优化器独立的

3.特征图和过滤器剪枝

一些作者指出,尽管修剪权值的方法会导致更少的参数,但它们需要专门的库或硬件来处理产生的稀疏权值矩阵。相反,更高粒度级别的修剪(例如修剪过滤器和通道)可以从许多当前工具包中已有的优化中获益。这导致了许多旨在剪枝特征映射和过滤器的方法,这些方法将在本节中总结。

本部分主要从三个方向来阐述:

  • 依赖数据的通道剪枝方法:当用不同的输入时,输出通道(即特征图)应该有所不同,因为它们是为了检测有区别的特征。(1、2小节)
  • 直接通道剪枝方法:目的是识别滤波器和输出通道中的属性,如零的比例存在和低幅度的权值(3、4、5小节)
  • 基于优化器的通道估计剪枝方法:目的是利用优化方法对输出特征图进行近似,重建过滤器(6、7小节)

(1)基于通道方差的剪枝

论文 Channel-level Acceleration of Deep Face Representations提出了两种通道剪枝的方法,Inbound pruning和Reduce and Reuse pruning

Inbound pruning

Inbound pruning目的是为了减少输入到过滤器的通道数,其核心思想是使用不同的样本作为输入时,评估输入通道对输出特性映射的贡献变化的程度。这种方法的实现方式是用一些图片样本输入网络,使用特征图中由于通道而产生的差异作为其贡献的度量。

给定Wji为第j个过滤器对应第i个输入通道,和Xip为第i个通道第p个样本的输入,则第j个输出特征图的贡献Y可以被定义为:

根据上述定义,评估该贡献的方差的方法如下:

经过评估后将低于阈值的通道全部剪枝掉

Reduce and Reuse pruning

Reduce and Reuse pruning目的是减少输出通道数,其思想是当输入不同的样本时,评估输出特征图的变化。

该方法首先计算输出特征图的方差,m为输入通道数,N为样本数:

然后,Reduce和Reuse使用这个度量来保留一定比例的输出特征图以及导致最大方差的相应过滤器。

去掉输出特征图存在一定问题,因为它被期望作为下一层的输入通道。为了克服这个问题,他们使用其他通道来近似一个被移除的通道。也就是说,如果

剪枝综述论文阅读:Methods for Pruning Deep Neural Networks相关推荐

  1. 论文-阅读理解-Adversary Resistant Deep Neural Networks with an Application to Malware Detection

    整体来说,Adversary Resistant DeepNeural Networks with an Application to Malware Detection 这篇论文是利用了生成对抗网络 ...

  2. 论文阅读笔记《Fine-tuning Deep Neural Networks in Continuous Learning Scenarios》

    摘要:深度神经网络的复兴与ImageNet数据集的公开为近期复杂识别任务的成功奠定了基础.然而,ImageNet并不能包含所有可能的应用场景的所有视觉概念.因此,应用科学家仍然不断地记录新的数据,并期 ...

  3. 论文阅读 [TPAMI-2022] ManifoldNet: A Deep Neural Network for Manifold-Valued Data With Applications

    论文阅读 [TPAMI-2022] ManifoldNet: A Deep Neural Network for Manifold-Valued Data With Applications 论文搜索 ...

  4. 减少模型参数---模型剪枝(Pruning Deep Neural Networks)

    简介 模型剪枝就是根据神经元的贡献程度对网络中的神经元进行排名,可以从网络中移除排名较低的神经元,从而形成一个更小.更快的网络模型. 基本思想示意图: 模型剪枝根据神经元权重的L1/L2范数来进行排序 ...

  5. 模型剪枝三:Learning Structured Sparsity in Deep Neural Networks

    论文:https://arxiv.org/abs/1608.03665 代码:https://github.com/wenwei202/caffe/tree/scnn 1 核心思想 前面两篇文章htt ...

  6. 图神经网络论文阅读(十六) GraLSP: Graph Neural Networks with Local Structural Patterns,AAAI 2020

    本文作者来自香港科技大学.北大和北邮,其中包含宋国杰老师和石川老师,这两位都是国内研究图表示学习的翘楚了.之前读石川团队论文的时候自己犯傻发邮件问了一个比较弱智的问题,石川老师还是让学生耐心帮我解答了 ...

  7. 【论文泛读】XFlow: Cross-Modal Deep Neural Networks for Audiovisual Classification

    论文题目:XFlow: Cross-Modal Deep Neural Networks for Audiovisual Classification 时间:2019 来源:IEEE TNNLS 论文 ...

  8. prompt综述论文阅读:Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural La

    prompt综述论文阅读:Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Lan ...

  9. 强化学习泛化性 综述论文阅读 A SURVEY OF GENERALISATION IN DEEP REINFORCEMENT LEARNING

    强化学习泛化性 综述论文阅读 摘要 一.介绍 二.相关工作:强化学习子领域的survey 三.强化学习中的泛化的形式 3.1 监督学习中泛化性 3.2 强化学习泛化性背景 3.3 上下文马尔可夫决策过 ...

最新文章

  1. Nature『大脑废物清除系统』已上线,从“痴呆”变聪明或成可能
  2. 一步一步写算法(之hash表)
  3. python画折线图代码-python绘制简单折线图代码示例
  4. Windows Phone 7 中的切换应用
  5. 阿里云打下AI地基,更多的开发者走向了前台
  6. linux管理之磁盘信息和进程管理
  7. 什么是ci/cd_什么是CI / CD?
  8. 【IDEA】IDEA 单元测试 System.in 没办法输入
  9. field list什么意思_时序数据库有什么不一样?
  10. 图片简单上色,花开花落云卷云舒。
  11. 多媒体计算机设备使用注意,多媒体电教设备常见问题与解决办法
  12. 时间序列分析:平稳时间序列建模
  13. idc机房运维巡检_20年代IDC的“新十二大”基础设施系统你都了解吗?
  14. activator类的使用
  15. AS中NDK环境搭建
  16. 运动垫的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. JavaScript基础-数组
  18. 【工具】VScode|Linux 中怎么调试 Python 项目比较方便?又名 VScode 怎么调试 Python 项目(兼容环境Ubuntu18.04)
  19. python pdfminer的功能_python:pdfminer接口测试
  20. 2021年中国苹果及苹果加工品进出口情况:我国苹果干进出口均价均有所上涨[图]

热门文章

  1. 打破“信息孤岛”不能透支信息安全
  2. 创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作...
  3. MySQL_PHP学习笔记_2015_0614_PHP传参总结_URL传参_表单传参
  4. c#程序实现调用迅雷
  5. LINUX系统管理与应用
  6. iptables联系一
  7. 结构体中函数应该怎样定义才能返回值_15 函数的基本使用
  8. 测试面试必问点【干货】建议收藏!!
  9. 计算机软件著作权登记怎么填写,计算机软件著作权登记申请表填写说明
  10. mysql openwrt 编译_如何编译OpenWrt