当前位置: 首页 > 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;调用聊天数据可能在…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...