参数量化就是Parameter Quantization。
-
用更少的bit表示一个value
比如说本来用32位表示一个weight,现在用16位表示一个weight,这样就缩小了一半。
-
Weight Clustering
根据weight的值对weight进行聚类,每个类中的weight都用同一个value(比如该类中所有weight的平均值)表示。每个类有个id,2个bit就可以表示4个类的id(再进一步还可以使用哈夫曼编码),在存储时只需要存储每个weight所属的类的id以及每个类对应的value即可。
因为每个类中的weight都用了同一个value表示,所以模型会有一些精度损失。
-
Binary Weights
weight的值只有±1。
有不少研究者提出直接训练一个Binary Network,最早的是Binary Connect(http://arxiv.org/abs/1511.00363),其它的还有Binary Network(https://arxiv.org/abs/1602.02830)、XNOR-Net(https://arxiv.org/abs/1603.05279)。
Binary Connect在训练中有2个分别使用real value和binary value的model,暂称为R和B。首先初始化R的参数,然后找到和R最接近的B,再使用B的梯度更新R的参数,然后再找到和R最接近的B,循环该过程直到停止,最后就使用最终的B。
Binary Connect其实像是一种Regularization,它约束weight的值必须是±1。
Github(github.com):@chouxianyu
Github Pages(github.io):@臭咸鱼
知乎(zhihu.com):@臭咸鱼
博客园(cnblogs.com):@臭咸鱼
B站(bilibili.com):@绝版臭咸鱼
微信公众号:@臭咸鱼
转载请注明出处,欢迎讨论和交流!