酷播亮新聞
最棒的知識補給站

阿里巴巴論文:基於交替方向法的循環神經網絡多比特量化

摘要:ICLR2018將於4月30日在加拿大溫哥華開幕,之前機器之心對此屆大會的三篇獲獎論文分別進行了介紹。 在這篇文章中,我們介紹了阿里巴巴的一篇ICLR2018論文。 論文原文地址:https://arxi

ICLR 2018 將於 4 月 30 日在加拿大溫哥華開幕,之前機器之心對此屆大會的三篇獲獎論文分別進行了介紹。 在這篇文章中,我們介紹了阿里巴巴的一篇 ICLR 2018論文。

論文原文地址:https://arxiv.org/abs/1802.00150

引言

循環神經網絡
  (RNN) 在語言模型、機器翻譯、語音識別、生成圖像標題等很多應用上都取得了非常好的效果。 然而,這些模型常常是建立在高維的嵌入
(embedding) 或者多層的循環單元中,包含了大量的參數,使得無法在資源有限的移動端部署。 此外,RNN
的計算依賴於與當前的隱狀態,只能被順序執行,因此在執行推斷時會造成比較大的延時。 在擁有大規模並發請求的服務器端,比如語音識別或者機器翻譯等應用,為了滿足線上苛刻的響應時間要求,需要部署大量的機器。 在這項工作中,我們考慮通過量化參數到二值
  {-1,+1} 上來解決上述問題。 考慮將模型的權重量化成 1 比特,相對於全精度,直接帶來 32 倍的內存壓縮。 而對 1
比特參數的矩陣乘法,如果不考慮具體實現,相對於全精度乘法,理論上也會帶來 32 倍的加速。 然而,如果把模型的權重和激活都量化成 1
比特,在循環神經網絡中,會帶來很大的精度損失。 因此,很自然的折中方案就是採用多比特量化(如圖 1 所示)。

Figure 1 多比特量化乘法示意

現有的多比特量化方法

1) 均勻 (Uniform) 量化採用下列的 k 比特量化方案:

這樣基於規則的量化方法非常容易實現, 但是對於非均勻數據的量化效果很差,而非均勻分佈數據在深度神經網絡卻更為常見。

2)
  均衡 (Balanced) 量化通過數據預處理來解決均勻量化的弊端。 該方法首先產生 2^k
個間隔,每個間隔大致包含等量的數據。 然後該方法將每個間隔的中心線性映射到對應的量化編碼中。 儘管看起來更有效,但是該方法還是基於規則,而這種規則並不能保證對所有的數據分佈都起效果。

3) 貪婪法 (Greedy) 近似通過去解下面的帶離散約束的分解問題來實現量化:

對於 k=1, 上述問題存在閉式解。 貪婪近似通過逐步量化餘量 (residue) 並將其推廣到 k 比特 (k>1) 的情形:

每個子步都有最優解

貪婪法非常高效,儘管不能得到一個高精度的解,但是將量化問題建模成一個優化問題的形式還是非常具有啟發性的。

4) 改進版 (Refined) 貪婪近似進一步拓展貪婪法以降低量化誤差。 在上述第 j 步最小化問題中,該方法加上額外一步最小二乘來修正係數

在原文量化卷積神經網絡權重的實驗中,修正版貪婪法被證實比原始的貪婪法更有效。 然而,正如我們下面要講的,修正版的貪婪法在量化精度方面仍然不能令人滿意。

除了上述通用的多比特量化方案以外,還有文章還提出了三值量化,與 1 比特的二值量化相比,三值量化多了可行狀態 0。 三值量化通過解如下問題

來實現編碼。

實驗結果

Table 1 不同方法近似 PTB 數據集上訓練好的 LSTM 的權重。 其中 FP 表示全精度

Table 2 不同方法近似 PTB 數據集上訓練好的 GRU 的權重

我們在語言模型上進行量化實驗,分別測試了
  LSTM 和 GRU 兩種架構。 因為實驗是去預測下一個單詞,其效果採用單字複雜度來衡量 (perplexity per word, 簡寫成
PPW)。 為了檢驗所有的算法量化精度,我們首先對訓練好的全精度權重做近似 (沒有量化激活或者重訓練),結果如表 1 和表 2
所示。 注意到均勻量化和均衡量化是基於規則的,其目標並不在於最小化誤差,因此這兩種方法會得到差很多的結果。 我們還在其他數據集上重複了上述實驗,對於兩種循環神經網絡結構
  LSTM 和 GRU,結果都與此處相似。

Table 3 PTB 數據集上多比特量化 LSTM 和 GRU 的測試 PPW,其中均勻量化和均衡量化為現有論文中的結果,改進版貪婪法為我們自己實現的結果。

Table 4 WikiText-2 數據集上多比特量化 LSTM 和 GRU 的測試 PPW。

Table 5 Text-8 數據集上多比特量化 LSTM 和 GRU 的測試 PPW

我們還進行了權重和激活同時量化的實驗,結果如表 3、4 和 5 所示。 從中可以看到,本文提出的交替方向法明顯好過現有其他量化方法。 即使與表現最好的改進版貪婪法相比,交替方向法實現類似的精度大概可以少用一個比特。

我們還在 CPU 中實現了矩陣向量的二值乘法,其結果如表 6 所示。

Table 6 CPU 中二值乘法與全精度乘法的時間比較

小結

在這個工作中,我們主要考慮神經網絡的多比特量化壓縮加速問題。 我們發現,如果編碼的實係數固定,那麼離散的二值編碼
  {-1,+1} 可以通過二叉搜索樹高效的求解。 基於這個發現,我們相應地提出交替方向法。 我們將該方法用於量化語言模型中的 LSTM 和 GRU
結構,與全精度模型相比,通過 2 比特量化,我們可以減少約 16 倍的內存消耗,以及在 CPU 上實現約 6
倍的真實推斷加速,而只產生少量的準確率損失。 通過 3 比特量化,該方法在準確率上可以實現幾乎沒有損失甚至超過原始模型,並減少約 10.5
倍的內存消耗,以及在 CPU 上實現約 3 倍的真實推斷加速。 這些結果都遠遠優於現有量化方法的結果。

版權聲明

本文僅代表作者觀點,不代表百度立場。
本文係作者授權百度百家發表,未經許可,不得轉載。

如有侵權請來信告知:酷播亮新聞 » 阿里巴巴論文:基於交替方向法的循環神經網絡多比特量化