【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning

我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。

已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-notes

本节内容综述
  1. 本节课继续由助教Arvin Liu讲解,内容为 Network Pruning 。
  2. 首先来复习一下 Neuron Pruning in DNN 。
  3. Main Question: Prune what? Evaluation. After Evaluation? Prune? Sort? Threshold or Rank?
  4. Evaluate Importance. 以什么为衡量基准。介绍了不少方法。
  5. 接着,复习了一下 Lottery Ticket Hypo 。
  6. Prune what? 考虑到,会不会有个 weight 一开始比较大,其还具有意义吗?而一开始比较小,后来比较的的 weight 会不会更有意义呢?有人做了这个研究。见 Choose which mask?
  7. Wining Tickets property?
  8. Rethink v.s. Lottery. 上节课老师也提过,专门有一篇文章讲到过,还有篇文章与 Lottery 的文章结果正好互相违背。

 

文章目录

 

小细节

Neuron Pruning in DNN

【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
如上图,减少一个神经元的效果。

【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
如上图,对于CNN也可看出减少一个神经元的效果。

注意上面都没有计算 bias 。

Main Question: Prune what?

Main Question: Prune what?

  • Which is most important?
  • How to evaluate importance?

可以:

  • Evaluate by Weight
  • Evaluate by Activation
  • Evaluate by Gradient

After Evaluation?

  • Sort by importance and prune by rank.
  • Prune by handcrafted threshold.
  • Prune by generated threshold.

Evaluate Importance

Eval by weight - sum of L1 norm

【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
如上图,可以进行权重的累加。

Eval by weight - FPGM

【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
每个神经元对应一个 norm ,即“产生的影响”;之后对 norm 进行统计,绘制出类似直方图的东西;然后我们去掉 [ V 1 , T ] [\mathcal{V}_1,\mathcal{T}] [V1​,T]这一部分 norm 对应的神经元,因为其影响力较小。

但是存在问题。
【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
如上,可能分布方差过小,或者,没有 norm 接近0,这样的话,砍掉的神经元会对结果造成不小的影响。

于是,提出 FPGM 。

其思想是:可能会有 Large norm 其对应的几个神经元,这些神经元的 norm 其实在几何上很接近,即其作用是相同的,因此,可以砍掉一些,就保留一个。

【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
可以通过几何中心计算。
【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning

Eval by BN’s γ - Network Slimming

【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
如上,可以使用 γ 等参数来衡量神经元的重要性,而且 γ 是可以通过学习得到的。
【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
如上,对 γ 做 L1-penalty ,就可以方便地决定哪些 γ 不重要,可以用来剪枝。

Eval by 0s after ReLU - APoZ

【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
把输出统计一下,加起来求平均。

如果一个 ReLU 为激活函数的神经元,其输出总是为 0 ,说明其可能不重要。

【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
可以看出,对于第 5 层,其 CONV5-3 的 APoZ 指标高达 93% 。

Lottery Ticket Hypo

Choose which mask?

【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
上面这些是不同的 mask ,比如有用于过滤一开始比较大小,后来也比较大的;等等。

【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
发现,magnitude_increase和Large final效果是比较好的。

Wining Tickets property?

【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
如上,针对“大乐透理论”进行了不同的实验。
【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
发现,还原的值不重要,但是不还原 sign 不可以。

Conclusion

【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
于是,基于以上两个实验,我们可以构造出“最好的”mask。

Rethink v.s. Lottery

上节课老师也提过,专门有一篇文章讲到过,还有篇文章与 Lottery 的文章结果正好互相违背。
【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
实际上,这篇的核心,是想说明剪枝后,重要的是“结构”,而不是“权重”。

So… what’s the result?

【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
在“大乐透”的文章中其实提到了, θ 0 ′ \theta_0' θ0′​必须接近于 θ f i n a l ′ \theta_{final}' θfinal′​,也就是说学习率必须要小。
【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
此外,“大乐透”的文章中只根据 weight 进行了 Pruned ,而没把重点放在结构上的 Pruning 。

 

上一篇:Docker tips


下一篇:docker简要命令