论文阅读笔记:Towards Higher Ranks via Adversarial Weight Pruning

论文阅读笔记:Towards Higher Ranks via Adversarial Weight Pruning

  • 1 背景
  • 2 创新点
  • 3 方法
  • 4 模块
    • 4.1 问题表述
    • 4.2 分析高稀疏度下的权重剪枝
    • 4.3 通过SVD进行低秩逼近
    • 4.4 保持秩的对抗优化
    • 4.5 渐进式剪枝框架
  • 5 效果
    • 5.1 和SOTA方法对比
    • 5.2 消融实验
    • 5.3 开销分析
  • 6 结论

论文:https://arxiv.org/pdf/2311.17493

代码:https://github.com/huawei-noah/Efficient-Computing/tree/master/Pruning/RPG

1 背景

虽然结构化剪枝可以带来较大的运行时加速收益,但其性能远低于非结构化剪枝。

在高度稀疏的情况下,作者观察到非结构化剪枝会退化成结构化剪枝。当权重具有较大比例的零时,极有可能出现一个结构化的模式,其中整个通道或滤波器几乎被完全剪枝。因此,现有的权重剪枝方法在高稀疏度下会遇到性能急剧下降的情况。

作者通过比较两种剪枝方法受到启发,提出在权重剪枝中减少结构模式。结构化剪枝实际上是深度卷积网络中权重秩的降低,因此可以采用秩作为平衡非结构化稀疏权重“结构化”程度的指标:如果一个系数权重的秩较低,则认为它是高度结构化的。为了避免非结构化剪枝过于结构化,希望在剪枝时保持高稀疏度下的权重秩。

2 创新点

基于秩改进的目标,作者提出了一种基于对抗秩的剪枝方法(Rank-based PruninG, RPG)。

3 方法

在这里插入图片描述

首先,通过最小化近似误差来找到权重的低秩近似。通过奇异值分解找到最佳低秩逼近。其次,为了提高权重秩,最大化权重与其低秩对应的权重之间的距离来提高权重秩。这种基于对抗秩的优化目标将稀疏权重引导到一个高秩拓扑上。所提出的方法以逐步修剪的方式进行,以稳定训练过程中的秩变化。通过在图像分类和下游任务上的大量实验评估了所提出的RPG方法的优势,图1表明,与基线相比,本文方法获得了矩阵秩优势。
在这里插入图片描述

4 模块

4.1 问题表述

在传统的有监督神经网络学习方面,给定一个目标损失函数 L L L ,神经网络权重 W W W 和 输入输出对 X = { x i } i = 1 , … n , Y = { y i } i = 1 , … n X=\{x_i\}_{i=1,…n},Y=\{y_i\}_{i=1,…n} X={xi}i=1,n,Y={yi}i=1,n,神经网络权重 W W W 训练过程可表述为:
在这里插入图片描述

权重剪枝限制了权重 W W W 中非零权重的总数,或者在数学意义上,权重剪枝对神经网络施加 l 0 l_0 l0 范数约束。给定稀疏度预算,约束描述为:
在这里插入图片描述

一种常见的做法就是用权重张量 W W W 和二值化掩膜 M M M 计算点积重参化权重 W W W。二值化掩码 M M M 具有与 W W W 相同的形状,M中的每个元素代表其在 W W W 中的对应参数是否被剪枝。在重参化后,权重剪枝问题被形式化为:
在这里插入图片描述

在非结构化剪枝的高稀疏度下,稀疏网络的秩可能会大幅降低。

4.2 分析高稀疏度下的权重剪枝

非结构化剪枝和结构化剪枝是两种主要的剪枝方法。在非结构化剪枝实践中,CNN的权重张量以细粒度的方式被剪枝:每个孤立的权重参数可以在网络内部关闭(即设为零),但整个权重张量结构保持不变。相比之下,结构化剪枝侧重于过滤器的剪枝:过滤器作为剪枝过程中最小的可剪枝单元被截断。通过比较相同稀疏度预算下的两种剪枝范式,说明在相同的剪枝预算下,非结构化剪枝比结构化剪枝的效果要好得多。

这一现象可以从矩阵秩的角度进行解释。实际上,结构化剪枝是对权重矩阵的直接降秩,即过滤器剪枝本质上是低秩的权重剪枝。矩阵的秩表示矩阵所包含信息量的上界。一个强大的网络应该具有丰富的信息,作者希望稀疏网络的特征具有较高的秩。特征的秩与稀疏权重矩阵的秩密切相关,因为式(2.4)描述了矩阵乘法中秩的关系:
在这里插入图片描述从式中可以看出,当直接影响权重 W W W 的秩进行过滤器剪枝时,输出特征的秩也会降低,从而导致信息丰富度急剧损失。另一方面,非结构化剪枝摆脱了过滤器剪枝的结构约束,从而保留了更多的信息量。

当稀疏度较高时,非结构化剪枝部分退化为结构化剪枝。当权重被大比例的填充零时,形成“准结构化”的稀疏权重模式。图1中矩阵秩的基线评估说明了这一问题。因此,现有的权重剪枝方法在高稀疏度下通常会遇到性能急剧下降的情况。受两类剪枝性质的启发,作者提出在非结构化剪枝中减少结构化模式,从而在高稀疏度下保持权重排序。

4.3 通过SVD进行低秩逼近

既然权重的秩在权重剪枝中很重要,那么就需要一种方法来计算深度神经网络中的秩。由于权重值总是离散的,作为备选解,作者收敛到一个近似的秩,而不是计算一个精确的秩。因此,定义近似秩如下:

定义1(矩阵的 δ \delta δ 秩) : 给定一个矩阵 W W W 和一个小的误差容忍度 δ > 0 \delta>0 δ>0 W W W δ \delta δ 秩定义为最小的正整数 k k k,使得存在一个 k k k 秩矩阵,它到 W W W l 2 l_2 l2 距离小于 δ \delta δ

在之前的工作中,秩是通过奇异值分解计算奇异值来评估的。作者利用SVD计算定义1中的 δ \delta δ 秩。首先,说明SVD可以产生最佳的低秩近似:

定理1(最佳低秩近似):假设 W W W 通过SVD分解,并令 W = ∑ i = 1 r σ i u i v i T W=\sum_{i=1}^r\sigma_iu_iv_i^T W=i=1rσiuiviT,其中奇异值 { σ i } \{\sigma_i\} {σi} 按降序排序。给定整数 k < r k<r k<r W W W 的最佳 k k k 秩逼近,即与 W W W 有最小 l 2 l_2 l2 距离的 k k k 秩矩阵为:
在这里插入图片描述

由于SVD可以得到更好的低秩逼近,可以利用这个性质来求解定义1中的 δ \delta δ 秩。给定权重矩阵 W W W,寻找最小的 k k k 使得最佳 k k k 秩逼近 W ~ \widetilde{W} W l 2 l_2 l2 逼近误差小于误差容忍度 δ \delta δ。附录有给出证明。
在这里插入图片描述

4.4 保持秩的对抗优化

与低秩逼近不同,高秩矩阵是低秩矩阵难以逼近的。只要 W W W 保持它与最佳低秩逼近的距离,就可以增加它的秩。因此作者设计了一种对抗机制,增加 W W W 被低秩矩阵逼近的难度,从而在剪枝时提高 W W W 的矩阵秩。首先,通过奇异值分解生成低秩 k k k 的最佳低秩近似矩阵 W ~ \widetilde{W} W ,以最小化 W ~ \widetilde{W} W W W W 的距离。然后,对 W W W 进行优化,增加 W W W W ~ \widetilde{W} W 的距离。这个过程可以理解为 W W W W ~ \widetilde{W} W 之间的对抗,当低秩的 W ~ \widetilde{W} W 试图拟合 W W W 时, W W W 被优化以保持自身原理 W ~ \widetilde{W} W 。从数学上讲,这个对抗可以被表述为一个 min-max 问题。

但不幸的是,这个问题可能面临着无法收敛的风险。因为当 W ~ \widetilde{W} W 固定时, W → ∞ W→∞ W最佳。为了在优化过程中解决这个问题,作者将 W W W 限制在一个欧式范数球内。换句话说,作者将 W ∣ ∣ W ∣ ∣ F \frac{W}{||W||_F} ∣∣WFW 代替 W W W 代入问题。这里使用 l 2 l_2 l2 标准化的原因是:1. W W W 是有界的,而不是增长达无穷大的;2.在优化 min-max 问题时,如果对 W W W 进行 l 2 l_2 l2 归一化, W W W 的秩可以增加(定理2中有证明)。3.对权重进行 l 2 l_2 l2 归一化等价于对其奇异值进行 l 2 l_2 l2 归一化,在给定固定误差容忍度的情况下,根据定义1中秩的定义,为秩提供了比较公平的准则。

在介绍这个 min-max 问题之前,引入几个符号: ∣ ∣ ⋅ ∣ ∣ F ||·||_F ∣∣F 是矩阵的2范数。 I I I 是恒等矩阵, W ‾ : = W ∣ ∣ W ∣ ∣ \overline{W} := \frac{W}{||W||} W:=∣∣W∣∣W l 2 l_2 l2 标准化权重矩阵 W W W U , Σ , V U, \Sigma, V U,Σ,V 为 SVD 分解 W W W 得到的矩阵,其中 U = { u 1 , u 2 , … } U=\{u_1,u_2,…\} U={u1,u2,} V = { v 1 , v 2 , … } V=\{v_1,v_2,…\} V={v1,v2,} 为正交基, Σ \Sigma Σ 为对角矩阵,其中奇异值 { σ 1 , σ 2 , … } \{\sigma_1,\sigma_2,…\} {σ1,σ2,} 在对角线上按降序排列。算子 T r u n ( U Σ V T ) = ∑ i = 1 k σ i u i v i T Trun(U\Sigma V^T)=\sum_{i=1}^k\sigma_iu_iv_i^T Trun(UΣVT)=i=1kσiuiviT 表示 k k k 阶截断SVD,或 W W W k k k 阶最佳逼近。min-max问题形式化的表示如下:
在这里插入图片描述
优化目标被定义为对抗秩损失:
在这里插入图片描述

在这个情况下,作者提出如下定理,即对抗秩损失可以引导权重 W W W 向更高阶的方向移动:

定理2(对抗秩损失的有效性): 给定方程( 2.6 )中定义的对抗秩损失,如果通过梯度下降来优化秩损失中的W,那么W的秩将会增加。(附录有给出证明)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

利用提出对抗秩损失,优化目标包括两个方面:1. 针对某个任务(如分类,检测等)减少损失,已提高稀疏网络的性能;2.通过减少秩损失来获得更高的权重秩。给定复合超参 λ \lambda λ, Rank-based PruninG(RPG)的优化目标 L L L 可以定义为:
在这里插入图片描述

4.5 渐进式剪枝框架

之前的工作已经提出了各种剪枝框架,作者认为渐进式剪枝(Gradual Pruning,GP)可以再适中的训练预算下达到更好的性能,所以将其作为剪枝框架。GP在每次训练过程中修剪掉一小部分权重,试图通过迭代的“剪枝和训练”过程来保持稀疏的网络性能。

本文的PRG方法过程如下:没经过 Δ T \Delta T ΔT 就执行更新二进制掩码M的剪枝-生成过程,使得经过掩码更新后,整个网络在当前迭代时达到目标稀疏度。随着训练的进行,目标稀疏度会逐渐增加,这与GP相同。其次,对所有参数进行基于重要性的全局排序(代码里使用L1范数),并执行剪枝。最后,基于梯度进行参数生成。对于其他训练步骤(指出了剪枝阶段的finetune阶段),掩码M保持不变,对活跃的权重值进行更新。具体见算法1。
在这里插入图片描述

关于基于梯度进行参数生长代码如下:

score_grow = self.backward_hook_objects[l].dense_grad
score_grow = torch.abs(score_grow)
score_grow = score_grow.view(-1)
# mask1是二值化掩膜,形状和M一样,权重的L1范数前α比例的位置为1,其他位置为0
score_grow_lifted = torch.where(mask1 == 1,   torch.ones_like(mask1) * (torch.min(score_grow) - 1),score_grow)
# mask2是二值化掩膜,形状和M一样,score_grow_lifted前α比例的位置为1,其他位置为0
mask_combined = torch.reshape(mask1 + mask2, current_mask.shape).bool()

5 效果

5.1 和SOTA方法对比

在InageNet上,不同稀疏度剪枝下的效果如表2。
在这里插入图片描述

在ImageNet上的计算量和准确率如图3。
在这里插入图片描述

Deep Sparse是最近提出的一种CPU上的稀疏加速框架。将ResNet50在Deep Sparse上进行时间稀疏。在CPU上的准确率和耗时如表3。
在这里插入图片描述

对MaskRCN进行剪枝后在COCO val2017数据集上的效果如表4。
在这里插入图片描述

对基于transformer的模型,本文的方法虽然没有专门为注意力机制设计,但在DeiT-S上也取得了很好地效果,如表5。

在这里插入图片描述

5.2 消融实验

关于超参 λ \lambda λ 的消融实验,如图4。

在这里插入图片描述

5.3 开销分析

RPG涉及昂贵的SVD计算。然而,作者进行了实验,并说明在时间和FLOP方面,SVD在剪枝过程中所占的成本开销非常小。如表6所示,SVD计算的总体时间和FLOPs仅占整个RPG剪枝成本的< 2 %。作者还比较了RPG与其他剪枝方法的FLOPs开销。从表7可以观察到,与基线相比,本文方法是最具有成本效益的。最重要的是,秩损失计算带来的额外开销并不是一个值得关注的问题。

在这里插入图片描述
在这里插入图片描述

6 结论

非结构化剪枝对GPU设备的加速效果非常有限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/353035.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4418 android4.4 + 6818 android5.1 移植gps

网上已经有的移植的资料 目前 3399 的板子上 对已有的可运行的GPS 进行测试。 我这里的 rk3399 的板卡 , Android7 Android8 都是 可以运行 GPS 应用程序的。 使用的是 ttyS4 的节点。 问题: 我发现, 开机就删掉 ttyS4 节点,也是可以 打开应用的。并且可以正常运行。不…

归并排序与计数排序

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多数据结构知识 1.归并排序 1.递归实现归并排序 归并排序 //归并排序public static void mergeSort(int[] array) {mergeSortFun(array,0,array.length-1); r…

现在市面上哪个大大数据信用查询平台比较好用?

在当今信息化和数字化的时代&#xff0c;信用查询平台的重要性愈发突出&#xff0c;特别是在个人贷款、信用卡申请和金融服务领域。选择一个优秀的大数据信用查询平台&#xff0c;不仅可以帮助用户全面了解自己的信用状况&#xff0c;还能提供针对性的解读和建议&#xff0c;帮…

文件操作(2)(C语言版)

文件的随机读写&#xff1a; fseek函数&#xff1a; 前面讲解了顺序读写的相关函数&#xff0c;这里介绍一些可以“指哪写哪的函数” 有三个参数&#xff1a; 1、文件的地址 2、相对于第三个参数origin偏移的位置 3、起始位置&#xff08;有三种&#xff09; 第一种&#xff…

重生奇迹MU召唤术师简介

出生地&#xff1a;幻术园 性 别&#xff1a;女 擅 长&#xff1a;召唤幻兽、辅助魔法&攻击魔法 转 职&#xff1a;召唤巫师&#xff08;3转&#xff09; 介 绍&#xff1a;从古代开始流传下来的高贵的血缘&#xff0c;为了种族纯正血缘的延续及特殊使用咒术的天赋&…

基于YOLOv10深度学习的高密度人脸智能检测与统计系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

【MySQL】索引(上)

https://www.wolai.com/curry00/fzTPy3kSsMDEgEcdvo4G5w https://www.bilibili.com/video/BV1Kr4y1i7ru/?p69 https://jimhackking.github.io/%E8%BF%90%E7%BB%B4/MySQL%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/#%E7%B4%A2%E5%BC%95 索引是一种用于快速查询和检索数据的数据结构…

VMware虚拟机卡顿(虚拟机卡死)(调整所有虚拟机内存使其适应预留的主机 RAM (F)、默认进程优先级、不允许使用内存页面修整功能(M))

文章目录 设置编辑——首选项——内存——额外内存——调整所有虚拟机内存使其适应预留的主机 RAM (F)&#xff08;我把这个勾上了&#xff09;编辑——首选项——优先级——默认进程优先级虚拟机——设置——选项——高级——不允许使用内存页面修整功能(M) 参考文章&#xff…

Tuple 元组

文章目录 一、什么是元组 &#xff1f;二、元组的具体操作2.1 创建元组2.1.1 tuple() 创建元组函数和 list() 创建列表函数总结 2.2 元组的元素访问操作2.3 元组的元素计数操作2.4 zip 对象 一、什么是元组 &#xff1f; 列表属于可变序列,可以任意修改列表中的元素。 元组的…

(1)图像识别yolov5—安装教程

目录 1、安装YOLOv5: 2、下载预训练模型: 3、识别示例图片: 1、安装YOLOv5: 首先,你需要在你的计算机上下载 YOLOv5 的文件包,下载链接:https://github.com/ultralytics/yolov5。下载后对压缩文件进行解压。 (Linux命令行安装方式:git clone https://github.com/u…

Chromium源码阅读:深入理解Mojo框架的设计思想,并掌握其基本用法(1)

Mojo简介 Mojo 是一个运行时库的集合&#xff0c;提供与平台无关的通用 IPC 原语抽象、消息 IDL 格式以及具有针对多种目标语言的代码生成的绑定库&#xff0c;以便于跨任意进程间和进程内边界传递消息。 Mojo 分为清晰分离的层&#xff0c;子组件的基本层次结构如下&#xff…

全氟己酮自动灭火材料表现亮眼!手把手教你自动灭火毯的使用方法

灭火毯的使用方法是什么&#xff1f;很多朋友在购买灭火毯之前&#xff0c;都比较关心这个问题。在这里&#xff0c;我们可以把灭火毯分为两种。一种是传统灭火毯&#xff0c;还有一种是近年来兴起的高科技产品—全氟己酮自动灭火毯。这两种灭火毯的使用方法大有不同&#xff0…

游戏服务器研究一:bigworld 开源代码的编译与运行

1. 前言 bigworld 已经开源了它的代码&#xff0c;而我对于大世界的 scale 很感兴趣&#xff0c;所以就尝试把代码跑起来研究。但是&#xff0c;整个过程比我原先预想的复杂得多。 虽然能找到一些官方的帮助文档&#xff0c;但这些文档要么过旧&#xff0c;要么过于详尽&…

表面声波滤波器——设计方案(4)

设计步骤 设计声表面波滤波器&#xff0c;首先需要分析器件的指标要求&#xff0c;如中心频率、使用带宽、插入损耗等&#xff0c;结合产线工艺水平&#xff0c;选择合适的衬底材料和换能器材料。确认可以满足器件性能需求的换能器设计方案&#xff0c;然后通过软件仿真。对叉…

python基础语法 002 - 4 字符串

1 字符串 字符串&#xff1a;引号括起来的数据类型 # 双引号 a "yuze wang"# 单引号 a ’yuze wang‘# 三引号 a ’‘’yuze‘‘’ a """yuze"""注意&#xff1a;所有格式表示都是半角&#xff0c;全角会报错 1.1 引号表示 …

IMU应用于体操训练

考虑到在艺术体操训练与竞赛中艺术体操的训练与比赛中&#xff0c;地板项目导致的伤率最高&#xff0c;最近&#xff0c;一个来自澳大利亚的科研团队利用IMU评估运动员执行基础翻腾技巧训练时&#xff0c;他们上肢与下肢所承受的冲击负荷。 本次实验共有十四名艺术体操运动员参…

Profibus协议转Modbus协议网关模块帮助PLC实现智能激光设备通讯

一、前言 Profibus转Modbus网关&#xff08;XD-MDPB100&#xff09;是一种工业通信协议转换设备&#xff0c;用于实现Profibus协议与Modbus协议之间的转换。Profibus转Modbus网关在工业自动化系统中具有广泛的应用&#xff0c;它解决了不同协议设备之间的通信问题。本文将深入…

《Nest系列 - 2. Nest 代码生成器,让你告别base代码书写!!!》

紧接上文我们做一些核心梳理 核心梳理&#xff1a; /controllers目录&#xff1a;存放控制器文件&#xff0c;每个控制器对应一组路由和请求处理方法。控制器处理来自客户端的HTTP请求&#xff0c;并返回相应的响应。/modules目录&#xff1a;存放模块文件&#xff0c;每个模块…

学会这几点,轻松制作引人入胜的电子期刊

随着数字化时代的到来&#xff0c;电子期刊已经成为了信息传播的重要载体。它以方便快捷、形式多样、互动性强等特点&#xff0c;受到了广泛的欢迎。那么&#xff0c;如何制作一份引人入胜的电子期刊呢&#xff1f;下面就来为大家分享几点制作电子期刊的小技巧。 1.选择合适的制…

Linux实现: 客户端(cli01)通过TCP(或UDP)连接到聊天服务器(serv)进行聊天?(伪代码版本)

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…