网站首页 > 技术文章 正文
机器之心报道
作者:Hecate He
来自微软、浙江大学等机构的研究者提出了一种 one-shot DNN 剪枝框架,无需微调即可从大型神经网络中得到轻量级架构,在保持模型高性能的同时还能显著降低所需算力。
大型神经网络学习速度很快,性能也往往优于其他较小的模型,但它们对资源的巨大需求限制了其在现实世界的部署。
剪枝是最常见的 DNN 压缩方法之一,旨在减少冗余结构,给 DNN 模型瘦身的同时提高其可解释性。然而,现有的剪枝方法通常是启发式的,而且只针对特定任务,还非常耗时,泛化能力也很差。
在一篇标题为《 Only Train Once: A One-Shot Neural Network Training And Pruning Framework》的论文中,来自微软、浙江大学等机构的研究者给出了针对上述问题的解决方案,提出了一种 one-shot DNN 剪枝框架。它可以让开发者无需微调就能从大型神经网络中得到轻量级架构。这种方法在保持模型高性能的同时显著降低了其所需的算力。
论文链接:https://arxiv.org/pdf/2107.07467.pdf
该研究的主要贡献概括如下:
- One-Shot 训练和剪枝。研究者提出了一个名为 OTO(Only-Train-Once)的 one-shot 训练和剪枝框架。它可以将一个完整的神经网络压缩为轻量级网络,同时保持较高的性能。OTO 大大简化了现有剪枝方法复杂的多阶段训练 pipeline,适合各种架构和应用,因此具有通用性和有效性。
- Zero-Invariant Group(ZIG)。研究者定义了神经网络的 zero-invariant group。如果一个框架被划分为 ZIG,它就允许我们修剪 zero group,同时不影响输出,这么做的结果是 one-shot 剪枝。这种特性适用于全连接层、残差块、多头注意力等多种流行结构。
- 新的结构化稀疏优化算法。研究者提出了 Half-Space Stochastic Projected Gradient(HSPG),这是一种解决引起正则化问题的结构化稀疏的方法。研究团队在实践中展示并分析了 HSPG 在促进 zero group 方面表现出的优势(相对于标准近端方法)。ZIG 和 HSPG 的设计是网络无关的,因此 OTO 对于很多应用来说都是通用的。
- 实验结果。利用本文中提出的方法,研究者可以从头、同时训练和压缩完整模型,无需为了提高推理速度和减少参数而进行微调。在 VGG for CIFAR10、ResNet50 for CIFAR10/ImageNet 和 Bert for SQuAD 等基准上,该方法都实现了 SOTA 结果。
方法及实验介绍
OTO 的结构非常简单。给定一个完整的模型,首先将可训练的参数划分为 ZIG 集,产生了一个结构化稀疏优化问题,通过一个新的随机优化器 (HSPG) 得出高度组稀疏的解。最后通过剪枝这些 zero group 得到一个压缩模型。
团队提出的 HSPG 随机优化算法是针对非光滑正则化问题而设计的,与经典算法相比,该算法在保持相似收敛性的同时,能够更有效地增强群体稀疏性搜索。
为了评估 OTO 在未经微调的 one-shot 训练和剪枝中的性能,研究者在 CNN 的基准压缩任务进行了实验,包括 CIFAR10 的 VGG16,CIFAR10 的 ResNet50 和 ImagetNet (ILSVRC2012),研究者比较了 OTO 与其当前各个 SOTA 算法在 Top-1 精度和 Top-5 精度、剩余的 FLOPs 和相应的 baseline 参数。
表 1:CIFAR10 中的 VGG16 及 VGG16-BN 模型表现。
在 CIFAR10 的 VGG16 实验中,OTO 将浮点数减少了 83.7%,将参数量减少了 97.5%,性能表现令人印象深刻。
在 CIFAR10 的 ResNet50 实验中,OTO 在没有量化的情况下优于 SOTA 神经网络压缩框架 AMC 和 ANNC,仅使用了 12.8% 的 FLOPs 和 8.8% 的参数。
表 2:CIFAR10 的 ResNet50 实验。
在 ResNet50 的 ImageNet 实验中,OTO 减少了 64.5% 的参数,实现了 65.5% 的浮点数减少,与 baseline 的 Top-1/5 精度相比只有 1.4%/0.8% 的差距 。
表 3:ResNet50 的 ImageNet。
总体而言,OTO 在所有的压缩基准实验中获得了 SOTA 结果,展现了模型的巨大潜力。研究者表示,未来的研究将关注合并量化和各种任务的应用上。
猜你喜欢
- 2024-10-15 你认为CNN的归纳偏差,Transformer它没有吗?
- 2024-10-15 Genetic CNN: 经典NAS算法,遗传算法的标准套用 | ICCV 2017
- 2024-10-15 CB Loss:基于有效样本的类别不平衡损失
- 2024-10-15 资源|注意迁移的PyTorch实现 pytorch accuracy
- 2024-10-15 NVIDIA Jetson Nano 2GB 系列文章(49):智能避撞之现场演示
- 2024-10-15 针对不平衡问题建模的有趣Loss 不平衡指派问题matlab
- 2024-10-15 目标检测RCNN系列总结 目标检测nms
- 2024-10-15 谷歌开源GPipe:单个加速器处理参数3.18亿,速度提升25倍
- 2024-10-15 TensorFlow 模型优化工具包:模型大小减半,精度几乎不变
- 2024-10-15 资源受限场景下的深度学习图像分类:MSDNet多尺度密集网络
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)