压缩神经网络(一):剪枝的基本思想

Learning both Weights and Connections for Efficient Neural Networks

主要思想
  1. 训练网络来得知哪些网络连接important和unimportant。
    设定一个临界值(shreshold),权重w小于临界值的连接 不重要
  2. 剪切掉不重要的连接
  3. 再训练剪切后得到的网络,调整剪切剩下的参数。
  4. 反复进行2,3 得到一个参数最少的神经网络。

注意点

  1. 正则化
    使用L1范式和L2范式对参数W进行约束。
    在剪切后,retrain前的效果L1范式比L2范式的效果。
    但在retrain后,L2范式的效果比L1范式要好
  2. dropout比率的调整
    deopout :在训练过程中,按照一定概率将连接的权重置为0,但是下一次训练的时候还是一直存在,文中的pruning(剪切),会使得连接不在存在。
    随着剪切的进行,需要按照文中给的公式,进行dropout的比率进行调整。
  3. Local Pruning and Parameter Co-adaptation
    在retrain时直接训练上一次pruning后保留下来的参数,而不是重新初始化参数。这样有两个好处:
    1. 计算量小
    2. 避免了梯度消失的问题
  4. 反复迭代进行pruning和retrain。
  5. 去掉输入或输出为0的神经元(neurous)

实验

  1. 选择临界值(shreshold): 选择一个标准值,每层的临界值为标准值* 这一层的标准差。

说明

翻译全是自己瞎翻译的。

代码

github链接
代码是基于师姐给的改的,,超级乱。

你可能感兴趣的:(神经网络)