论文: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%),但由于权重的分布非常广泛,局部相关性很小,得到的实际加速效果也非常有限。

使用低秩近似进行模型压缩时,一般都是先完成模型的训练,然后模型中的权重矩阵会用多个低秩矩阵的乘积近似,最后再进行模型的微调以提升准确率。低秩近似因为进行了矩阵的分解,可以取得有效的加速。但是,低秩近似只能应用于单个网络层,无法修改网络的结构。

本文作者受三个事实的启发:

  1. 模型中包含了冗余的滤波器和连接;
  2. CNN中一般使用的是三维卷积,但其实可以使用任意形状的卷积以消除不必要的计算;
  3. 因为梯度爆炸和梯度弥散问题,并不是网络越深效果越好。

提出了结构化稀疏学习(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相关推荐

  1. Learning Structured Sparsity in Deep Neural Networks

    论文链接:https://arxiv.org/pdf/1608.03665.pdf 代码链接:https://github.com/wenwei202/caffe/tree/scnn 摘要 计算资源的 ...

  2. 论文解读《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 ...

  3. [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)...

    译自:http://sebastianruder.com/multi-task/ 1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我 ...

  4. 【深度学习】多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)

    1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我们训练单一模型或多个模型集合来完成指定得任务.然后,我们通过精细调参,来改进模型直 ...

  5. 剪枝综述论文阅读:Methods for Pruning Deep Neural Networks

    文章目录 一.概述 1.分类 2.评估 二.Magnitude based pruning 1.权重剪枝 2.彩票定理 3.特征图和过滤器剪枝 (1)基于通道方差的剪枝 Inbound pruning ...

  6. 【论文阅读】Deep Neural Networks for Learning Graph Representations | day14,15

    <Deep Neural Networks for Learning Graph Representations>- (AAAI-16)-2016 文章目录 一.模型 1.1解决了两个问题 ...

  7. (2018)All-optical machine learning using diffractive deep neural networks

    "All-optical machine learning using diffractive deep neural networks",这篇Science上的文章发表于2018 ...

  8. [论文阅读笔记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 ...

  9. 论文阅读 (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 ...

最新文章

  1. 对html2canvas的研究
  2. 项目开发中的编码规范
  3. Jupyter notebook 中使用pip install安装第三方Python包
  4. spring boot项目怎么记录用户操作行为和登录时间_6 个 Github 项目拿下 Spring Boot
  5. PHP中字符串类型与数值类型混合计算
  6. 小程序与H5如何混合开发及WEUI那些事
  7. 华为以“平台应变”之道角逐数字化转型“深水区”
  8. linux中ftp禁止匿名,linux下禁止root和匿名用户登录ftp
  9. 当前计算机技术在制图,计算机技术在《机械制图》课程中的应用
  10. 冰点还原忘记密码如何修改配置或卸载
  11. 万柳少爷背后,大批有钱人正在自媒体上发着横财。
  12. Navicat数据备份
  13. Unity中导出apk文件
  14. 摄像头8mm可以看多远_解析智能监控摄像头的监控可视范围及距离
  15. 每个程序员都应该知道的Linux基础知识!全文4900字,没有耐心的不建议看 ——( Linux文件系统 + 系统管理类命令 + bash基础特性)
  16. 盘点那些多倍积分的银行卡
  17. 梯形断面临界水深莫洛图
  18. java gif 帧_修复Java中动画gif的帧频
  19. 熊猫怎么用html5看直播,熊猫TV HTML5播放器自动网页全屏
  20. 关于虚拟机搭建Hadoop的几个坑

热门文章

  1. 【集合类】 4 System:System.arraycopy方法解析
  2. 05-机器学习_(协同过滤推荐算法与应用)---没用
  3. 刷新框架嵌套vlayout下拉刷新问题
  4. DX-BT07S蓝牙调试问题记录
  5. Access denied for user 'root'@'localhost' (using password: YES)【mysql密码错误】
  6. 学习记录605@flowable之moveExecutionsToSingleActivityId并行网关或者包容网关回退
  7. excel if函数 android,Excel中IF函数的嵌套用法(多条件)
  8. 真题详解(数字签名算法)-软件设计(七十八)
  9. [ 数据结构 -- 手撕排序算法第三篇 ] 希尔排序
  10. 最小的语言符号是A词B语素C音素D义素,语言学概论 复习.doc