美文网首页
[PaperNotes]Learning both Weight

[PaperNotes]Learning both Weight

作者: BetterCV | 来源:发表于2018-07-23 20:50 被阅读39次

Learning both Weights and Connections for Efficient Neural Networks

image.png

Song Han在NIPS15的论文。我把它简称为WCENN。一篇比较经典的CNN pruning的文章,NIPS15.

CNN模型参数太多了。

前人尝试过的方法(来减少CNN模型参数数量):

  • fixed-point, 8bit替代32bit, 2011NIPS workshop
  • 通过low-rank来利用CNN线性结构
  • vector quantization

另外一些方法(来减少CNN模型参数):

  • GAP替换全连接层
  • googlenet结构
    存在的问题:这类方法上,再使用transfer learinng(fine tune全连接层),变得更难了。

已经有的pruning方法:

  • biased weight decay
  • Optimal Brain Damage & Optimal Brain Surgeon: 比biased weight decay准,但是计算二阶导数,慢

HashedNets:
一种减小模型容量的方法,可以和pruning一起使用

提出的方法:

    1. initial training
    1. 先找出“重要的连接”(权值)(低于阈值的权值被舍弃,则网络连接变得稀疏)
    1. 剪裁掉“不重要的权值连接”
    1. finetune经过剪裁的模型
    1. 1+2+3视作一个iteration,通过执行多次iteration,来找到最少的连接(最佳pruning?)
      灵感的来源(讲故事):CNN的参数太多,存在冗余;也可以从正则化角度解释。
      几点说明:
  • L2正则:初始训练阶段使用到了L2正则。L1正则在re-training之前还不错,但是retrain后性能低。


    regularization_trade_off.png
  • DropOut Ratio: re-train阶段应当使用更小的dropout-ratio,因为pruning过后的模型已经sparse了,inference variance变小了,所以dropout少一点才比较对路。

  • 不同layer对pruning的敏感度:靠前的卷积层更加敏感,因而需要较低的pruning thresh

效果:模型缩小了9~13倍,而精度几乎没有损失。

缺点

估计速度会很慢。训练速度在文章中提到了,AlexNet要搞一个礼拜。。
测试速度都没有提到过,估计很慢。

具体实现是借助了mask layer,这样看来模型容量没有变小?似乎需要依赖于sparse convolution library?

reference

https://blog.csdn.net/jason19966/article/details/78922695

https://github.com/LuoManGit/cut_weight_cnn

官方代码:https://github.com/songhan/Deep-Compression-AlexNet (好几篇文章代码都在这个repo)

相关文章

网友评论

      本文标题:[PaperNotes]Learning both Weight

      本文链接:https://www.haomeiwen.com/subject/plcsmftx.html