<b>本文講的是上海交大CS系博士生李澤凡:利用高階殘差量化(HORQ)方法進行網絡加速,</b>
<b></b>
神經網絡的壓縮和加速現在已經成為一個熱門課題,這個領域有多種研究方法,網絡量化就是其中之一。網絡量化分為輸入量化和權值量化兩種。而同時将輸入和權值量化會造成網絡精度的大幅下降。在Performance Guaranteed Network Acceleration via High-Order Residual Quantization (性能保障的高階殘差量化網絡加速方法)一文中,作者針對這個問題,提出了高階殘差量化(HORQ)的方法,既能夠利用網絡量化帶來的大幅計算加速,又能夠保證網絡的精度不會大幅下降。
在近期雷鋒網 AI研習社的線上分享會上,該論文第一作者李澤凡為我們詳細解讀了HORQ方法及相關推導過程 。
李澤凡,上海交大 CS 系二年級博士生,師從高文院士和張文軍教授。 研究方向為神經網絡理論、網絡加速和壓縮。
分享内容:
大家好,今天我将為大家帶來我們在ICCV 2017上發表的文章——Performance Guaranteed Network Acceleration via High-Order Residual Quantization (性能保障的高階殘差量化網絡加速方法)。
這篇文章的研究領域是網絡加速和網絡壓縮。主要的網絡加速和網絡壓縮方法可以分為如下三種類型,第一種是網絡剪枝,第二種是低階分解和低階近似,第三種是網絡量化和二值化。這篇文章的關注點在網絡的二值化方法上。
什麼是網絡的二值化/量化?這裡以CNN的一個卷積層為例。
卷積層的二值化有兩個優點,第一個優點是可以實作模型大小的壓縮。
第二點是能加速計算。
接下來介紹這篇文章的motivation,之前的XNOR網絡雖然能實作58倍的加速,但網絡精度出現大幅下降。我們希望既能利用二值化帶來的便利,也避免網絡精度的大幅度下降。
說到這篇文章的方法之前,我們再來看看如何進行網絡二值化。由淺入深,先來談談如何進行向量二值化。
向量二值化的目标如下:
求解如下最小二乘估計:
相當于求解如下問題,可以轉化為如何最大化X轉置乘以H的問題。
求解完H之後再來求解β,求解過程如下:
由此得到前面圖中該最優化問題的解析解形式如下:
下面舉個例子,如何運用向量二值化來二值化向量的內積。如下是四維向量相乘的例子:
求解X和W內積的式子如下所示:
估算值為1.27875,與實際值0.76相比有很大誤差。這也表示,用這樣的方法進行向量二值化會帶來很大誤差,資訊損失巨大。
由此,我們的工作提出高階殘差量化,利用泰勒展開的方法,具體如下:
如圖左所示是原來二值化方法的資訊損失,我們定義量化殘差的概念來描述資訊損失:
由此可以上升到二階殘差量化估計:
下面是從三維空間來看:
以此類推,我們可以定義K維殘差估計:
接下來利用HORQ(高階殘差)方法來逼近我們剛才XW=0.76的例子:
下面求得X的二階量化值,對W不用進行二階二值估計,因為在之前網絡中對權值進行二階二值估計對網絡的影響不是很大,我們隻讨論對輸入進行高階殘差估計方法。XW的值如下:
最後的結果如下:
同理作出三階二值估計:
三階量化的結果如下,在0.81左右。
同理可以做四階二值估計,有一個很有意思的結論,對于n維向量X,它最多隻有n階二值估計。
把這些殘差估計做一個彙總,如下:
這是一些HORQ架構下理論上比較有趣的結果。結論一:二值的殘差一定是跟相應階數下的二值向量垂直。
推導過程如下,另外還有一些小結論:
下面這張圖中可以應用上面推導出來的定理。
結論二:随着i的增加資訊損失是逐漸減少的。
第三個結論如下圖:
接下來講一下如何将HORQ的方法應用到矩陣乘法中。
實際上矩陣乘法可以看成一個行向量和一個列向量的乘積。
話說回來,如何利用HORQ的方法計算卷積層呢?
這裡涉及到tensor reshape過程,具體的過程如下:
下面是原始的卷積網絡以及對權值和輸入二值化來進行卷積操作,這樣帶來的資訊損失巨大。
HORQ提出了下面這樣一個架構模型。
下面是一些實驗結果,可以看到在一些小資料集上都有不錯的表現,基本上可以降低一半的誤差。圖中也給出了不同階數的加速比。
下面是加速比的一些理論分析,加速比與三個因素有關,公式如下:
可以看到參數之間的相關關系:
接下來是一些問題。實際上HORQ網絡模型依賴于二值化矩陣乘法的計算,需要一些比較合适的架構,二值模型的存儲和載入與浮點數的存儲和載入不一樣。
<b>本文作者:Non</b>