转载自:http://blog.csdn.net/electech6/article/details/72822009

孙剑:简化网络设计方法

旷世科技研究院院长孙剑的报告中介绍了模型压缩优化。他举了个例子,比如在对图像分类的时候,随着层级的增加,应该把图像的空间分辨率慢慢缩小,但这同时也需要增加每一层中的filter 数。另外实践中发现用小的filter 是更经济的,还有用Low-rank分解逼近的方法也比较有效。

在简化网络方面,主要考虑结构剪枝。还有一个概念是结构化剪枝。虽然仅有一字之差,但是结构剪枝和结构化剪枝是两个不同的概念。结构剪枝是指对网络结构进行修剪,而结构化剪枝是属于结构剪枝的一种具体方法,指按照特定的结构(相对于随机)进行剪枝。结构剪枝如下图所示一共有3种方法。

  • 第一种方法是稀疏连接,本来一个网络里有很多连接的,其基本思想是去除不重要的连接,让这个连接变稀疏。虽然它可以减少网络的模型大小,但是不一定能够减少网络的运行时间。
  • 第二种就是张量分解的方法,就是把一个卷积网络参数矩阵通过张量分解,用它的低秩特性做逼近。
  • 第三种是channel 剪枝,就是训练好一个网络后,简单粗暴的把一些channel 去掉。

还有一种方法就是Low-bit表达。如下图输入一个三维的feature map,feature map标准的话都是float表示的,卷积核其实也是一个三维的矩阵,它也是float表示的。Low-bit表达就是用低精度的表达来代替这些高精度的float,比如用8位或者更加极端的两位来表示。

有两篇比较著名的工作。一个是Binary connect,他的思想是把这个weight都变成01,这也是很夸张的一个想法。下面是更进一步的工作,它是将feature和weight全变成01,叫XNOR-Net,好处是卷积神经网络里的矩阵层,可以变成一个bitcount的指令,就可以完成它想要完成的计算,这个是在硬件中很有效的一个方法,也是Low-bit网络非常吸引人的地方。优点在于:1.内存可以降得非常多;2.潜在的加速比非常大。

Low-bit表达除了能量化weight或feature,还可以量化gridient,因为gridient其实也是float的。他们团队使用的设置是weight用01表示,activation用两位表示,gridient用4位表示,他们将这个网络取名为DOReFa-Net。该网络结构在并行训练或者FPGA/ASIC上训练时可以提高不少效率。

程健:深度神经网络优化计算

程健研究员的报告主要针对嵌入式平台的深度学习优化方法。他列举了近年来在深度神经网络模型加速和压缩方面的几个有效方法:

1、剪枝与稀疏

研究表明网络中很多连接都是接近0或者冗余的,如何对这些参数进行稀疏就变的很有意义。如下图所示是SVD分解的算法性能对比。SVD分解可以从模型压缩和提高运算速度两个方面进行优化。

但是并不是只要剪枝就一定会提高运算速度。原因是如果剪枝过于随机,并不能有效提升运算速度。所以需要结构化剪枝(structured pruning)。

剪枝一般需要如下图左的三个步骤:先在原始的网络结构下训练网络,然后通过设置一个阈值,把一些权值较小的连接进行剪枝,重新训练权重,对训练好的模型再剪枝,再重新训练,直到满足设定条件为止。

2、低秩分解

有很多种分解方法,比如奇异值分解、tucker分解、块分解。

不过,一个m*n的矩阵,如果秩很低(秩r远小于m,n),则它可以拆成一个m*r矩阵和一个r*n矩阵之积(类似于SVD分解)。后面这两个矩阵所占用的存储空间比原来的m*n矩阵小得多

3、权值量化

通常神经网络中的权值一般用单精度的浮点数表示,需要占用大量的存储空间。而用码书对权值进行量化可以共享权值,从而减轻存储负担。

利用哈希编码对权重进行编码,从而达到压缩权重的目的。也是一种有效的方法,如下所示。

另外就是定点和二值化(fixed point / binary)的方法。量化方式有二值量化(0,1):

也有三值量化:

4、用定点来代替浮点数计算。

颜水成:深度学习的三个维度

新加坡国立大学颜水成教授介绍了深度学习的三个维度:Compactness, Speed, and Accuracy。也就是小模型、速度快、预测准。

小模型可以考虑network in network。如下所示。

极端化一点,是否可以考虑设计全部由1x1的卷积层组成小模型?如下图所示就是使用1x1的卷积,它的基本结构包括以下三个部分:

经过研究统计发现,网络在经过ReLU后,有平均超过40%的输出都是0,这些其实是无用信息,而且这些输出0值在经过ReLU前的操作也是没有意义的。可以想办法找到这些位置进行优化。

提高模型预测精度的一个有效方法是共享跨层信息,例如ResNet的跨层连接设计。

以上就是VALSE2017上关于深度学习网络模型压缩优化的部分选摘。

【CNN削减阅读笔记】【简化网络设计】【低秩分解】相关推荐

  1. 深度学习模型压缩与加速技术(三):低秩分解

    目录 总结 低秩分解 定义 特点 1.二元分解 2.多元分解 参考文献 深度学习模型的压缩和加速是指利用神经网络参数的冗余性和网络结构的冗余性精简模型,在不影响任务完成度的情况下,得到参数量更少.结构 ...

  2. 低秩分解(张量分解)

    低秩分解(张量分解)         神经网络的 filter 可以看作是四维张量:宽度 w高度 h通道数 c卷积核数 n,由于 c 和 n 对网络结构的整体影响较大,所以基于卷积核(w*h)矩阵信息 ...

  3. PARTICULAR OBJECT RETRIEVAL WITH INTEGRAL MAX-POOLING OF CNN ACTIVATIONS阅读笔记

    不久前看到一篇paper,感觉效果虽然不是特别好,但是对于图像检索和目标识别的后续工作特别有启发意义,所以大致记录一下阅读笔记,以此激励自己学习. 近年来,基于CNN的图像表征已经为图像检索提供了很有 ...

  4. 马毅:低维模型与深度模型的殊途同归(神经网络、压缩感知和低秩分解与补全)

    机器之心原创 作者:邱陆陆 上周,今日头条人工智能实验室在清华大学举办了第二期 AI 技术沙龙,邀请到上海科技大学信息科学与技术学院的马毅教授带来题为「高维数据的低维结构与深度模型」的主题分享.马毅教 ...

  5. matlab 低秩矩阵分解,低秩分解的matlab代码看不懂,分解的两个矩阵在哪呀??...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 有四个文件:demo.m function [] = demo() %This routine demonstrates an example of us ...

  6. 低秩矩阵分解 matlab,低秩分解的matlab代码看不懂,分解的两个矩阵在哪呀??...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 有四个文件:demo.m function [] = demo() %This routine demonstrates an example of us ...

  7. matlab矩阵的低秩分解,低秩分解的matlab代码看不懂,分解的两个矩阵在哪呀??...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 有四个文件:demo.m function [] = demo() %This routine demonstrates an example of us ...

  8. lrr matlab,低秩分解的matlab代码看不懂,分解的两个矩阵在哪呀??

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 有四个文件:demo.m function [] = demo() %This routine demonstrates an example of us ...

  9. Object Detection in 20 Years A Survey-论文翻译(阅读笔记)

    Object Detection in 20 Years A Survey论文翻译(阅读笔记) 原文地址:[1905.05055] Object Detection in 20 Years: A Su ...

最新文章

  1. 人人都能学会的python编程教程3:字符串和编码
  2. 处理器与内存和硬盘的交互
  3. 在Visual Studio调试器中显示数组
  4. android高德地图气泡,[置顶] Android-高德地图-显示气泡框
  5. 简易版viewport
  6. 郁金香商业辅助教程 2016 笔记 6~10
  7. 网易云音乐随机歌曲调用API接口
  8. oppo手机解锁_手机解锁新风尚,OPPO的光域屏幕指纹技术又是哪根儿葱
  9. iOS之UI--CAShapeLayer
  10. nlp n-gram_NLP中的单词嵌入:一键编码和Skip-Gram神经网络
  11. java pppoe_ADSL(PPPOE)接入指南
  12. 13种常用按钮、文本框、表单等CSS样式
  13. VScode下载安装及使用教程
  14. 权重的计算方法,主要有两种:1.线性加权法; 2.层次分析法
  15. 黑马程序员——递归与枚举
  16. 2019 强网杯 babybank
  17. 分享一个网页截图html代码
  18. 【MOOC】JS脚本|便于复制粘贴中国大学MOOC网站的测试题和选项
  19. 石化能源行业工业互联网智能工厂解决方案
  20. 定风波·莫听穿林打叶声

热门文章

  1. opencv 异常报错Microsoft C++ 异常: cv::Exception,位于内存位置 0x00000058F84FEC20 处
  2. 数据库的三大范式(例子说明)
  3. 突然不想努力了怎么办?
  4. Android-MVVM开发模式应用
  5. 多项目同时进行不顺畅,怎么办?
  6. 太素---亿级大规模中文视觉语言预训练数据集
  7. 达梦数据库中迁移过来的数据,在Mysql中批量添加注释,修改注释
  8. 七年之”痒”,国内数据交易路在何方?
  9. 计算机四级APP未来教育,计算机等考题库APP
  10. 风控场景下的常用特征分箱介绍:BestKs分箱、卡方分箱、聚类分箱等