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

news2024/11/26 6:21:15

论文阅读笔记: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.coloradmin.cn/o/1827343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

秋招突击——6/14——复习{(树形DP)树的最长路径,(单调队列优化DP)——最大子序和}——新作{四数之和}

文章目录 引言复习树形DP——树的最长路径实现代码答疑 单调队列优化DP——最大子序和个人实现思路参考思路分析实现代码 无重复最长字串思路分析实现代码 新作四数之和实现思路需要注意的问题 参考代码分析思路实现代码 总结 引言 今天好好看看树的最长的路径&#xff0c;自己…

《Deep learning practice》learning notes

学习笔记&#xff1a; 【公开课】旷视x北大《深度学习实践》&#xff08;28课时全&#xff09; R Talk | 旷视科技目标检测概述&#xff1a;Beyond RetinaNet and Mask R-CNN 文章目录 Lecture 1: Introduction to Computer Vision and Deep Learning&#xff08;孙剑&#x…

apt-get update和apt-get upgrade的区别

apt-get update apt-get update 命令用于更新本地软件包列表。具体来说&#xff0c;做了以下事情&#xff1a; ①从 /etc/apt/sources.list 文件和 /etc/apt/sources.list.d/ 目录下的所有文件中读取软件源配置。 ②连接到这些软件源&#xff0c;并下载最新的软件包列表。 ③将…

1832javaERP管理系统之车间计划管理Myeclipse开发mysql数据库servlet结构java编程计算机网页项目

一、源码特点 java erp管理系统之车间计划管理是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助采用了serlvet设计&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Mye…

欧洲杯赛况@20240615

点击标题下「蓝色微信名」可快速关注 欧洲杯首战&#xff0c;德国5:1狂胜苏格兰&#xff0c;大比分、红点套餐、超新星登场进球&#xff0c;好像这些能想到的元素都发挥了作用&#xff0c;作为东道主&#xff0c;聚集了天时地利人和&#xff0c;可以说是完美&#xff0c;这就是…

【python】Sklearn—Cluster

参考学习来自 10种聚类算法的完整python操作示例 文章目录 聚类数据集亲和力传播——AffinityPropagation聚合聚类——AgglomerationClusteringBIRCH——Birch&#xff08;✔&#xff09;DBSCAN——DBSCANK均值——KMeansMini-Batch K-均值——MiniBatchKMeans均值漂移聚类——…

21. 第21章 算法分析

21. 算法分析 这个附录选自OReilly Media出版的Alen B.Downey的Think Complexity(2012)一书. 当你读完本书之后, 可能会像继续读读那本书.算法分析是计算机科学的一个分支, 研究算法的性能, 尤其是他们的运行时间和空间需求. 参见http://en.wikipedia.org/wiki/Analysis_of_al…

Mac M3 Pro安装Hadoop-3.3.6

1、下载Hadoop安装包 可以到官方网站下载&#xff0c;也可以使用网盘下载 官网下载地址&#xff1a;Hadoop官网下载地址 网盘地址&#xff1a;https://pan.baidu.com/s/1p4BXq2mvby2B76lmpiEjnA?pwdr62r提取码: r62r 2、解压并添加环境变量 # 将安装包移动到指定目录 mv …

回归预测 | Matlab实现GWO-ESN基于灰狼算法优化回声状态网络的多输入单输出回归预测

回归预测 | Matlab实现GWO-ESN基于灰狼算法优化回声状态网络的多输入单输出回归预测 目录 回归预测 | Matlab实现GWO-ESN基于灰狼算法优化回声状态网络的多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现GWO-ESN基于灰狼算法优化回声状态…

学习前端第一关

作者&#xff1a;周棋洛 文章目录 前言超文本标记语言&#xff1f;编辑器推荐手刃一个网页&#xff0c;Hello World&#xff01;网页骨架讲解标签学习HTML标题HTML段落HTML换行HTML居中HTML水平线HTML格式化HTML注释HTML链接 前言 网站并不是多么复杂的技术&#xff0c;今天这…

leetcode LRU 缓存

leetcode: LRU 缓存 LRU 全称为 Least Recently Used&#xff0c;最近最少使用&#xff0c;常常用于缓存机制&#xff0c;比如 cpu 的 cache 缓存&#xff0c;使用了 LRU 算法。LRU 用于缓存机制时&#xff0c;关键的是当缓存满的时候有新数据需要加载到缓存的&#xff0c;这个…

HTML5的未来:掌握最新技术,打造炫酷网页体验

引言 随着互联网技术的飞速发展&#xff0c;HTML5已经成为构建现代网页和应用的核心技术之一。HTML5不仅提供了丰富的语义化标签&#xff0c;还引入了多项前沿技术&#xff0c;使得网页体验更加丰富多彩。本文将探讨HTML5的最新技术&#xff0c;并结合行业实践&#xff0c;提供…

智能体(Agent)实战——从gpts到auto gen

一.GPTs 智能体以大模型作为大脑&#xff0c;同时配备技能&#xff0c;使其能够完成具体的任务。同时&#xff0c;为了应用于垂直领域&#xff0c;我们需要为大模型定义一个角色&#xff0c;并构建知识库。最后&#xff0c;定义完整的流程&#xff0c;使其完成整个任务。以组会…

GenICam标准(五)

系列文章目录 GenICam标准&#xff08;一&#xff09; GenICam标准&#xff08;二&#xff09; GenICam标准&#xff08;三&#xff09; GenICam标准&#xff08;四&#xff09; GenICam标准&#xff08;五&#xff09; GenICam标准&#xff08;六&#xff09; 文章目录 系列文…

什么是浏览器指纹

在数字互联网时代&#xff0c;我们的在线活动几乎都会留下痕迹。其中&#xff0c;浏览器指纹就像我们的数字身份证&#xff0c;让网站能够识别和追踪用户。本文将详细介绍浏览器指纹是什么&#xff0c;它如何工作。 一、什么是浏览器指纹 浏览器指纹&#xff08;Browser Fing…

【odoo】odoo.conf文件配置

概要 odoo.conf 文件是 Odoo 服务器的配置文件&#xff0c;它用于定义和管理 Odoo 运行时的各种参数。这个文件包含了许多配置选项&#xff0c;可以帮助管理员根据特定的需求和环境来调整 Odoo 服务器的行为。 主要功能 数据库连接设置&#xff1a;定义 Odoo 连接到 PostgreSQL…

vue项目问题汇总

1.el-select&#xff1a; 下拉框显示到了top:-2183px , 添加属性 :popper-append-to-body"false" 2. el-upload: 选过的文件在使用过后记得清空&#xff0c;因为如果有limit1的时候&#xff0c;没有清空会导致不触发onchange 使用自定义上传方法http-request的时…

C++ 47 之 函数调用运算符重载

#include <iostream> #include <string> using namespace std;class MyPrint{ public:// 重载小括号() 重载谁operator后就紧跟谁的符号void operator()(string txt){cout << txt << endl;} };class MyAdd{ public:int operator()(int a, int b){retur…

Android 断点续传实现原理

下载原理 在介绍断点续传之前&#xff0c;我们先说说下载的原理。代码示例用 OkHttp 作为示例。 下载核心思路是把 responseBody 写入文件&#xff0c;核心代码如下&#xff1a; 但是这种做法有个明显的问题&#xff0c;假如手机在下载文件的时候下载了80%&#xff0c;某些原…

[大模型]XVERSE-7B-chat langchain 接入

XVERSE-7B-Chat为XVERSE-7B模型对齐后的版本。 XVERSE-7B 是由深圳元象科技自主研发的支持多语言的大语言模型&#xff08;Large Language Model&#xff09;&#xff0c;参数规模为 70 亿&#xff0c;主要特点如下&#xff1a; 模型结构&#xff1a;XVERSE-7B 使用主流 Deco…