日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

一些量化(quantization)技巧

發(fā)布時間:2023/11/28 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一些量化(quantization)技巧 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一些量化(quantization)技巧
對象:對權(quán)重量化,對特征圖量化(神經(jīng)元輸出),對梯度量化(訓(xùn)練過程中)
過程:在inference網(wǎng)絡(luò)前傳,在訓(xùn)練過程(反傳)
一步量化(僅對權(quán)重量化),
兩步量化(對神經(jīng)元與特征圖量化,第一步先對feature map進行量化,第二步再對權(quán)重量化)。

32位浮點和16位浮點存儲的時候,
第一位是符號位,中間是指數(shù)位,后面是尾數(shù)。
英特爾在NIPS2017上,提出了把前面的指數(shù)項共享的方法。
這樣可以把浮點運算,轉(zhuǎn)化為尾數(shù)的整數(shù)定點運算,加速網(wǎng)絡(luò)訓(xùn)練。
分布式訓(xùn)練梯度量化:
對權(quán)重數(shù)值進行聚類,量化的思想非常簡單。
CNN參數(shù)中數(shù)值分布在參數(shù)空間,
通過一定的劃分方法,總是可以劃分稱為k個類別。
通過儲存這k個類別的中心值,或者映射值,壓縮網(wǎng)絡(luò)的儲存。
量化可以分為
Low-Bit Quantization(低比特量化)、
Quantization for General Training Acceleration(總體訓(xùn)練加速量化)和
Gradient Quantization for Distributed Training(分布式訓(xùn)練梯度量化)。
由于在量化、特別是低比特量化實現(xiàn)過程中,由于量化函數(shù)的不連續(xù)性,在計算梯度的時候,會產(chǎn)生一定的困難。
對此,阿里巴巴把低比特量化,轉(zhuǎn)化成ADMM可優(yōu)化的目標(biāo)函數(shù),從而由ADMM來優(yōu)化。
另一個角度思考,使用哈希把二值權(quán)重量化,再通過哈希求解。
用聚類中心數(shù)值,代替原權(quán)重數(shù)值,配合Huffman編碼,具體可包括標(biāo)量量化或乘積量化。
如果只考慮權(quán)重自身,容易造成量化誤差很低,但分類誤差很高的情況。
Quantized CNN優(yōu)化目標(biāo)是重構(gòu)誤差最小化。
可以利用哈希進行編碼,映射到同一個哈希桶中的權(quán)重,共享同一個參數(shù)值。

聚類例子:
例如下面這個矩陣。
1.2 1.3 6.1
0.9 0.7 6.9
-1.0 -0.9 1.0
設(shè)定類別數(shù)k=3,通過kmeans聚類。得到:
A類中心: 1.0 , 映射下標(biāo): 1
B類中心: 6.5 , 映射下標(biāo): 2
C類中心: -0.95 , 映射下標(biāo): 3

儲存矩陣可以變換為(距離哪個中心近,就用中心的下標(biāo)替換):
1  1  2
1  1  2
3  3  1

提出需要對量化后的值進行重訓(xùn)練,挽回一點丟失的識別率。
基本上所有壓縮方法都有損,重訓(xùn)練還是比較必要的。
深度神經(jīng)網(wǎng)絡(luò)壓縮 Deep Compression
為了進一步壓縮網(wǎng)絡(luò),考慮讓若干個權(quán)值共享同一個權(quán)值,需要存儲的數(shù)據(jù)量也大大減少。
采用kmeans算法來將權(quán)值進行聚類,在每一個類中,所有的權(quán)值共享該類的聚類質(zhì)心,
最終存儲一個碼書和索引表。

1.對權(quán)值聚類
采用kmeans聚類算法,通過優(yōu)化所有類內(nèi)元素,到聚類中心的差距(within-cluster sum of squares ),確定最終的聚類結(jié)果。
2. 聚類中心初始化
常用的初始化,包括3種:
a) 隨機初始化。
即從原始數(shù)據(jù),隨機產(chǎn)生k個觀察值,作為聚類中心。
b) 密度分布初始化。
現(xiàn)將累計概率密度CDF的y值,分布線性劃分,
根據(jù)每個劃分點的y值,找到與CDF曲線的交點,再找到該交點對應(yīng)的x軸坐標(biāo),作為初始聚類中心。
c) 線性初始化。
將原始數(shù)據(jù)的最小值到最大值之間的線性劃分,作為初始聚類中心。
三種初始化方式的示意圖,如下所示:

由于大權(quán)值比小權(quán)值更重要(參加HanSong15年論文),線性初始化方式,能更好地保留大權(quán)值中心,文中采用這一方式,后面的實驗結(jié)果,驗證了這個結(jié)論。
3. 前向反饋和后項傳播
前向時需要將每個權(quán)值,用對應(yīng)的聚類中心代替,后向計算每個類內(nèi)的權(quán)值梯度,
將梯度和反傳,用來更新聚類中心。
如圖:

共享權(quán)值后,就可以用一個碼書和對應(yīng)的index來表征。
假設(shè)原始權(quán)值用32bit浮點型表示,量化區(qū)間為256,即8bit,共有n個權(quán)值,量化后需要存儲n個8bit索引和256個聚類中心值,可以計算出壓縮率compression ratio: r = 32*n / (8*n + 256*32 )≈4 如果采用8bit編碼,至少能達到4倍壓縮率。

參考鏈接:
https://github.com/Ewenwan/MVision/tree/master/CNN/Deep_Compression/quantization#1-%E6%B7%B1%E5%BA%A6%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E5%8E%8B%E7%BC%A9-deep-compression

總結(jié)

以上是生活随笔為你收集整理的一些量化(quantization)技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。