欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Targeted Dropout---Hinton

程序员文章站 2022-07-13 10:49:04
...

论文地址:https://openreview.net/pdf?id=HkghWScuoQ
源代码:https://github.com/for-ai/TD/tree/master/models

这篇 Targeted Dropout 论文接受为 NIPS/NeurIPS 2018 关于紧凑神经网络的 Workshop,该研讨会关注构建紧凑和高效的神经网络表征。该研讨会关注构建紧凑和高效的神经网络表征。具体而言,其主要会讨论剪枝、量化和低秩近似等神经网络压缩方法;神经网络表示和转换格式;及使用 DNN 压缩视频和媒体的方式。
Workshop地址:https://nips.cc/Conferences/2018/Schedule?showEvent=10941

研究者新提出来的 Targeted Dropout 基于这样的观察:Dropout 正则化在每次前向传播中只**局部神经元,因此它本身在训练过程中会增加稀疏性属性。这鼓励神经网络学习一种对稀疏化具有鲁棒性的表示,即随机删除一组神经元。作者假设如果我们准备做一组特定的剪枝稀疏化,那么我们应用 Dropout 到一组特定的神经元会有更好的效果,例如一组数值接近为零的神经元。

作者称这种方式为 Targeted Dropout,其主要思想是根据一些快速逼近权重重要性的度量对权重或神经元进行排序,并将 Dropout 应用于那些重要性较低的元素。与正则化 Dropout 观察结果相似,作者表示该方法能鼓励神经网络学习更重要的权重或神经元。换而言之,神经网络学习到了如何对剪枝策略保持足够的鲁棒性。

相对于其它方法,Targeted Dropout 的优点在于它会令神经网络的收敛对剪枝极其鲁棒。它同时非常容易实现,使用 TensorFlow 或 PyTorch 等主流框架只需要修改两行代码。此外,该网络非常明确,我们所需要的稀疏性程度都可以自行设定。

评审员对该方法总体是肯定的,但对其收敛性,也提出了质疑。由于对神经元(权重)重要性的估计,是基于 Dropout(剪枝)前的情况,而不是实际 Dropout(剪枝之后,这样估值误差有可能在优化迭代过程中累积,最终导致发散的结果。论文作者承诺,在最终版的附录中,会给出更详细的证明。
我们发现对 Dropout 重要的修正主要是如下代码。其中模型会对权重矩阵求绝对值,然后在根据 targ_rate 求出要对多少「不重要」的权重做 Dropout,最后只需要对所有权重的绝对值进行排序,并 Mask 掉前面确定具体数量的「不重要」权重。

norm = tf.abs(w)

 idx = tf.to_int32(targ_rate * tf.to_float(tf.shape(w)[0]))

 threshold = tf.contrib.framework.sort(norm, axis=0)[idx]

 mask = norm < threshold[None, :]

确定哪些权重不重要后,接下来的 Dropout 操作就和和一般的没什么两样了。
该博客由机器之心相关推文整理而得,侵删!