当前位置: 首页 > news >正文

Straightforward Layer-wise Pruning for More Efficient Visual Adaptation

对于模型中冗余的参数,一个常见的方法是通过结构化剪枝方法减少参数容量。例如,基于幅度值和基于梯度的剪枝方法。尽管这些方法在传统训练上通用性,本文关注的PETL迁移有两个不可避免的问题:

  1. 显著增加了模型存储负担。由于不同的下游数据,剪枝方法设置的剪枝率不同,导致不同数据集的不同网络结构,这导致这些不同结构大的存储空间。
  2. 模型精度的损失。剪枝冗余参数从网络中的预训练参数,这不与下游数据集直接相关。可训练参数需要适应剪枝的新结构,实验中表明这阻碍了模型精度恢复。

本文方法

这里首先介绍广泛使用的维度约简算法,t-SNE和聚类算法标准,轮廓系数索引(silhouette coefficient index)。给定d维度的输入特征集合 X = { x 1 , x 2 , … , x n } X=\{x_{1},x_{2},\ldots,x_{n}\} X={x1,x2,,xn},t-SNE计算s维度嵌入集合,定义为 $Y={y_{1},y_{2},\ldots,y_{n}$,满足 s ≪ d s\ll d sd。t-SNE计算 x i x_{i} xi x j x_{j} xj 之间相似度的公式为以下的联合概率 p i j = p i ∣ j + p j ∣ i 2 n p_{ij}=\frac{p_{i|j}+p_{j|i}}{2n} pij=2npij+pji
其中

p i ∣ j = exp ⁡ ( − ∣ ∣ x i − x j ∣ ∣ 2 / 2 σ i 2 ) ∑ k ≠ i exp ⁡ ( − ∣ ∣ x i − x k ∣ ∣ 2 / 2 σ i 2 ) p_{i|j}=\frac{\exp(-||x_{i}-x_{j}||^{2}/2\sigma_{i}^{2})}{\sum_{k\neq i}\exp(-||x_{i}-x_{k}||^{2}/2\sigma_{i}^{2})} pij=k=iexp(∣∣xixk2/2σi2)exp(∣∣xixj2/2σi2)

基于上述 X X X Y Y Y 的联合分布 P P P Q Q Q,t-SNE通过梯度下降优化 P P P Q Q Q 之间KL散度。

轮廓系数索引

给定聚类结果集合 X = { x 1 , x 2 , … , x n } X=\{x_{1},x_{2},\ldots,x_{n}\} X={x1,x2,,xn},对于每一点 x i x_{i} xi,定义 a i a_{i} ai 是在这疑惧类剩下点和 x i x_{i} xi 平均距离。 b ( i ) b(i) b(i) 是在最近聚类的所有点到 x i x_{i} xi 平均距离。定义轮廓系数索引为

s ˉ = 1 n ∑ i = 1 n b ( i ) − a ( i ) max ⁡ ( a ( i , b ( i ) \bar{s}=\frac{1}{n}\sum_{i=1}^{n}\frac{b(i)-a(i)}{\max(a(i,b(i)} sˉ=n1i=1nmax(a(i,b(i)b(i)a(i)

基于特征视角的逐层剪枝

先前研究已经显示较低的层捕捉一般特征,较高的层关注于特定特征。基于此理解和PETL冻结预训练网络参数的限制,本文提出了一个假设:当存在下游数据分布和预训练数据分布显著差异时,由PETL迁移的较深的层将包含大量的冗余参数。本文目标是动态识别并剪枝这些冗余参数。后续关键评价指标需要满足:

  • 维持PETL迁移模型相同存储参数数量
  • 不需要额外训练预测冗余参数

不增加存储参数数量

考虑一个PETL迁移的N层ViT模型,定义每层预训练参数为 W P i W_{P}^{i} WPi,定义每层新引入的参数为 W A i , j W_{A}^{i,j} WAi,j,头参数为 W H j W_{H}^{j} WHj,由SLS预测的剪枝层索引为 I n d e x j Index_{j} Indexj。对于层级别的剪枝方法,在K个下游数据集的存储的参数量 S S S
S = ∑ j = 1 K ∑ i = 1 I n d e x j ( W P i + W A i , j ) + ∑ j = 1 K W H j S=\sum_{j=1}^{K}\sum_{i=1}^{Index_{j}}(W_{P}^{i}+W_{A}^{i,j})+\sum_{j=1}^{K}W_{H}^{j} S=j=1Ki=1Indexj(WPi+WAi,j)+j=1KWHj
显然剪枝层数量不会超过网络层的范围。

S ≤ ∑ j = 1 K ∑ i = 1 N ( W P i + W A i , j ) + ∑ j = 1 K W H j = K ∑ i = 1 N W P i + ∑ j = 1 N ∑ i = 1 N W A i , j + ∑ j = 1 K W H j S\leq \sum_{j=1}^{K}\sum_{i=1}^{N}(W_{P}^{i}+W_{A}^{i,j})+\sum_{j=1}^{K}W_{H}^{j}=K\sum_{i=1}^{N}W_{P}^{i}+\sum_{j=1}^{N}\sum_{i=1}^{N}W_{A}^{i,j}+\sum_{j=1}^{K}W_{H}^{j} Sj=1Ki=1N(WPi+WAi,j)+j=1KWHj=Ki=1NWPi+j=1Ni=1NWAi,j+j=1KWHj
对于存储的参数,每一层的参数 W P i W_{P}^{i} WPi 是可以再次使用的,因此满足:
S ≤ ∑ i = 1 N W P i + ∑ j = 1 N ∑ i = 1 N W A i , j + ∑ j = 1 K W H j S\leq \sum_{i=1}^{N}W_{P}^{i}+\sum_{j=1}^{N}\sum_{i=1}^{N}W_{A}^{i,j}+\sum_{j=1}^{K}W_{H}^{j} Si=1NWPi+j=1Ni=1NWAi,j+j=1KWHj

基于从每层的中间特征做剪枝决策

本文提出使用约简维度特征的聚类度评估层特征。该方法没有引入额外的监督训练。

给定输入 X X X,ViT模型将其通过补丁嵌入曾嵌入d维度潜在空间获得 e 0 e_{0} e0 e 0 e_{0} e0 与CLS令牌连接作为模型输入。ViT模型backbone前向过程可以描述为:
[ x i , e i ] = L i ( [ x i − 1 , e i − 1 ] ) [x_{i},e_{i}]=L_{i}([x_{i-1},e_{i-1}]) [xi,ei]=Li([xi1,ei1])

本文提出特征评估模块(FEM)评估从层 L i L_{i} Li 的特征。FEM从层 KaTeX parse error: Expected '}', got 'EOF' at end of input: L_{i] 的输出获得CLS令牌 x i x_{i} xi 表示当前特征。之后使用t-SNE算法约简 x i x_{i} xi x i ′ x_{i}^{\prime} xi。通过结合当前输入的标签,获得 p p p 类别的聚类结果。之后获得对应 C C C a ( i ) a(i) a(i) b ( i ) b(i) b(i),最后是当前层的特征评估 S C _ i n d e x i SC\_index_{i} SC_indexi

对于N层的模型,定义 α \alpha α 是控制SLS剪枝度的超参数。在当前数据集的对于剪枝层的阈值 T T T 定义为:

T = α × S C _ I n d e x N T=\alpha\times SC\_Index_{N} T=α×SC_IndexN

在模型剪枝过程中,从最高层往下。当第i层特征的评估 S C _ I n d e x i SC\_Index_{i} SC_Indexi 小于T,停止遍历并剪枝从i+2到N的层。核心思想是当第 i层评估与最终层特征评估差距小于一个特定阈值,分类头不再能有效区分当前特征。

相关文章:

Straightforward Layer-wise Pruning for More Efficient Visual Adaptation

对于模型中冗余的参数,一个常见的方法是通过结构化剪枝方法减少参数容量。例如,基于幅度值和基于梯度的剪枝方法。尽管这些方法在传统训练上通用性,本文关注的PETL迁移有两个不可避免的问题: 显著增加了模型存储负担。由于不同的…...

喜讯 | 创邻科技杭州电子科技大学联合实验室揭牌成立!

近日,杭州电子科技大学图书情报专业硕士行业导师聘任仪式暨杭电-创邻图技术与数字化联合实验室(图书档案文物数字云联合研发中心)揭牌仪式在杭州电子科技大学隆重举行。杭州电子科技大学原副校长吕金海、研究生院副院长潘建江,科研…...

海外媒体发稿:如何打造媒体发稿策略

新闻媒体的发稿推广策略对于提升品牌知名度、吸引流量以及增加收入非常重要。本文将介绍一套在21天内打造爆款新闻媒体发稿推广策略的方法。 第一天至第七天:明确目标和定位 在这个阶段,你需要明确你的目标和定位,以便为你的新闻媒体建立一个…...

PyTorch模型保存与加载

1.保存与加载的概念(序列化与反序列化) 模型训练完毕之后,肯定想要把它保存下来,供以后使用,不需要再次去训练。 那么在pytorch中如何把训练好的模型,保存,保存之后又如何加载呢? 这就用需要序列化与反序列化,序列化与反序列化的概念如下图所示: 因为在内…...

CH569开发前的测试

为了玩转准备Ch569的开发工作 ,准备了如下硬件和软件: 硬件 1.官方的 Ch569 开发板,官方买到的是两块插接在一起的;除了HSPI接口那里的电阻,这两块可以说是一样的。也意味着两块板子的开发也需要烧录两次&#xff1b…...

MySQL中表的外连接和内连接

内连接和外连接 ​ 表的连接分为内连接和外连接,内连接就是将需要连接的表形成笛卡尔积筛选;外连接分为左外连接和右外连接,左外连接为左侧的表需要完全显示,右外连接为右侧的表现需要完全显示。 文章目录 内连接和外连接内连接外…...

Ubuntu 上安装 Redmine 5.1 指南

文章目录 官网安装文档:命令步骤相关介绍GemRubyRailsBundler 安装 Redmine更新系统包列表和软件包:安装必要的依赖:安装 Ruby:安装 bundler下载 Redmine 源代码:安装 MySQL配置 Redmine 的数据库配置文件:…...

从变量的角度理解 Hooks , 变得更简单了

从变量角度理解Hooks 在React的世界里,Hooks的引入为函数式组件带来了前所未有的灵活性和能力。它们让我们得以完全摆脱class式的写法,在函数式组件中完成生命周期管理、状态管理、逻辑复用等几乎全部组件开发工作。这次,我们就从变量的角度…...

LabVIEW Modbus通讯稳定性提升

在LabVIEW开发Modbus通讯程序时,通讯不稳定是一个常见问题,可能导致数据丢失、延迟或错误。为了确保通讯的可靠性,可以从多个角度进行优化,以下是一些有效的解决方案,结合实际案例进行分析。 1. 优化通讯参数设置 通讯…...

(8) cuda分析工具

文章目录 Nvidia GPU性能分析工具Nsight SystemNvidia GPU性能分析工具Nsight System Nvidia GPU性能分析工具Nsight System NVIDIA Nsight Systems是一个系统级的性能分析工具,用于分析和优化整个CUDA应用程序或系统的性能。它可以提供对应用程序整体性能的全面见…...

C语言 | Leetcode C语言题解之第517题超级洗衣机

题目&#xff1a; 题解&#xff1a; int findMinMoves(int* machines, int machinesSize){int sum0;for(int i0;i<machinesSize;i){summachines[i];}if(sum%machinesSize!0){return -1;}int psum/machinesSize;int ans0;int cur0;for(int i0;i<machinesSize;i){cur(mac…...

Java多线程编程基础

目录 编写第一个多线程程序 1. 方式一 : 继承Thread类, 重写run方法 2. 方式二: 实现Runnable接口, 重写run方法 3. 方式三: 使用Lambda表达式 [匿名内部类] [Lambda表达式] 在上个文章中, 我们了解了进程和线程的相关概念. 那么, 在Java中, 我们如何进行多线程编程呢? …...

刷代随有感(134):单调栈——下一个更大元素I(难点涉及哈希表与单调栈的结合)

单调栈处理的是下标&#xff01; 题干&#xff1a; 代码&#xff1a; class Solution { public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {stack<int>ddst;unordered_map<int,int>umap;vector<int…...

Linux云计算 |【第五阶段】CLOUD-DAY5

主要内容&#xff1a; 容器的镜像编排&#xff0c;commit简单镜像创建&#xff0c;Dockerfile制作服务镜像&#xff08;语法、创建镜像&#xff09;、创建复杂镜像&#xff08;Docker微服务架构、示例&#xff1a;NGINXPHP&#xff09;、私有仓库 一、简单镜像创建 1、自定义…...

被上传文件于后端的命名策略

上一篇博客我们了解了前端上传的文件资源应该存放在后端项目中的什么位置&#xff0c;那么随之而来的另一个问题——我们应该如何为上传的文件命名呢&#xff1f;往往直接采用原文件名并不稳妥&#xff0c;会导致命名冲突、文件冲突、数据库管理冲突等多种问题&#xff0c;下面…...

哈希表 算法专题

哈希表简介 是什么 存储数据的容器有啥用? "快速"查找某个元素什么时候用哈希表 频繁地查找某个数(有序用二分)怎么用哈希表 容器用数组模拟 字符串中的字符 范围比较小的数 一. 两数之和 两数之和 class Solution {public int[] twoSum(int[] nums, int targe…...

unity3d————[HideInInspector]

在Unity3D中&#xff0c;[HideInInspector]是一个属性修饰符&#xff0c;它的主要作用是在Unity的Inspector窗口中隐藏变量或属性。以下是关于[HideInInspector]的详细解释和作用&#xff1a; 作用 隐藏变量或属性&#xff1a;当你在脚本中使用[HideInInspector]修饰符时&…...

Soanrquber集成Gitlab 之 导入Gitlab项目

集成Gitlab 之 导入Gitlab项目 说明&#xff1a; Sonarquber里面的项目&#xff0c;顺便设置&#xff0c;只要在集成CI的时候&#xff0c;使用这个项目的项目标识即可。 当然项目名称一一对应是最好的了&#xff0c;所以这里讲导入Gitlab的项目&#xff0c;项目名称一一对应&…...

论区块链技术及应用

引言 区块链技术作为一种革命性的创新&#xff0c;近年来在全球范围内得到了广泛关注和应用。其去中心化、透明性和不可篡改的特性&#xff0c;使其在多个领域展现出了巨大的潜力。从金融到物联网&#xff0c;从医疗管理到政务监管&#xff0c;区块链正在改变我们处理信息和进…...

GPT避坑指南:如何辨别逆向、AZ、OpenAI官转

市面上有些说自己是官转&#xff0c;一刀只需要1块甚至几毛钱&#xff0c;并声称官方倍率的&#xff0c;很大可能就是使用的是 逆向或Azure。 如何鉴别逆向 逆向的种类很多&#xff0c;主要分为3类 逆向不知名A| 镜像站或偷的 key。成本约等于0&#xff0c;调用聊天数据可能在…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...