剪枝量化论文-持续更新

Learning both Weights and Connections for Efficient Neural Networks

han song NIPS 2015

1.1 What the problems the paper mentioned ?(intro)

本文可以得上是deep compression:的开山之作,在移动设备上运行一个完整的大型DNN网络几乎是不可能的,比如运行一个十亿个连接的DNN,仅仅是DRAM的访问功耗就达到了12.8W,通过剪枝量化的方法,在不损失精度的情况下,将网络大小(AlexNet, VGG)等网络的大小压缩了10倍左右。

1.2 Summary of major innovations (intro)

提出了一种剪枝的方法,主要通过三个步骤进行网络压缩

  • 训练网络找到重要的连接(简单的认为权值大的为重要)

  • 丢掉不重要的连接

  • 重新训练网络

    1584887362

1.3 How about the important related works/papers?(related work)

Compressingneural networks with the hashing trick arXiv preprint arXiv:1504.04788, 2015. 主要是讲了剪枝之后如何存储权重矩阵,使得DNN高效的运行。

1.4 What are some intriguing aspects of the paper?(design&implementation)

使用L1正则化与L2正则化得到的结果将会不同,L1正则化在retrain之前的accuracy比较高,但是retrain之后的结果没有L2正则化得到的效果好。

  • L1正则化是指权值向量www中各个元素的绝对值之和

    可以产生稀疏矩阵,即结果中接近0的权值更多。

  • L2正则化指的是权值求平方和之后再求平方更

    L2正则化可以防止过拟合

节点所有的权重连接删除之后,该节点也需要进行删除

1.5 How to test/compare/analyze the results?(experiment)

表中从左到右的分别是原始weight的数量,原来需要浮点运算的次数,原始weight中非0的数量,剪枝之后非0的数量,实际浮点操作的百分比,可以看到,剪枝掉的大部分还是fc的权重,对于卷积操作的权重剪掉的很少。

1584889300

最终得到的是非结构化的网络,无法在通用GPU上进行加速

Deep compression: compressing deep neural networks with pruning, trained quantization and Huffman Coding

han song ICLR 2016

1.1 What the problems the paper mentioned ?(intro)

在上一篇文章的基础上加上了量化,将AlexNet,VGG分别压缩了35倍、49倍,分别加速了3倍、4倍,节能了3倍、7倍。

1584946519

首先通过剪枝的方法,将网络压缩到原来的9-13倍,之后通过量化的方法,将网络压缩到原来的27-31倍,在通过哈夫曼编码的方法,最终将网络压缩到原来的35-49倍。

1.2 Summary of major innovations (intro)

将剪枝跟量化结合再了一起,并使用哈夫曼编码,发现了剪枝跟量化之间互不影响的关系,使得weight得到了极大的压缩。

1.3 How about the important related works/papers?(related work)

从1.1中图可以看到,首先使用剪枝的方法不断的retrain得到一个网络结构,然后再将这个网络结构量化,量化的的过程如下所示。

1584969937

上图解释了量化的过程,使用的k-means聚类方法,将左上weight矩阵分成4类,然后将不同的类别使用聚类中心表示,原矩阵中只保存类别的索引。在权值更新的时候,所有的gradients按照weight矩阵的颜色来分组,同一组的gradient做一个相加的操作,得到是sum乘上learning rate再减去共享的centroids,得到一个fine-tuned centroids。当一次训练完成之后,再重新使用聚类算法,重复以上过程。

再量化到想要的结果之后,再对结果进行哈夫曼编码,又可以进一步压缩weight

通过以上的三个步骤,就可以将weight压缩带原来的40倍左右。

1.5 How to test/compare/analyze the results?(experiment)

该文章评价的比较全面,首先是准确率与压缩比方面。

  • 再不损失精度的情况下,weight最多可以压缩49倍

    1584970761
  • 比较又意思的是,他对conv与fc使用了不同的精度,并且比较了不同情况下的压缩比,P表示只是用剪枝,P+Q表示同时使用剪枝与量化,P+Q+H表示同时使用三种技术,结果如下图所示。

    1584970946
  • 在只是用pruning或者quantization的情况下,压缩的原来的8%的情况之下,精度就开始急剧下降,当时同时使用两种技术的情况下,可以压缩的原来的2%左右才会导致精度的急剧下降。

    1584971094
  • 下面证明了剪枝与量化之间并不会相互的影响,在原来网络上使用量化技术也不会导致精度损失,在剪枝的结果上进行量化与只使用剪枝的网络达到的是同样的效果。

    1584971285
  • 在量化的过程中,聚类中心的确定会对结果造成较大的影响,综合来看,使用均匀分布模型得到量化中心产生的结果最好。

    1584971469

1.6 My summary

这是一篇对非结构化剪枝比较详细的论文,与近似计算是两种不同的技术,量化首先就是不断的训练weight到指定的bits,不存在近似这一说,其次当时我们使用的网络是一个完全的网络,存在大量的冗余,我觉得还是得在剪枝后的网络上进行研究比较有意义。

Dynamic Network Surgery for Efficient DNNs

NIPS 2016 http://arxiv.org/abs/1608.04493

1.1 What the problems the paper mentioned ?(intro)

han song 的工作简单的认为权重小的weight是不重要的,这其实是有问题的,而且剪枝掉的weight与节点可能是错误的剪枝,在这个基础上,作者提出了一种叫做dynamic network的网络,优化了这些问题。实现了LeNet-5 and AlexNet by a factor of 108× and 17.7× respectively

1.2 Summary of major innovations (intro)

剪枝或者不正确的剪枝会导致精度的下降,为了解决这样的问题,加入了反悔的机制,将剪枝掉的一部分weight加入下一轮的训练,一旦发现这些weight是重要的话,将这些weight从新加入网络

1584892718

1.3 What are some intriguing aspects of the paper?(design&implementation)

里面有句话引用一下However, the parameter importance (i.e., the connection importance) in a certain network is extremely difficult to measure because of the mutual influences and mutual activations among interconnected neurons.

由于神经网络的复杂性,因为有其他的连接,有些节点可能是多余的,但是一旦删除了其他的节点,这些节点就成了关键节点。

  • Hadamard product,矩阵的内积,就两个同型矩阵对应元素相乘。
1584929825

表示的是网络的损失函数,Tk表示与Wk同型的矩阵,但是其中的元素只有0,1。0表示删除,1表示在当前这轮迭代是重要的,两个矩阵做内积,对应Tk为0的地方就不保留了。hk表示Wk的连接是否关键。

1584930774

使用梯度下降与拉格朗日乘子法对W进行更新,hk函数更新Tk如下所示。

1584931061

作者还举了一个简单的例子说明情况,如下图所示是一个XOR的网络,T1表示剪枝的情况,白色的表示一直没有没剪枝的weight,绿色的表示被错误剪枝之后加回来的weight,黑色的表示被剪枝掉的weight。值得令人注意的是,图b中,可以看到weight矩阵的第一行与最后一行的值相近,说明两个神经元的功能类似那个,在剪枝的过程中,很好的剪掉了功能类似的神经元,说明工作还是work的。

1584931798

1.5 How to test/compare/analyze the results?(experiment)

比较有意思的是他对比了han song's work训练出的参数与用他们的方法训练出的参数个数,可以看到,相对与han song 方法参数规模要小很多,可以得出的结论就是错误的剪枝会对网络的准确率照成很大影响

1584932351

1.6 My summary

这还是非结构化的剪枝,对硬件的还是不友好。虽然说重新定义了什么是重要的权重,但是的话总感觉使用的方法太简单了,还是简单的认为权重大的比较重要,感觉神经元之间的相互关系还是难以度量,应该使用更加复杂更加系统的方法。

文章还说明了weight之间的相互影响关系,让我觉得误差注入的方法更加复杂,感觉不同的地方肯定是需要不同的误差,想要找到理论化的办法或许很困难,或许需要遍历搜索的方法。

Automl for model compression and acceleration on mobile devices

ECCV 2018

1.1 What the problems the paper mentioned ?(intro)

propose AutoML for Model Compres-sion, achieved 2.7% better accuracy than the hand-crafted model compression policy for VGG-16 on ImageNet. 使用启发式的剪枝方法通常是sub-optimal,使用手动剪枝的方法通常会花费大量的时间。作者还将所做的工作真正的移植到了Android手机上

启发式的剪枝方法通常会有一些规则

  • 尽可能少的修剪在fist layer层的参数,因为他是用来提取低纬的特征
  • 尽可能的再fc层修剪,因为这里所拥有的参数数量是最多的
  • 对于剪枝敏感的层也要进行尽可能少的修剪。

构建了两种压缩模型。

  • resource-constrained对应的是对延迟要求很高的应用
  • accuracy-guaranteed对应的是对精度要求很高,但是对延时要求没有那么高的应用

1.2 Summary of major innovations (intro)

你可能感兴趣的:(剪枝量化论文-持续更新)