參數量化就是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):@絕版臭鹹魚
微信公衆號:@臭鹹魚
轉載請註明出處,歡迎討論和交流!