0
本文作者: 汪思穎 | 2017-10-19 09:30 |
雷鋒網(wǎng) AI科級評論按,神經(jīng)網(wǎng)絡(luò)的壓縮和加速現(xiàn)在已經(jīng)成為一個熱門課題,這個領(lǐng)域有多種研究方法,網(wǎng)絡(luò)量化就是其中之一。網(wǎng)絡(luò)量化分為輸入量化和權(quán)值量化兩種。而同時將輸入和權(quán)值量化會造成網(wǎng)絡(luò)精度的大幅下降。在Performance Guaranteed Network Acceleration via High-Order Residual Quantization (性能保障的高階殘差量化網(wǎng)絡(luò)加速方法)一文中,作者針對這個問題,提出了高階殘差量化(HORQ)的方法,既能夠利用網(wǎng)絡(luò)量化帶來的大幅計算加速,又能夠保證網(wǎng)絡(luò)的精度不會大幅下降。
在近期雷鋒網(wǎng) AI研習社的線上分享會上,該論文第一作者李澤凡為我們詳細解讀了HORQ方法及相關(guān)推導(dǎo)過程 。
李澤凡,上海交大 CS 系二年級博士生,師從高文院士和張文軍教授。 研究方向為神經(jīng)網(wǎng)絡(luò)理論、網(wǎng)絡(luò)加速和壓縮。
分享內(nèi)容:
大家好,今天我將為大家?guī)砦覀冊贗CCV 2017上發(fā)表的文章——Performance Guaranteed Network Acceleration via High-Order Residual Quantization (性能保障的高階殘差量化網(wǎng)絡(luò)加速方法)。
這篇文章的研究領(lǐng)域是網(wǎng)絡(luò)加速和網(wǎng)絡(luò)壓縮。主要的網(wǎng)絡(luò)加速和網(wǎng)絡(luò)壓縮方法可以分為如下三種類型,第一種是網(wǎng)絡(luò)剪枝,第二種是低階分解和低階近似,第三種是網(wǎng)絡(luò)量化和二值化。這篇文章的關(guān)注點在網(wǎng)絡(luò)的二值化方法上。
什么是網(wǎng)絡(luò)的二值化/量化?這里以CNN的一個卷積層為例。
卷積層的二值化有兩個優(yōu)點,第一個優(yōu)點是可以實現(xiàn)模型大小的壓縮。
第二點是能加速計算。
接下來介紹這篇文章的motivation,之前的XNOR網(wǎng)絡(luò)雖然能實現(xiàn)58倍的加速,但網(wǎng)絡(luò)精度出現(xiàn)大幅下降。我們希望既能利用二值化帶來的便利,也避免網(wǎng)絡(luò)精度的大幅度下降。
說到這篇文章的方法之前,我們再來看看如何進行網(wǎng)絡(luò)二值化。由淺入深,先來談?wù)勅绾芜M行向量二值化。
向量二值化的目標如下:
求解如下最小二乘估計:
相當于求解如下問題,可以轉(zhuǎn)化為如何最大化X轉(zhuǎn)置乘以H的問題。
求解完H之后再來求解β,求解過程如下:
由此得到前面圖中該最優(yōu)化問題的解析解形式如下:
下面舉個例子,如何運用向量二值化來二值化向量的內(nèi)積。如下是四維向量相乘的例子:
求解X和W內(nèi)積的式子如下所示:
估算值為1.27875,與實際值0.76相比有很大誤差。這也表示,用這樣的方法進行向量二值化會帶來很大誤差,信息損失巨大。
由此,我們的工作提出高階殘差量化,利用泰勒展開的方法,具體如下:
如圖左所示是原來二值化方法的信息損失,我們定義量化殘差的概念來描述信息損失:
由此可以上升到二階殘差量化估計:
下面是從三維空間來看:
以此類推,我們可以定義K維殘差估計:
接下來利用HORQ(高階殘差)方法來逼近我們剛才XW=0.76的例子:
下面求得X的二階量化值,對W不用進行二階二值估計,因為在之前網(wǎng)絡(luò)中對權(quán)值進行二階二值估計對網(wǎng)絡(luò)的影響不是很大,我們只討論對輸入進行高階殘差估計方法。XW的值如下:
最后的結(jié)果如下:
同理作出三階二值估計:
三階量化的結(jié)果如下,在0.81左右。
同理可以做四階二值估計,有一個很有意思的結(jié)論,對于n維向量X,它最多只有n階二值估計。
把這些殘差估計做一個匯總,如下:
這是一些HORQ框架下理論上比較有趣的結(jié)果。結(jié)論一:二值的殘差一定是跟相應(yīng)階數(shù)下的二值向量垂直。
推導(dǎo)過程如下,另外還有一些小結(jié)論:
下面這張圖中可以應(yīng)用上面推導(dǎo)出來的定理。
結(jié)論二:隨著i的增加信息損失是逐漸減少的。
第三個結(jié)論如下圖:
接下來講一下如何將HORQ的方法應(yīng)用到矩陣乘法中。
實際上矩陣乘法可以看成一個行向量和一個列向量的乘積。
話說回來,如何利用HORQ的方法計算卷積層呢?
這里涉及到tensor reshape過程,具體的過程如下:
下面是原始的卷積網(wǎng)絡(luò)以及對權(quán)值和輸入二值化來進行卷積操作,這樣帶來的信息損失巨大。
HORQ提出了下面這樣一個框架模型。
下面是一些實驗結(jié)果,可以看到在一些小數(shù)據(jù)集上都有不錯的表現(xiàn),基本上可以降低一半的誤差。圖中也給出了不同階數(shù)的加速比。
下面是加速比的一些理論分析,加速比與三個因素有關(guān),公式如下:
可以看到參數(shù)之間的相關(guān)關(guān)系:
接下來是一些問題。實際上HORQ網(wǎng)絡(luò)模型依賴于二值化矩陣乘法的計算,需要一些比較合適的框架,二值模型的存儲和載入與浮點數(shù)的存儲和載入不一樣。
論文地址:https://arxiv.org/abs/1708.08687
本次分享的視頻如下:
雷鋒網(wǎng) AI科級評論編輯整理。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。