本次介绍的是一种压缩神经网络模型大小的方法,来自《2014 arxiv:Compressing Deep Convolutional Networks using Vector Quantization》。该方法和很多之前的神经网络压缩方法一样,基本只对全连接层有效,因此这里权作了解。
由论文名可以看出,主要是对密集权重矩阵进行量化编码来实现压缩。
论文做了很多种量化方法的对比试验,不过都只针对全连接层,至于为什么不处理卷积层,大家可以考虑一下。下面就简单介绍一下这些方法。
SVD分解
全连接层的权重矩阵记作 \(W\in R^{m\times n}\) ,首先对 \(W\) 进行 \(SVD\) 分解,如下:
\(W=USV^T\)
为了能够用两个较小的矩阵来表示 \(W\) ,我们可以取奇异值的前 \(K\) 个分量。于是,W可以通过下式重建:
\(\hat W=\hat U\hat S{\hat V}^{T} ,其中\hat U\in R^{m\times k}\quad \hat V\in R^{n\times k}\)
我们唯一需要保存的就是3个比较小的矩阵 \(U,S,V\) ,我们可以简单算一下压缩比为 \(mn/k(m+n+1)\)
二值化
这种量化方法的想法来自于Dropconnect,量化如下: