天天看點

上海交大CS系博士生李澤凡:利用高階殘差量化(HORQ)方法進行網絡加速

<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>