论文笔记 Pruning neural networks without any databy iteratively conserving synaptic flow

2023-05-16

摘要

        修剪神经网络的参数可以在训练和测试期间节省时间、内存和能量。最近的研究发现,通过一系列昂贵的训练和修剪周期,初始化时存在中奖彩票或稀疏可训练的子网络。这就提出一个基本问题:我们能否在初始化时识别出高度稀疏的可训练的子网络,而不需要训练,或者实际上不需要查看数据。答案是肯定的,该文章首先在数学上制定并实验验证了一个守恒定律,该定律解释了为什么现有的基于梯度的修剪算法在初始化时会出现层塌,整个层的过早修剪使网络不可训练。该理论还阐明了如何完全避免层塌,激发了一种新的剪枝算法迭代突触流剪枝(SynFlow)。该算法可以解释为在初始化时,受稀疏性约束,保持网络中突触强度的总流。值得注意的是,该算法不参考训练数据,并且在初始化一系列模型(VGG和ResNet)、数据集(CIFAR-10/100和Tiny ImageNet)和稀疏性约束(高达99.99%)时,始终与现有的最先进的修剪算法竞争或优于它们。因此,我们的数据不可知修剪算法挑战了现有的范式,在初始化时,必须使用数据来量化哪些突触是重要的。

引言

        我们的目标是在初始化时识别出高度稀疏的可训练的子网络,而不需要训练、甚至不需要查看数据。为了实现这一目标,该文首先研究了现有剪枝算法(SNIP,Grasp)在初始化时的局限性,确定了避免这些限制的简单策略,并提供了一种新的数据不可知算法、实现了最先进的结果。该文章的主要贡献有:

        1.研究了层塌,对整个层的过早修剪使网络不可训练、并制定了最大临界压缩公理,假定修剪算法应该尽可能避免层塌。

        2.从理论和经验上证明,突触显著性,一种基于梯度的修剪分数的一般类别,在神经网络的每个隐藏单元和层上是保守的。

        3.表明了这些守恒定律意味着大层中的参数比小层中的参数获得更低的分数,这说明了为什么单次修剪不成比例的修剪最大的层,导致层塌。

        4.假设迭代幅度修剪可以避免层塌,因为梯度下降有效地鼓励幅度分数遵守守恒定律,这与迭代结果相结合,在修剪期间最大层的相对分数增加。

        5.证明了一个剪枝算法完全避免层塌,并满足最大临界压缩,如果它使用迭代,积极的突触显著性分数。

        6.介绍了一种新的数据不确定算法迭代突触流剪枝(SynFlow),它满足最大临界压缩,并实证证明该算法在12个不同的模型和数据集组合上实现了最先进的剪枝性能。

一、层崩溃:初始化剪枝的关键障碍

        初始化剪枝算法由两个步骤定义。第一步根据某种度量对网络参数进行评分,第二步根据评分对参数进行屏蔽(删除或保留参数)。最近的工作已经确定了现有的使用全局掩蔽的剪枝算法的一个关键失效模式——层塌缩。当算法删除单个权重层中的所有参数时,即使可修剪的参数仍然存在于网络的其他地方,也会发生层塌,这使得网络不可训练,精度突然下降。

        压缩比\left ( \rho \right )是原始网络中的参数数量除以修剪后剩余的参数数量。当压缩比\rho =10^{3}时,在修剪后只有千分之一的参数保留。最大压缩比\left ( \rho _{max} \right )是不会导致层崩溃的网络的最大可能压缩比。例如对于一个具有L层和N个参数的网络,\rho _{max}=N/L,这是与每层除一个参数外的所有参数修剪相关的压缩比,临界压缩\rho _{cr}是一个给定算法在不引起层塌的情况下所能达到的最大压缩比,特别的,算法的临界压缩始终是网络的最大压缩上界:\rho _{cr}\leq \rho _{max},这个不等式激发了以下公理,我们假设任何成功的算法都应该满足:

        公理最大临界压缩。应用于网络的剪枝算法的临界压缩应该始终等于该网络的最大压缩。

        这个公理意味着,如果存在另一组相同的基数,可以保持网络可训练,那么修剪算法永远不应该修剪一组导致层崩溃的参数,当然、任何剪枝算法都可以通过引入专门的分层剪枝率来满足这个公理,但是为了保留全局屏蔽的好处,我们制定了一种算法,迭代突触修剪(SynFlow),它通过构造满足这一特性。SynFlow是幅度修剪的自然延伸,它保留了从输入到输出的突触强度的总流,而不是单个突触强度本身。

二、突触显著性的守恒定律

        

        理解为什么某些评分指标会导致层塌,对于改进修剪算法的设计至关重要。

        假设一个层内基于梯度的平均分数与层大小成反比,通过构建基于流网络的理论框架来检验这一假设,我们首先定义了一类基于梯度的分数,证明了这些分数的守恒定律,然后用这个定律证明了我们的层大小与平均分数反比的假设完全成立。

        一类基于梯度的分数。突触显著性是一类得分指标,可以用哈达玛乘积表示:

                                                S\left ( \Theta \right )=\frac{\partial \mathbb{R}}{\partial \Theta }\odot \Theta

        \mathbb{R}是前馈网络参数为\Theta输出y的标量损失函数,当\mathbb{R}为训练损失\pounds时,得到的突触显著性度量值等价于-\frac{\partial \pounds }{\partial \Theta }\odot \Theta,这个度量和SNIP的\left | \frac{\partial \pounds }{\partial \Theta }\odot \Theta \right |,Grasp的-\left ( H\frac{\partial \pounds }{\partial \Theta } \right )\odot \Theta相似。这种评分指标的一般类别,虽然不包括,但暴露了用于修剪的基于梯度的评分的关键属性。

        突触显著性的守恒。所有的突触显著性指标都尊重两个惊人的守恒定律,在任何初始化和训练步骤中都成立。

        定理1.突触显著性的神经元守恒

                对于一个连续齐次激活函数的的前馈神经网络,\phi \left ( x \right )= {\phi}'\left ( x \right )x,传入参数(S^{in}=\left \langle \frac{\partial R}{\partial \Theta ^{in}},\Theta ^{in} \right \rangle)(包括偏置)到隐藏神经元的突触显著性之和等于来自隐藏神经元的传出参数\left ( S^{out}=\left \langle \frac{\partial R}{\partial \Theta ^{out}},\Theta ^{out} \right \rangle \right )的突触显著性之和。

        定理2.突触显著性的网络守恒

                在前馈神经网络中,具有齐次激活函数的输入神经元x和输出神经元y之间的任意一组参数的突触显著性之和相等\left \langle \frac{\partial R}{\partial x},x \right \rangle=\left \langle \frac{\partial R}{\partial y},y \right \rangle

当考虑一个带有偏差的简单前馈网络时,这些守恒定律暗示了非平凡关系:\left \langle \frac{\partial R}{\partial W^{[l]}},W^{l} \right \rangle+\sum _{i=1}^{L}\left \langle \frac{\partial R}{\partial b[i]},b^{[i]} \right \rangle=\left \langle \frac{\partial R}{\partial y},y \right \rangle

保存和单发修剪导致层塌。突触显著性的守恒定律为我们提供了理论工具来验证我们之前的假设,即层大小和平均层分数成反比是导致基于梯度的修剪方法层塌的根本原因。考虑一个简单的,完全连接的神经网络的一层中的参数集。这个集合可以准确地将输入神经元和输出神经元分开。因此,通过突触显著性的网络守恒,该集合的总分对于所有层都是固定的,这意味着平均值与层大小成反比,通过计算模型每一层的总分,我们可以对现有剪枝方法在规模上这种关系进行经验评估,虽然这种反向关系对于突触显著性是准确的,但其他密切相关的基于梯度的分数,如在SNIP和Grasp中使用的分数,也尊重这种关系。这验证了经验观察,对于给定的压缩比,基于梯度的修剪方法将不成比例地修剪最大的层,因此,如果压缩比足够大,并且只评估一次修剪分数,那么基于梯度的修剪方法将完全修剪最大的层,导致层塌。

三、量级修剪通过守恒和迭代避免层塌

        迭代剪枝(Iterative Magnitude Pruning,IMP)是最近提出的一种剪枝方法,该方法似乎完全避免了层塌这个问题,该算法遵循三个简单步骤,首先训练一个网络,其次修剪最小值的参数,第三将未修剪的参数重置为初始化,重复直到所需的压缩比。虽然简单而强大,但IMP是不切实际的,因为它涉及多次训练网络,基本上违背了构建稀疏初始化的目的。

        如果没有足够的修剪迭代,IMP将遭受层塌,仅凭修剪迭代的次数并不能解释IMP在避免层崩溃方面的成功,请注意,如果IMP在每个修剪周期中都没有训练网络,那么,无论修剪迭代的次数是多少,它都相当于单次修剪。因此,在训练过程中,参数的大小必须发生一些非常关键的事情,当与足够的修剪迭代相结合时,允许IMP避免层崩溃,我们假设,梯度下降训练有效地鼓励分数遵守一个近似的分层守恒定律,当与足够的修剪迭代相结合时,允许IMP避免层塌。

梯度下降鼓励保存。为了更好地理解IMP算法在训练过程中的动态,我们将考虑一个在算法上等价于量级分数的可微分数S\left ( \Theta _{i} \right )=\frac{1}{2}\Theta _{i}^{2},考虑在损失函数L上使用无穷小步长(即梯度流)进行梯度下降的整个训练中的这些分数。在这种情况下,参数的temporal导数等于\frac{d\Theta }{dt}=-\frac{\partial \pounds }{\partial \Theta },因此分数的temporal导数是\frac{\mathrm{d} }{\mathrm{d} t}\frac{1}{2}\Theta _{i}^{2}=\frac{\mathrm{d\Theta _{i}} }{\mathrm{d} t}\odot \Theta _{i}=-\frac{\partial \pounds }{\partial \Theta _{i}}\odot \Theta _{i},,令人惊讶的是,这是突触显著性的一种形式,因此适用于神经元和层的守恒定律,特别地,这意味着对于一个简单的全连接网络的任意两层l和k有\frac{\mathrm{d} }{\mathrm{d} t}\left \| W^{[l]} \right \|_{F}^{2}=\frac{\mathrm{d} }{\mathrm{d} t}\left \| W^{[k]} \right \|_{F}^{2},之前已经注意到这种不变性是一种隐式正则化形式,并用于解释经过训练的多层模型可以具有类似的分层幅度的经验现象,在修剪的背景下,这种现象意味着梯度下降训练,在足够小的学习率下,鼓励平方量级分数收敛到近似的分层守恒。

守恒和迭代避免了层崩溃。通过在最大的层中分配相对于较小层的参数的较低分数的参数,仅守恒就会导致层塌,但是,如果将守恒与迭代修剪相结合,那么当最大的一层被修剪,变得更小的时,在后续的迭代中,该层的其余参数将被赋予更高的相对分数。有了足够的迭代,守恒与迭代相结合就形成了一种自平衡的修建策略,允许IMP避免层塌,这种关于守恒和迭代的重要性的见解更广泛地适用于具有精确或近似守恒性质的其他算法。

四、一种满足最大临界压缩的数据不可知算法

        在上一节中,我们确定了IMP能够避免层塌的两个关键因素:(1)修剪分数的近似层守恒。(2)这些分数的迭代重新评估。虽然这些属性允许IMP算法识别高性能和高度稀疏,可训练的神经网络,但它需要不切实际的计算量来获得他们。

        因此,我们的目标是构建一个更有效的剪枝算法,同时仍然继承IMP成功的关键方面,那么,什么是剪枝算法的基本成分,以避免层塌,并可证明实现最大临界压缩?

定理3.迭代、积极、保守评分达到最大临界压缩。如果一个具有全局屏蔽的修剪算法,分配了尊重分层守恒的正分数,如果修剪尺寸,在任何迭代中修剪的参数的总分,严格小于临界尺寸,整个层的总分,只要可能,那么该算法满足最大临界压缩公理。

迭代突触流修剪(SynFlow)算法。定理3直接激发了新修剪算法SynFlow的设计,可以证明它达到了最大临界压缩。首先,迭代评分的必要性阻碍了设计批量数据反向传播的算法,相反,激励了高效的数据独立评分过程的开发。第二,积极性和保守型激发了损失函数的构建,从而产生积极的突触显著性得分。我们将这些观点结合起来,引入了一个新的损失函数(其中\mathbb{I}是全一向量,\left | \Theta ^{[l]} \right |是第l层参数的元素绝对值)

                                \mathbb{R}_{SF}=\mathbb{I}^{T}(\prod _{l=1}^{L}\left | \Theta ^{[l]} \right |)\mathbb{I}

这就产生了积极的突触显著性分数\left ( \frac{\partial \mathbb{R}_{SF}}{\partial \Theta }\odot \Theta \right ),我们称之为突触流,对于一个简单的全连接网络,即\left ( f(x)=W^{\left [ N \right ]}...W^{[1]}x \right ),我们可以将参数w_{ij}^{[l]}的Synaptic Flow评分因式为:

                        S_{SF}(w_{ij}^{[l]})=[\mathbb{I}^{T}\prod _{k=l+1}^{N}\left | W^{[k]} \right |]_{i}\left | w_{ij}^{[l]} \right |[\prod _{k=1}^{l-1}\left | W^{[k]} \right |\mathbb{I}]_{j}

从这个角度来看,突触流评分是量级评分\left ( |w_{ij}^{l}| \right )的泛化,其中评分考虑了每个参数中流动的突触强度的乘积,考虑了参数的层间相互作用。事实上,这个更广义的幅度是在之前的文献中已经作为路径范数进行了讨论,R_{SF}中的突触流损失是网络的l1路径范数,参数的突触流分数是通过该参数的范数的一部分,我们在下面伪代码中总结的迭代突触修剪(SynFlow)算法中使用突触流评分。

         给定一个网络f(x;\Theta _{0})和指定的压缩比\rho,SynFlow算法只需要一个额外的超参数,即修剪迭代次数n

五、总结

        在本文中,我们开发了一个统一的理论框架,解释了为什么现有的剪枝算法在初始化时会出现层塌,我们应用我们的框架来阐明迭代量级修剪如何克服层塌,以在初始化时识别中奖彩票。在此基础上,我们设计了一种新的数据不可知剪枝算法SynFlow,该算法可以避免层塌并达到最大临界压缩,最后,我们从经验上证实,我们的SynFlow算法在12个不同的模型和数据集组合中始终匹配或优于现有算法、尽管我们的算法是数据不可知的,并且不需要预先训练,这项工作有希望的未来方向是:(1).探索满足最大临界压缩的潜在剪枝算法的更大空间。(2)利用SynFlow作为计算适当的每层压缩比的有效方法,以结合现有的评分指标。(3).将剪枝作为神经网络初始化方案的一部分。总的来说,我们的数据不可知修剪算法挑战了现有的范式,即在初始化时必须使用数据来量化神经网络的哪些突触是重要的。

        

                

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论文笔记 Pruning neural networks without any databy iteratively conserving synaptic flow 的相关文章

随机推荐

  • Jmeter性能测试(26)---生成HTML性能测试报告

    性能测试工具Jmeter由于其体积小 使用方便 学习成本低等原因 xff0c 在现在的性能测试过程中 xff0c 使用率越来越高 xff0c 但其本身也有一定的缺点 xff0c 比如提供的测试结果可视化做的很一般 不过从3 0版本开始 xf
  • 【mcuclub】时钟模块DS1302

    一 实物图 二 原理图 编号名称功能1VCC2双供电配置中的主电源供应引脚 DS1302工作于 VCC1和VCC2中较大者 当VCC2比VCC1高0 2V 时 xff0c VCC2 给 DS1302供电 当VCC1比VCC2高时 VCC1给
  • 【mcuclub】定时器/计数器

    一 简介 定时器实际上就是Soc当中的一个内部外设 定时器常与计数器扯到一起 xff0c 计数器也是Soc当中的一个内部外设 xff0c 计数器顾名思义是用来计数的 xff0c 就和我们的秒表一样 xff0c 秒表实际上就是一个计数器 xf
  • 基于A*算法自动引导车的路径规划(Matlab代码实现)

    x1f4a5 x1f4a5 x1f49e x1f49e 欢迎来到本博客 x1f4a5 x1f4a5 x1f3c6 博主优势 xff1a x1f31e x1f31e x1f31e 博客内容尽量做到思维缜密 xff0c 逻辑清晰 xff0c 为
  • 【文章转载】使用常见Matlab工具箱调节pid参数(飞机垂直速度控制系统设计)

    申明 xff1a 这是一篇转载文章 xff0c 本人害怕原链接失效 xff0c 故转载 xff0c 没有商用 xff0c 作者也可也私我删除 使用常见Matlab工具箱调节pid参数 小白的第一篇知乎文章 xff0c 如果有不准确的地方 x
  • 制作自己的ORBSLAM2数据集,并实现三维重建(代码自己写的)

    2 ORBSLAM2 测试自己拍摄的数据集 使用手机 摄像机等设备拍摄视频 xff0c 对应我们只能使用单目 Monocular 2 1对相机标定 首先我们要对相机进行标定 xff0c 使用 MATLAB 里面的标定工具包 标定好之 后创建
  • c++的好处

    1 更新迭代慢 xff0c 技术成熟的很高 xff0c 基本不会有太大的改动 xff0c 工作后学习压力小 2 C C 43 43 是系统编程层级唯一的一门高级语言 xff0c 速度快 xff0c 效率高 不用担心今后会被取代 3 C C
  • lacp协议

    LACP xff08 Link Aggregation Control Protocol xff0c 链路聚合控制协议 xff09 将多条链路逻辑上模拟成一条链路 xff0c 以增加网络带宽 xff08 通常网络多条链路情况下 xff0c
  • Windows 10 下安装Linux

    使用Hype V 快速安装 选择的Ubuntu 22 04 LTS 安装一切正常 xff0c 登录提示 登录以后提示connecting to sesman ip 127 0 0 1 port 3350 关闭查看菜单的 增强模式 xff0c
  • mvvm是什么?

    1 总结 一句话总结 xff1a vm层 xff08 视图模型层 xff09 通过接口从后台m层 xff08 model层 xff09 请求数据 xff0c vm层继而和v view层 实现数据的双向绑定 2 mvc和mvvm的关系 xff
  • 汉诺塔问题(C语言实现)

    前言 一 汉诺塔圆盘的移动步数 二 汉诺塔圆盘移动步骤 总结 前言 汉诺塔 xff08 Tower of Hanoi xff09 xff0c 又称河内塔 xff0c 是一个源于印度古老传说的益智玩具 大梵天创造世界的时候做了三根金刚石柱子
  • ubuntu 16.04版本安装docker以及创建docker容器

    一 简介 Docker 是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中 xff0c 然后发布到任何流行的 Linux 机器上 xff0c 也可以实现虚拟化 容器是完全使用沙箱机制 xff0c
  • 字符串操作函数strstr

    目录 一 strstr函数介绍 二 strstr函数的模拟 三 代码实现 一 strstr函数介绍 在编写程序的过程中 xff0c 我们不可避免地会调用字符串操作函数 xff0c 今天要介绍的字符串操作函数是strstr函数 strstr函
  • 【无标题】前端工程师面试题手册-有点长但是很有用

    不是原作者 想想要获取更多前端开发相关学习资料 xff0c 请加微信1124692领取 前端工程师面试题手册 目录 1 前端基础 11 1 1 HTTP HTML 浏览器
  • 超详细的VMware虚拟机安装Linux图文教程保姆级

    目录 一 下载VMware 二 安装VMware 三 下载Linux 四 安装Linux 五 设置本地机与虚拟机之间的数据传输 xff08 复制 粘贴等操作 xff09 一 下载VMware VMware官网有两个版本 xff0c 分别是
  • 仿牛客技术博客项目常见问题及解答(三)

    书接上回 xff1a 仿牛客技术博客项目常见问题及解答 xff08 二 xff09 李孛欢的博客 CSDN博客 13 项目中的kafka是怎么用的 xff1f kafka入门 Apache Kafka是一个分布式流平台 一个分布式的流平台应
  • [Java] 继承 和 多态(学习总结)

    目录 继承 一 继承主要表示概念层上的 is a 的关系 二 什么是继承 三 语法 四 继承方式 xff1a 五 访问权限 六 构造方法 七 父类的属性和方法的访问 八 重载和重写 xff08 前提是子类是有权限的 xff09 九 执行顺序
  • 第七章-X86汇编语言从实模式到保护模式

    第七章 比高斯更快的计算 7 3 显示字符串 39 1 43 2 43 3 43 43 100 61 39 字符串编译阶段 xff0c 编译器将把它们拆开 xff0c 形成一个个单独的字节jump near start跳过没有指令的数据区1
  • 【java】杂七杂八的基础知识

    1 当用javac命令编译Java源程序 xff08 java文件 xff09 时 xff0c 必须写出该源文件的完整文件名 xff0c 包括扩展名 java 2 当用java exe命令运行一个字节码 class 文件时 xff0c 不必
  • 论文笔记 Pruning neural networks without any databy iteratively conserving synaptic flow

    摘要 修剪神经网络的参数可以在训练和测试期间节省时间 内存和能量 最近的研究发现 xff0c 通过一系列昂贵的训练和修剪周期 xff0c 初始化时存在中奖彩票或稀疏可训练的子网络 这就提出一个基本问题 xff1a 我们能否在初始化时识别出高