网络量化——Quantized Convolutional Neural Networks for Mobile Devices
论文地址:https://arxiv.org/abs/1512.06473
源码地址:https://github.com/jiaxiang-wu/quantized-cnn
1. 主要思想
- 这篇文章的主要思想其实就是权值共享,也是用聚类的方法(k-means)做共享,只不过不是单个权值共享了,而是分块权值共享(用一个掩码矩阵表示共享的情况),因此可以较少存储空间。 再加上因为共享,所以有些点乘计算只需要计算一次,因为对应的权值块都一样,输入一样的话,输出也一样。所以将部门的点乘转换成了加法操作。 因此也可以做到加速。
2. 性能
- ILSVRC-12上4~6x speed-up.
- 15~20x compression.
- one percentage loss of classification accuracy.
3. 量化原理
- Weighting Matrix 被划分成很多块,然后通过聚类(k-means)得到codebook,聚类操作优化的目标函数是:
也就是说codebook乘上掩码矩阵是可以大致恢复到Weighting Matrix。
4. 量化全连接层
- 就是聚类的目标函数,以及参数的还原。
5. 量化卷积层
- 就是聚类的目标函数,以及参数的还原。
6. 优化目标
- 定义损失函数,用于更新聚类得到的codebook
7. 参数更新方法
- 迭代更新的过程。
8. 计算量
9. 实验结果
10. 结论
- 实践表明聚类在实际应用中的效果还是很明显的,尤其是在全连接层,因为参数非常的冗余,所以几乎不用做fine-tuning,就可以恢复到原来的性能,卷积层可能需要做fine-tuning。