当前位置:   article > 正文

剪枝综述论文阅读:Methods for Pruning Deep Neural Networks_optimal brain damage(obd)算法

optimal brain damage(obd)算法

论文链接: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使用这个度量来保留一定比例的输出特征图以及导致最大方差的相应过滤器。

去掉输出特征图存在一定问题,因为它被期望作为下一层的输入通道。为了克服这个问题,他们使用其他通道来近似一个被移除的通道。也就是说,如果声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】

推荐阅读
相关标签