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