【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning
2021/6/22 23:27:58
本文主要是介绍【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-notes
本节内容综述- 本节课继续由助教Arvin Liu讲解,内容为 Network Pruning 。
- 首先来复习一下 Neuron Pruning in DNN 。
- Main Question: Prune what? Evaluation. After Evaluation? Prune? Sort? Threshold or Rank?
- Evaluate Importance. 以什么为衡量基准。介绍了不少方法。
- 接着,复习了一下 Lottery Ticket Hypo 。
- Prune what? 考虑到,会不会有个 weight 一开始比较大,其还具有意义吗?而一开始比较小,后来比较的的 weight 会不会更有意义呢?有人做了这个研究。见 Choose which mask?
- Wining Tickets property?
- Rethink v.s. Lottery. 上节课老师也提过,专门有一篇文章讲到过,还有篇文章与 Lottery 的文章结果正好互相违背。
文章目录
- 本节内容综述
- 小细节
-
-
- Neuron Pruning in DNN
- Main Question: Prune what?
- Evaluate Importance
-
- Eval by weight - sum of L1 norm
- Eval by weight - FPGM
- Eval by BN's γ - Network Slimming
- Eval by 0s after ReLU - APoZ
- Lottery Ticket Hypo
-
- Choose which mask?
- Wining Tickets property?
- Conclusion
- Rethink v.s. Lottery
-
- So... what's the result?
-
小细节
Neuron Pruning in DNN
如上图,减少一个神经元的效果。
如上图,对于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
如上图,可以进行权重的累加。
Eval by weight - FPGM
每个神经元对应一个 norm ,即“产生的影响”;之后对 norm 进行统计,绘制出类似直方图的东西;然后我们去掉 [ V 1 , T ] [\mathcal{V}_1,\mathcal{T}] [V1,T]这一部分 norm 对应的神经元,因为其影响力较小。
但是存在问题。
如上,可能分布方差过小,或者,没有 norm 接近0,这样的话,砍掉的神经元会对结果造成不小的影响。
于是,提出 FPGM 。
其思想是:可能会有 Large norm 其对应的几个神经元,这些神经元的 norm 其实在几何上很接近,即其作用是相同的,因此,可以砍掉一些,就保留一个。
可以通过几何中心计算。
Eval by BN’s γ - Network Slimming
如上,可以使用 γ 等参数来衡量神经元的重要性,而且 γ 是可以通过学习得到的。
如上,对 γ 做 L1-penalty ,就可以方便地决定哪些 γ 不重要,可以用来剪枝。
Eval by 0s after ReLU - APoZ
把输出统计一下,加起来求平均。
如果一个 ReLU 为激活函数的神经元,其输出总是为 0 ,说明其可能不重要。
可以看出,对于第 5 层,其 CONV5-3 的 APoZ 指标高达 93% 。
Lottery Ticket Hypo
Choose which mask?
上面这些是不同的 mask ,比如有用于过滤一开始比较大小,后来也比较大的;等等。
发现,magnitude_increase和Large final效果是比较好的。
Wining Tickets property?
如上,针对“大乐透理论”进行了不同的实验。
发现,还原的值不重要,但是不还原 sign 不可以。
Conclusion
于是,基于以上两个实验,我们可以构造出“最好的”mask。
Rethink v.s. Lottery
上节课老师也提过,专门有一篇文章讲到过,还有篇文章与 Lottery 的文章结果正好互相违背。
实际上,这篇的核心,是想说明剪枝后,重要的是“结构”,而不是“权重”。
So… what’s the result?
在“大乐透”的文章中其实提到了, θ 0 ′ \theta_0' θ0′必须接近于 θ f i n a l ′ \theta_{final}' θfinal′,也就是说学习率必须要小。
此外,“大乐透”的文章中只根据 weight 进行了 Pruned ,而没把重点放在结构上的 Pruning 。
这篇关于【李宏毅2020 ML/DL】P52 Network Compression - Network Pruning的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享