一、大纲
emmm,硬件及算法加速部分是博主实验室的主要研究领域,总算可以多说点体会而不是疯狂翻译和贴图了。
主讲人是韩松,清华电子系本科,Stanford Phd,深鉴科技创始人之一,主要工作在深度学习的算法和硬件。
内容主要分为四个部分(2x2):算法优化(训练、推理),硬件优化(训练、推理)。也是科研的四个大方向。
二、第一部分:Algorithms for Efficient Inference
这一大类可以分为6个思路:
1. Pruning;
2. Weight Sharing;
3. Quantization;
4. Low Rank Approximation;
5. Binary/Ternary Net;
6. Winograd Transformation.
内容和一篇模型压缩的综述论文比较相似,想要参看具体一些前沿工作的内容,可以参考文献:《Model Compression and Acceleration for Deep Neural Networks》
1、Pruning (应该可以翻译为 剪枝)
1989由LeCun提出。剪枝的过程同样有生物学上的支持,出生时人脑有50T的突触、在一岁的时候达到1000T,然后到了成年以后降低为500T。
已有很多实验证明,神经网络结构是存在大量的冗余的,从信息论上来说就是网络结构可以有效表示的信息量远超所需要学习的信息量,所以通过剪掉网络中信息量很小的连接,对于网络精度几乎没有降低,同时还可以降低模型复杂度、预防过拟合等好处。
过程是:训练连接、剪掉多余连接、训练权重。然后2、3步循环。
剪枝过程会改变权值的分布。
2、权值共享 Weight Sharing
现在通过剪枝,有了更少的参数量,那么现在我们考虑更少的bit per parameter。
2.09、2.12、1.92、1.87 -> 2.0 我们的想法就是Cluster the Weights。
举个栗子:
对于推理过程,我们对weights 进行k-means clustering,建立一个2bit的字典book索引,以及存储他们的均值。(减少16X的存储空间)
对于反向传播过程,我们将有同样的index的梯度,求和并更新Centroids的值。