摘要: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 所示)。
現有的多比特量化方法
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 倍的真實推斷加速。 這些結果都遠遠優於現有量化方法的結果。
版權聲明
本文僅代表作者觀點,不代表百度立場。
本文係作者授權百度百家發表,未經許可,不得轉載。