模型剪枝三:Learning Structured Sparsity in Deep Neural Networks
论文:https://arxiv.org/abs/1608.03665
代码:https://github.com/wenwei202/caffe/tree/scnn
1 核心思想
前面两篇文章https://blog.csdn.net/cdknight_happy/article/details/110953977和https://blog.csdn.net/cdknight_happy/article/details/111051396介绍的都是非结构化的剪枝,只是从每一层中移除了一些不重要的连接,但是本文作者的实验发现在CPU/GPU上,这种非常规的存储访问方式的实际加速效果非常有限。如下图所示,是对于AlexNet应用L1非结构化剪枝前后的速度对比,剪枝后模型准确率的衰减不超过2%:
上图可以表明,即便模型剪枝后稀疏度很大(例如,超过了95%),但由于权重的分布非常广泛,局部相关性很小,得到的实际加速效果也非常有限。
使用低秩近似进行模型压缩时,一般都是先完成模型的训练,然后模型中的权重矩阵会用多个低秩矩阵的乘积近似,最后再进行模型的微调以提升准确率。低秩近似因为进行了矩阵的分解,可以取得有效的加速。但是,低秩近似只能应用于单个网络层,无法修改网络的结构。
本文作者受三个事实的启发:
- 模型中包含了冗余的滤波器和连接;
- CNN中一般使用的是三维卷积,但其实可以使用任意形状的卷积以消除不必要的计算;
- 因为梯度爆炸和梯度弥散问题,并不是网络越深效果越好。
提出了结构化稀疏学习(structured sparisity learning,SSL),通过Group Lasso进行模型的结构化剪枝。
1.1 SSL总体思路
假设DNN的某层是一个四维tensor,W(l)∈RNl×Cl×Ml×KlW^{(l)} \in R^{N_l \times C_l \times M_l \times K_l}W(l)∈RNl×Cl×Ml×Kl,L表示模型总的层数。SSL优化总的思路可以写成:
ED(W)E_D(W)ED(W)表示数据上的损失;R(.)R(.)R(.)表示非结构化的正则化项;Rg(.)R_g(.)Rg(.)表示应用于每一层的结构化稀疏项。因为Group Lasso可以将一组参数全部变为0,所以作者用它来实现Rg(.)R_g(.)Rg(.),公式为Rg(w)=∑g=1G∣∣w(g)∣∣gR_g(w) = \sum_{g=1}^{G}||w^{(g)}||_gRg(w)=∑g=1G∣∣w(g)∣∣g,w(g)w^{(g)}w(g)表示一组参数,∣∣.∣∣g||.||_g∣∣.∣∣g表示group lasso,∣∣w(g)∣∣g=∑i=1∣w(g)∣(wi(g))2||w^{(g)}||_g = \sqrt{\sum_{i=1}^{|w^{(g)}|}(w_i^{(g)})^2}∣∣w(g)∣∣g=∑i=1∣w(g)∣(wi(g))2,∣w(g)∣|w^{(g)}|∣w(g)∣是w(g)w^{(g)}w(g)中的权重数量。
1.2 在filters、channels、filters shape和depth四个维度应用SSL
group lasso中如何分组,就决定了在哪个维度进行SSL。作者提到了四种维度:
filter-wise去掉某个filter;channel-wise去掉所有filter的某个channel;shape-wise调整filter的形状;depth-wise整体去掉某个网络层。
下面所列的公式中全部忽略了非结构化稀疏项 R(.)R(.)R(.)。
1.2.1 filter & channel SSL
Wnl,:,:,:(l)W^{(l)}_{n_l,:,:,:}Wnl,:,:,:(l)表示第lll层的第nln_lnl个滤波器;W:,cl,:,:(l)W_{:,c_l,:,:}^{(l)}W:,cl,:,:(l)表示第lll层中所有滤波器的第clc_lcl个channel。上面的公式中,是吧filter-wise和channel-wise SSL同步进行,这是因为如果进行了filter SSL,某个filter全部被置为0,计算之后也就生成了一个全为0的输出feature map,filter-wise SSL和channel-wise SSL是互补影响的,因此两者可以同步进行。
1.2.2 shape SSL
使用W:,cl,ml,kl(l)W^{(l)}_{:,c_l,m_l,k_l}W:,cl,ml,kl(l)表示由第clc_lcl个channel中所有二维滤波器在(ml,kl)(m_l,k_l)(ml,kl)位置组成的向量,shape SSL是指可以把某些系数裁剪掉,其计算公式为:
1.2.3 depth SSL
depth SSL是指可以把某些层裁剪掉,其计算公式为:
裁剪掉某层之后,会造成模型的信息传递被中断,所以作者使用了shortcut连接,如Fig. 2所示,如果某层被裁剪掉之后,前面层的信息会通过shortcut直接传输到后面层。
1.2.4 两种稀疏规则的实际实现
对卷积应用2D filter-wise稀疏:3D卷积是2D卷积的组合,进行1.2.1节所述的filter-wise SSL时,可以按照channel进行group lasso,也就是对Wnl,cl,:,:(l)W_{n_l,c_l,:,:}^{(l)}Wnl,cl,:,:(l)应用SSL。
针对GEMM结合使用filter-wise和shape-wise SSL:DNN的实现中,一般都是将卷积运算转成矩阵运算,例如在caffe中,就是通过im2col进行卷积运算,在下面的列子中,将Wnl,:,:,:(l)W_{n_l,:,:,:}^{(l)}Wnl,:,:,:(l)转换为了权重矩阵的一列,将W,:,cl,ml,kl(l)W_{,:,c_l,m_l,k_l}^{(l)}W,:,cl,ml,kl(l)转换为了权重矩阵的一行。所以对权重矩阵进行稀疏化,同时移除掉某行和某列,就相当于同时进行filter-wise和shape-wise SSL。
2 实验
LeNet:
Fig. 3表明,有大量的结构化稀疏的空间。
3 代码分析
TODO
本文初步知道了作者的思想,但是总是感觉理解不够深刻,后续复盘。
参考:
https://blog.csdn.net/h__ang/article/details/89357367
https://xmfbit.github.io/2018/02/24/paper-ssl-dnn/
模型剪枝三:Learning Structured Sparsity in Deep Neural Networks相关推荐
- Learning Structured Sparsity in Deep Neural Networks
论文链接:https://arxiv.org/pdf/1608.03665.pdf 代码链接:https://github.com/wenwei202/caffe/tree/scnn 摘要 计算资源的 ...
- 论文解读《Structured Pruning for Deep Neural Networks with Adaptive Pruning Rate Derivation Based on Con》
论文:Structured Pruning for Deep Neural Networks with Adaptive Pruning Rate Derivation Based on Connec ...
- [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)...
译自:http://sebastianruder.com/multi-task/ 1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我 ...
- 【深度学习】多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)
1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我们训练单一模型或多个模型集合来完成指定得任务.然后,我们通过精细调参,来改进模型直 ...
- 剪枝综述论文阅读:Methods for Pruning Deep Neural Networks
文章目录 一.概述 1.分类 2.评估 二.Magnitude based pruning 1.权重剪枝 2.彩票定理 3.特征图和过滤器剪枝 (1)基于通道方差的剪枝 Inbound pruning ...
- 【论文阅读】Deep Neural Networks for Learning Graph Representations | day14,15
<Deep Neural Networks for Learning Graph Representations>- (AAAI-16)-2016 文章目录 一.模型 1.1解决了两个问题 ...
- (2018)All-optical machine learning using diffractive deep neural networks
"All-optical machine learning using diffractive deep neural networks",这篇Science上的文章发表于2018 ...
- [论文阅读笔记58]Learning from Noisy Labels with Deep Neural Networks:A Survey
1.题目 Learning from Noisy Labels with Deep Neural Networks: A Survey 作者团队:韩国科学技术院(KAIST) Song H , Kim ...
- 论文阅读 (69):Collaborative Learning for Deep Neural Networks
文章目录 1 引入 1.1 题目 1.2 摘要 1.3 Bib 2 协作学习 2.1 训练图的生成 2.2 学习目标 2.3 一组分类器头的优化 2.3.1 同步SGD 2.3.2 反向传播重缩放 2 ...
最新文章
- 对html2canvas的研究
- 项目开发中的编码规范
- Jupyter notebook 中使用pip install安装第三方Python包
- spring boot项目怎么记录用户操作行为和登录时间_6 个 Github 项目拿下 Spring Boot
- PHP中字符串类型与数值类型混合计算
- 小程序与H5如何混合开发及WEUI那些事
- 华为以“平台应变”之道角逐数字化转型“深水区”
- linux中ftp禁止匿名,linux下禁止root和匿名用户登录ftp
- 当前计算机技术在制图,计算机技术在《机械制图》课程中的应用
- 冰点还原忘记密码如何修改配置或卸载
- 万柳少爷背后,大批有钱人正在自媒体上发着横财。
- Navicat数据备份
- Unity中导出apk文件
- 摄像头8mm可以看多远_解析智能监控摄像头的监控可视范围及距离
- 每个程序员都应该知道的Linux基础知识!全文4900字,没有耐心的不建议看 ——( Linux文件系统 + 系统管理类命令 + bash基础特性)
- 盘点那些多倍积分的银行卡
- 梯形断面临界水深莫洛图
- java gif 帧_修复Java中动画gif的帧频
- 熊猫怎么用html5看直播,熊猫TV HTML5播放器自动网页全屏
- 关于虚拟机搭建Hadoop的几个坑
热门文章
- 【集合类】 4 System:System.arraycopy方法解析
- 05-机器学习_(协同过滤推荐算法与应用)---没用
- 刷新框架嵌套vlayout下拉刷新问题
- DX-BT07S蓝牙调试问题记录
- Access denied for user 'root'@'localhost' (using password: YES)【mysql密码错误】
- 学习记录605@flowable之moveExecutionsToSingleActivityId并行网关或者包容网关回退
- excel if函数 android,Excel中IF函数的嵌套用法(多条件)
- 真题详解(数字签名算法)-软件设计(七十八)
- [ 数据结构 -- 手撕排序算法第三篇 ] 希尔排序
- 最小的语言符号是A词B语素C音素D义素,语言学概论 复习.doc