天天看點

【論文閱讀筆記】Incremental Network Quantizatio:Towards Lossless CNNs with Low-Precision Weights

全文概括

  先前的量化方法(同時量化所有的weight)都太粗暴了,這導緻了量化損失嚴重,作者提出一種

分組量化-分組re-train

的方法來拟補量化帶來的損失。

  INQ方法步驟:

  1. 将為量化的參數分成 待量化/待re-train組(用超參數定義每次量化的百分比,百分比會自動在參數中找到一個臨界點,絕對值大于這個臨界點的分為待量化組 ,因為作者認為大值比小值重要,讓小的re-train。這個觀點,在選擇fixed-point的IL和FL劃分時,也是這樣認為的。)
  2. 量化待量化組
  3. retrain 待retrain組

  INQ目前隻研究了量化權重的模式(量化activation待研究中,目前在VGG16成功展示)

  其結果表示:量化效果好(包括二進制/三元量化),accuracy不降反升(隻降一點點 );其權重量化限制為 2n,讓乘法操作可變作移位操作

(注意,本論文的該方法,隻是将權重進行量化,對activation并未操作,仍是floating point。是以這種移位操作,隻是想象的,并未實際運用)。

  這種方法使量化不會産生大的損失,但加劇了實驗者對超參調整經驗的要求,因為每次量化部分參數都要調整到最好。

前言

  INQ旨在于将任意以訓練好的高精度CNN模型量化成

參數限制為2n或0的低精度版本。

INQ方法可以分為三個互相依賴的部分:

weight partition,group-wise quantization,re-training.

  

weight parition

将CNN模型的每層劃分成不想交的兩組,

(group-wise)

一組進行量化(通過可變長度編碼方法),

(re-train)

另一組進行re-train來補償量化損失。

  具體來說,在5-bit量化中

(可變長度編碼:1位用于表示零值,其餘4位最多表示16位不同的值,用于表示2的幂)

【個人認為,這個零位專門标記出來,是為了友善判斷 0和2n,即2n帶來的移位操作計算優勢】

  結果展示:

  1. 對于AlexNet,VGG-16,GoogleNeet 和 ResNets,用5-bit量化,可以提高32-bit全精度的精确度;
  2. INQ讓每次re-train更容易收斂,每次預訓練不到8個epochs就能得到5-bit的無損模型;
  3. 以ResNet-18為例,用4-bit,3-bit 和 2-bit的三元權重都能改善或者非常接近32-bit 浮點數的基準線

Incremental Network Quantization

Weight Quantization with Variable-Lnegth Encoding

  量化後的權重 W l ^ \hat{W_l} Wl​^​表示第 l l l層的權重,其取值限制為 P l = { ± 2 n 1 , . . . , ± 2 n 2 , 0 } P_l = \{\pm2^{n_1},...,\pm2^{n_2},0\} Pl​={±2n1​,...,±2n2​,0}。其中, P l P_l Pl​表示第 l l l層的參數, n 1 , n 2 n_1,n_2 n1​,n2​是兩個整數,并定義 n 2 &lt; n 1 n_2&lt;n_1 n2​<n1​。

  是以,

量化的關鍵是如何如何找到 n 1 n_1 n1​和 n 2 n_2 n2​

(因為bit-width是我們定義的超參數,且有 ( n 1 − n 2 + 1 ) ∗ 2 = 2 b − 1 (n_1-n_2+1)*2=2^{b-1} (n1​−n2​+1)∗2=2b−1,其中,乘2是表示正負号,b-1是因為有一個bit去标記零值。是以,其實我們隻要找到 n 1 n_1 n1​或者 n 2 n_2 n2​就行,另一個可以計算得出)。

  我們從以下公式得到 n 1 n_1 n1​: n 1 = f l o o r ( l o g 2 4 s 3 ) s = m a x ( a b s ( W l ) ) n_1=floor(log_2\frac{4s}3)\\s=max(abs(W_l)) n1​=floor(log2​34s​)s=max(abs(Wl​))

我們的 b − 1 b-1 b−1個bit得到的數字,是作為幂的指數部分存在的。

  然後就近選擇量化的結果。

Incremental Quantization Strategy

【論文閱讀筆記】Incremental Network Quantizatio:Towards Lossless CNNs with Low-Precision Weights

  不斷增大量化的比例,量化比例中未量化的參數(從大到小量化),re-train不在比例中的參數。

  在量化時,用一個mask數組

Tl

來标記哪些是還沒被量化的,即re-train時需要更新的部分(待量化部分, T l ( i , j ) = 0 T_l(i,j)=0 Tl​(i,j)=0;待re-trained部分, T l ( i , j ) = 1 T_l(i,j)=1 Tl​(i,j)=1)。

目标函數:

m i n W l E ( W l ) = L ( W l ) + λ R ( W l ) s . t . W l ( i , j ) ∈ P l ,   i f   T l ( i , j ) = 0 , 1 ≤ l ≤ L min_{W_l} E(W_l)=L(W_l) +\lambda R(W_l) \\ s.t. W_l(i,j) \in P_l, \ if\ T_l(i,j) = 0,1 \leq l \leq L minWl​​E(Wl​)=L(Wl​)+λR(Wl​)s.t.Wl​(i,j)∈Pl​, if Tl​(i,j)=0,1≤l≤L

參數更新:

W l ( i , j ) ← W l ( i , j ) − γ ∂ E ∂ ( W l ( i , j ) ) T l ( i , j ) W_l(i,j)\leftarrow W_l(i,j)-\gamma \frac{\partial E}{\partial(W_l(i,j))}T_l(i,j) Wl​(i,j)←Wl​(i,j)−γ∂(Wl​(i,j))∂E​Tl​(i,j)

結果展示

【論文閱讀筆記】Incremental Network Quantizatio:Towards Lossless CNNs with Low-Precision Weights

  上表中,帶ref的是32-bit 全精度推測,而下面的是 5-bit的量化網絡。可以看出,在ImageNet上,5-bit的量化網絡比32-bit全精度網絡達到了更好的結果。

【以下比較的結果,都是在ResNet,基于ImageNet上進行的】
【論文閱讀筆記】Incremental Network Quantizatio:Towards Lossless CNNs with Low-Precision Weights

  上表權重劃分的兩種方式的結果。可以看出,随機劃分效果有稍微的下降。可以看出,劃分方式是會影響結果的,是以如何選擇更好的劃分方式,也可以是一個方向。比如用聚類算法,劃分。

【論文閱讀筆記】Incremental Network Quantizatio:Towards Lossless CNNs with Low-Precision Weights

  上表是INQ探索Low-bit表示的結果。

【論文閱讀筆記】Incremental Network Quantizatio:Towards Lossless CNNs with Low-Precision Weights
【論文閱讀筆記】Incremental Network Quantizatio:Towards Lossless CNNs with Low-Precision Weights
【論文閱讀筆記】Incremental Network Quantizatio:Towards Lossless CNNs with Low-Precision Weights

繼續閱讀