神经网络模型量化论文小结
发布时间:2018-07-22 13:25,
浏览次数:278
现在“边缘计算”越来越重要,真正能落地的算法才是有竞争力的算法。随着卷积神经网络模型堆叠的层数越来越多,网络模型的权重参数数量也随之增长,专用硬件平台可以很好的解决计算与存储的双重需求,但目前还不成熟,存在些亟待解决的问题,没能大规模商用。对模型进行参数量化的主要目的是减小模型存储体积,加速运算,能够将算法应用在通用的嵌入式移动平台。陆陆续续阅读了关于模型量化的论文,通过这篇博客做一个小结吧,欢迎交流讨论。
模型量化目前主要有两个究方向,一个研究方向是权值共享,基本思想是多个网络连接的权重共用一个权值,还有一个是权值精简,既权值的低比特表示。
1、权值共享
主要代表性研究工作如下:
1.1 聚类方式共享
文献【1】是深鉴科技的韩松大佬写的,论文质量非常高,是ICLR2016的best
paper,有幸使用过他们公司的定点工具,虽然精度有一定损失,但还是可以接受的。论文对每一层weight矩阵利用K-means聚类算法聚类成若干个cluster,用每个cluster的聚类中心值代表该cluster的权重,由于同一cluster的weight共享一个权重大小,因此我们只需要存储权值的cluster的index即可,通过查表获取该index对应的value,为了减少精度损失,再通过训练微调的方式对权重进行补偿,所有的梯度信息按照权重矩阵之前的分组进行。下图很形象的说明了聚类量化与训练过程
文献【2】提出一个量化神经网络架构(Q-CNN),基于k-means聚类算法加速和压缩模型的卷积层和全连接层,通过减小每层输出响应的估计误差可实现更好的量化结果,并提出一种有效的训练方案抑制量化后的多层累积误差 。
1.2 哈希方式共享
文献【3】设 计 了 一 种新型网络架构hashnet,利用哈希函数随机将网络连接权重分组到哈希桶(hash
bucket),每个哈希桶内的网络连接共享相同的权重参数,该方法与特征哈希类似(feature
hashing),将高维数据降到低维空间,该方法可显著减小模型体积,并对输出精度影响较小。
2、权值精简
我们知道,现在神经网络的weight和bias都是用单精度4字节的float32或者双精度8字节的float64的表示,为了降低模型的存储空间而达到模型压缩加速的目的,越来越多的学者企图通过更少的bit位来表示模型实际的浮点型权值。
这种权值精简的方法之所以有效,从广义上讲