引言
網(wǎng)絡壓縮在AI加速中可以說起到“四兩撥千斤”的作用,網(wǎng)絡參數(shù)的減小不僅僅降低了存儲和帶寬,而且使計算邏輯簡單,降低了LUT資源。從本篇開始,我們就一起挖掘一下網(wǎng)絡壓縮算法的類型,原理,實現(xiàn),以及效果。寫這類算法類文章,一是學習,二是希望能夠令更多做FPGA的人,不再將眼光局限于RTL,仿真,調(diào)試,關(guān)心一下算法,定會發(fā)現(xiàn)FPGA的趣味和神通。
網(wǎng)絡結(jié)構(gòu)
二值化網(wǎng)絡,顧名思義,就是網(wǎng)絡參數(shù)只有兩個數(shù)值,這兩個數(shù)值是+1和-1。在DNN網(wǎng)絡中主要是乘和加法運算,如果參數(shù)只有兩個數(shù)值,那么乘法的實現(xiàn)就很簡單,僅僅需要符號判斷就可以了。比如輸入數(shù)據(jù)A,如果和1乘,不變;和-1乘,變?yōu)樨摂?shù)。這用LUT很好實現(xiàn),還節(jié)省了DSP的使用。相對于單精度浮點數(shù),存儲減小16倍,帶寬也增加16倍。在計算單元數(shù)目相同情況下,比浮點運算速率提高了16倍。當然由于乘法和加法使用LUT數(shù)目減少,計算單元也會成倍增長,總的下來計算速率將大幅度提高。
網(wǎng)絡訓練中使用的都是浮點類型參數(shù),這樣做是為了保證訓練的精度。那么這些浮點類型的參數(shù)如何量化的只有兩個數(shù)值呢?論文中提出了兩種方法,第一種是粗暴型,直接根據(jù)權(quán)重參數(shù)的正負,強行分出1和-1。即:
![](https://file.elecfans.com/web1/M00/C8/58/pIYBAF9uA-yAaeLJAAAOZjGPqWY701.png)
這里wb是二值參數(shù),w是實際權(quán)重參數(shù)。量化可以看做在原來數(shù)據(jù)基礎(chǔ)上增加了噪聲,導致數(shù)據(jù)間最短距離變大。比如原來數(shù)據(jù)的分辨率為R0,如果增加一個高斯噪聲s,那么其分辨率就增大了。這樣在DNN中矩陣乘法中也引入了噪聲,為:
![](https://file.elecfans.com/web1/M00/C8/58/pIYBAF9uA-2AFHCjAAAMCPNP6Mw922.png)
數(shù)據(jù)分辨率的降低導致了有效信息的損失,但是在大量權(quán)重情形下,平均下來可以補償一定的信息損失,即如果有:
![](https://file.elecfans.com/web1/M00/C7/E3/o4YBAF9uA-6AeQlGAAAF2TIuqgY511.png)
那么在權(quán)重無窮多時,有:
![](https://file.elecfans.com/web1/M00/C7/E3/o4YBAF9uA--Afa3SAAAL6rEJviI864.png)
圖1.1 數(shù)據(jù)增加了噪聲,導致數(shù)據(jù)分辨率降低
另外一種是隨機型,即以一定概率來選擇1和-1,論文中采用如下公式:
其中“hard sigmoid”函數(shù)為:
![](https://file.elecfans.com/web1/M00/C8/58/pIYBAF9uA_iAREWpAAASXJVoWK4961.png)
這實際上是對sigmoid函數(shù)進行了線性化,這樣做的目的可以減少計算量。因為線性計算只有一個乘法和加法,而sigmoid函數(shù)有指數(shù)計算。使用隨機量化更能均衡化量化引入的噪聲,消除噪聲造成的信息損失。粗暴型量化可能因為權(quán)重參數(shù)分布不同而發(fā)生較大的“不平衡”,比如負數(shù)權(quán)重較多,那么導致-1遠遠多于+1,這樣就會出現(xiàn)權(quán)重偏移在負方向多一些。如果使用隨機概率模型,即使負數(shù)權(quán)重多,也會有一定概率出現(xiàn)+1,彌補了+1較少的情況。
圖1.2 粗暴型和隨機型量化:隨機型量化的分布更加均勻
訓練過程
訓練過程主要包括三個部分:
1) 前向傳播:給定輸入數(shù)據(jù),一層一層的計算,前一層激活函數(shù)的結(jié)果作為下一層的輸入;
2) 反向傳播:計算每一層代價函數(shù)的梯度,從最后一層開始計算,反向計算前一層,一直到計算出第一層的梯度值;
3) 更新參數(shù):根據(jù)計算出來的梯度和前一時刻的參數(shù),計算出下一時刻的參數(shù)。
計算過程可以用圖2.1表示:
圖2.1 訓練過程
圖2.2 訓練算法
每次量化發(fā)生在計算出浮點參數(shù)之后,然后在進行前向計算,得到代價函數(shù),進行反向計算代價函數(shù)梯度,接著利用前一刻參數(shù)計算出下一刻數(shù)據(jù),不斷迭代直到收斂。
結(jié)果
論文在三個數(shù)據(jù)集上進行了測試:MNIST,CIFAR-10,SVHN。
MNIST有6萬張內(nèi)容為0-9數(shù)字的訓練圖片,以及1萬張用于測試的28x28大小的灰度圖片。論文研究了兩種量化方式下訓練時間,以及測試出錯率。從中看出隨機量化出錯率更低,更適合用于二值量化。
圖3.1 不同量化方式下的訓練時間以及測試錯誤率:點線表示訓練誤差,連續(xù)線表示測試錯誤率
CIFAR-10圖片內(nèi)容比MNIST復雜一些,包含了各種動物。有5萬張訓練圖片和1萬張32x32大小的測試圖片。
SVHN也是0-9數(shù)字圖片,含有604K張訓練圖片和26K的32x32大小的測試圖片。以上三種數(shù)據(jù)集下使用二值網(wǎng)絡的結(jié)果如下圖:
圖3.2 三種數(shù)據(jù)集結(jié)果(錯誤率)比較
從中看出二值網(wǎng)絡錯誤率幾乎和其他網(wǎng)絡模型差不多,但是其大大壓縮了網(wǎng)絡模型。
結(jié)論
二值化網(wǎng)絡中參數(shù)只用兩個數(shù)值表示,實際上僅僅考慮了權(quán)重的符號作用。在三種小型簡單的數(shù)據(jù)集上表現(xiàn)良好。
文獻
1 Matthieu Courbariaux, Y.B., Binary Connect Training Deep Neural Networks with binary weights during propagations. ArXiv preprint, 2016.
編輯:hfy
-
FPGA
+關(guān)注
關(guān)注
1631文章
21806瀏覽量
606646 -
算法
+關(guān)注
關(guān)注
23文章
4633瀏覽量
93466
發(fā)布評論請先 登錄
相關(guān)推薦
什么是BP神經(jīng)網(wǎng)絡的反向傳播算法
EE-257:面向Blackfin處理器的引導壓縮/解壓縮算法
![EE-257:面向Blackfin處理器的引導<b class='flag-5'>壓縮</b>/解<b class='flag-5'>壓縮</b><b class='flag-5'>算法</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
【「從算法到電路—數(shù)字芯片算法的電路實現(xiàn)」閱讀體驗】+一本介紹基礎(chǔ)硬件算法模塊實現(xiàn)的好書
【BearPi-Pico H3863星閃開發(fā)板體驗連載】LZO壓縮算法移植
壓縮算法的類型和應用
Huffman壓縮算法概述和詳細流程
精準捕捉拉曼信號——時間門控拉曼光譜系統(tǒng)實驗結(jié)果深度解析
![精準捕捉拉曼信號——時間門控拉曼光譜系統(tǒng)實驗<b class='flag-5'>結(jié)果</b>深度<b class='flag-5'>解析</b>](https://file1.elecfans.com//web2/M00/03/2F/wKgaoma6xxaAOh7_AADheWF13rs780.png)
卷積神經(jīng)網(wǎng)絡的壓縮方法
bp神經(jīng)網(wǎng)絡算法的基本流程包括哪些
神經(jīng)網(wǎng)絡反向傳播算法的原理、數(shù)學推導及實現(xiàn)步驟
神經(jīng)網(wǎng)絡反向傳播算法原理是什么
【RTC程序設計:實時音視頻權(quán)威指南】音視頻的編解碼壓縮技術(shù)
基于門控線性網(wǎng)絡(GLN)的高壓縮比無損醫(yī)學圖像壓縮算法
![基于門控線性<b class='flag-5'>網(wǎng)絡</b>(GLN)的高<b class='flag-5'>壓縮</b>比無損醫(yī)學圖像<b class='flag-5'>壓縮</b><b class='flag-5'>算法</b>](https://file1.elecfans.com/web2/M00/C8/41/wKgaomYTVt2ARP8PAABcqXVbPVo388.png)
基于FPGA的網(wǎng)絡加速設計實現(xiàn)
![基于FPGA的<b class='flag-5'>網(wǎng)絡</b>加速設計<b class='flag-5'>實現(xiàn)</b>](https://file1.elecfans.com/web2/M00/C7/59/wKgZomYTTVyAACSqAAA6ZYgnYgM599.png)
評論