网站首页 > 技术文章 正文
来源:晓飞的算法工程笔记 公众号,转载请注明出处
论文: Straightforward Layer-wise Pruning for More Efficient Visual Adaptation
- 论文地址:https://arxiv.org/abs/2407.14330
- 论文代码:https://github.com/RuiZiHan/SLS
创新点
- 提出了一种针对PETL模型的剪枝方法SLS(Straightforward Layer-wiSe Pruning method),证明在下游数据集与预训练数据集之间存在显著差距时,PETL转移后的模型中存在大量冗余参数。
- 提出了一种直观的特征级分析方法,为评估结构剪枝参数的重要性提供了一种新的视角。
- SLS在VTAB-1k基准测试中,使用相同的剪枝参数数量,以简单的策略在模型存储、准确性和速度上超越了当前主流的结构剪枝方法DepGraph。
内容概述
参数高效迁移学习(PETL)旨在使用有限的参数调整大型预训练模型。虽然大多数PETL方法在训练过程中仅更新添加或选择的参数并冻结预训练权重,但因为PETL难以回传梯度调整顶层的参数,往往会导致冗余的模型结构。结构剪枝有效降低了模型冗余,但常见的剪枝方法通常会导致存储参数的过度增加,因为不同剪枝率和数据会产生不同的剪枝结构。
针对存储参数量的问题,论文提出了一种直接的层级剪枝方法SLS(Straightforward Layer-wiSe Pruning method),用于剪枝PETL模型。SLS通过从特征角度评估每一层的参数,并利用聚类度量通过t-SNE获得的低维空间中的聚类现象来评估当前层参数,SLS促进了基于信息的剪枝决策。逐层剪枝专注于存储剪枝索引,解决了存储量的问题。
值得注意的是,主流的逐层剪枝方法可能不适合评估PETL转移模型中层的重要性,因为大多数参数是预训练的,并且与下游数据集的相关性有限。与最先进的PETL方法进行的比较分析表明,剪枝模型在模型吞吐量和准确性之间实现了显著的平衡。此外,SLS有效减少了由于不同剪枝结构而产生的存储开销,同时在与传统剪枝方法相比时提升了剪枝模型的准确性和速度。
SLS
以往的研究表明,较低层通常捕捉一般特征,而较高层则专注于特定特征。基于这一理解以及在PETL模型中冻结预训练网络参数的局限性,论文认为当下游数据分布与预训练数据分布之间存在显著差异时,PETL转移的模型深层将包含大量冗余参数。于是论文打算动态识别并剪除这些冗余参数。为了确保剪枝过程的有效性,必须满足以下关键标准:
- 保持与PETL转移方法相同的存储参数数量。
- 预测冗余参数而无需额外的训练。
相关算法
- 降维算法t-SNE:给定一组 维输入特征 ,为 计算一组 维嵌入,记作 。其中 ,通常为2或3以便于可视化。首先使用联合概率来度量输入 中 和 之间的相似性,随后调整随机初始化 ,使 元素之间的相似性与 对应元素之间的相似性一致。
- 聚类算法指标SC_Index(Silhouette Coefficient Index):给定一组聚类结果 ,对于某一点 ,定义 为其所在聚类中剩余点与 之间的平均距离, 为 与最近聚类中所有点之间的平均距离。
层级剪枝不会增加存储参数数量
SLS的预测不涉及额外的参数引用,采用基于现有特征的聚类方法预测剪枝层索引表示为 直接进行剪枝。因此,通过SLS剪枝的模型不会产生任何额外的存储开销。
根据各层的中间特征做出剪枝决定
使用降维特征的聚类程度SC_Index来评估层特征,该方法不引入额外的监督训练。如图2所示,在适当的设置下,模型中当前层的分类准确率与降维特征的SC_Index之间存在明显的相关性。
论文提出了特征评估模块 (FEM) 来评估来自层 的特征。如图3所示,FEM从层 的输出 中提取cls_token 来表示当前特征,使用t-SNE算法将 降维到 。随后,通过结合对应于当前输入的标签 ,得到一个具有 个类别的聚类结果 ,其中 是当前数据集中的类别数量。最后,计算与 对应的值 和 ,确定当前层特征的评估值 。
对于一个具有 层的模型,设 为一个超参数,控制SLS剪枝的程度。当前数据集上剪枝层数的阈值 定义为
在模型的剪枝过程中,从最高层向下遍历。当第 层特征的评估值 低于阈值 时,停止遍历循环,并剪掉从 到 的层。这一设计的动机在于,当第 层特征的评估值低于与顶部层特征评估相比的某个阈值时,分类头将无法有效地区分当前特征。因此, 层的输出特征是分类头能够很好地区分的最低层,剪掉从 向下的层会对模型的性能产生显著影响。
主要实验结果
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】
work-life balance.
猜你喜欢
- 2024-11-13 五大基本算法 五大基本算法是什么
- 2024-11-13 高级程序员必备:分治算法分享 分冶算法
- 2024-11-13 最快速的寻路算法 Jump Point Search
- 2024-11-13 手机实时人工智能之「三维动作识别」:每帧只需9ms
- 2024-11-13 模型压缩 | 无需"精雕细琢","随机剪枝"足矣!(ICLR 2022)
- 2024-11-13 决策树算法的剪枝策略:优化模型的关键路径
- 2024-11-13 基于Python的决策树分类器与剪枝 利用python建立决策树模型
- 2024-11-13 离线强化学习的单次修剪 离线训练模型
- 2024-11-13 只要保留定位感知通道,目标检测模型也能剪枝70%参数
- 2024-11-13 用动态数据修剪加速深度学习 动态数据变化视频制作
你 发表评论:
欢迎- 11-13第一次养猫的人养什么品种比较合适?
- 11-13大学新生活不适应?送你舒心指南! 大学新生的不适应主要有哪些方面
- 11-13第一次倒班可能会让人感到有些不适应,以下是一些建议
- 11-13货物大小不同装柜算法有哪些?怎么算?区别有哪些?
- 11-13五大基本算法 五大基本算法是什么
- 11-13高级程序员必备:分治算法分享 分冶算法
- 11-13最快速的寻路算法 Jump Point Search
- 11-13手机实时人工智能之「三维动作识别」:每帧只需9ms
- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)