美文网首页
[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