朱新忠,程利甫,,吳有余,林閩佳,胡汝豪
(1.上海航天電子技術研究所,上海 201109;2.清華大學 集成電路學院,北京 100047)
當前,在航天系統(tǒng)中需要進行很多的圖像或語音識別工作,在處理較為簡單的語音任務,尤其是指令任務時,對系統(tǒng)實時性、高能效的要求越來越高。而深度學習已被多媒體廣泛用于處理應用程序,包括圖像、視頻和語音的識別和分類等,其所在硬件平臺也在不斷發(fā)展和演進。對于航天系統(tǒng)而言,神經(jīng)網(wǎng)絡也逐漸被采用到簡單的分類任務之中,如關鍵詞語音命令的識別(Keyword Spotting and Recognition,KWSR)。對于網(wǎng)絡結構逐漸復雜的深度神經(jīng)網(wǎng)絡來說,其加速所需要的硬件能耗隨著網(wǎng)絡規(guī)模的增加而迅速增加,因此,近年來近似計算和更簡單的權重二值化神經(jīng)網(wǎng)絡(Binarized Weight Neural Network,BWNN)結構逐漸被引入到實時性要求高的識別加速過程中。KWSR 往往應用在物聯(lián)網(wǎng)、手機或其他基于電池的邊緣智能設備中,由于功耗和面積非常敏感,因此,簡化的多層深度神經(jīng)網(wǎng)絡廣泛地被應用于處理輸入數(shù)據(jù),而這些技術成熟度較高,逐漸也被航天系統(tǒng)所采用。
在最近幾年的發(fā)展中,多類深度神經(jīng)網(wǎng)絡被應用于KWSR 或者相關的航天系統(tǒng)中,包括深度神經(jīng)網(wǎng)絡(Deep Neural Network,DNN)[1-2]、卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)[3-4]、基 于長期和短期記憶的遞歸神經(jīng)網(wǎng)絡(Long-Short Term Memory-Recurrent Neural Network,LSTMRNN)[5-6]、基于門控循環(huán)單元(Gate Recurrent Unit Network,GRUN)的神經(jīng)網(wǎng)絡[7]和卷積遞歸神經(jīng)網(wǎng)絡(Convolutional Recurrent Neural Network,CRNN)[8]?;谏疃壬窠?jīng)網(wǎng)絡的KWSR 提高了語音的魯棒性,但是其所包含的大量參數(shù)和引入的運算會產(chǎn)生大量在存儲和計算方面的硬件開銷。對于多層神經(jīng)網(wǎng)絡的壓縮而言,量化是最為常用的方法之一。因此,通過探索和分析不同神經(jīng)網(wǎng)絡結構和壓縮方法,BWNN 被發(fā)現(xiàn)可以用于實現(xiàn)超低功耗的KWSR[9-13]。其與傳統(tǒng)神經(jīng)網(wǎng)絡的區(qū)別在于,傳統(tǒng)的神經(jīng)網(wǎng)絡權重均為16 bit 或者更高的位寬,而這一網(wǎng)絡僅需要1 bit 位寬的權重即可實現(xiàn)高精度的識別,即:BWNN 將權重和隱藏層二值化,激活值設為+1 或-1。這樣的結構大大降低了存儲壓力和片上帶寬壓力,也因為1 bit 的位寬,幾乎將網(wǎng)絡中的乘法運算消除,僅需要優(yōu)化加法運算的硬件實現(xiàn)。
本文提出了一個面向BWNN 的基于逐位量化的KWSR 網(wǎng)絡,針對KWSR 中的近似加法器進行了優(yōu)化設計。針對近似計算引入的誤差,需要一個系統(tǒng)性的評估方法,本文提出了一種統(tǒng)計意義的誤差分析模型,可用于預測近似系統(tǒng)對神經(jīng)網(wǎng)絡的加速效果。具體來說,使用本文的BWNN 量化方法,對不同種類的神經(jīng)網(wǎng)絡進行二值化并測試其精度,從中選取最適合的網(wǎng)絡結構進行量化。隨后,通過提出的誤差統(tǒng)計模型,本文使用建模為軟件仿真的近似加法器進行神經(jīng)網(wǎng)絡加速的精度評估。通過與功能仿真結果進行比較,本文的誤差統(tǒng)計模型預測精度很高,最終的系統(tǒng)誤差預測和真實系統(tǒng)誤差對比,相對偏差約在3%以內(nèi)。
對BWNN 而言,一方面其權重占用的存儲空間可以大大減少;另一方面可以使用位運算代替常規(guī)神經(jīng)網(wǎng)絡中的乘法操作,這樣可以減少大多數(shù)乘法運算。總之,通過建立BWNN,只需要加法器就可執(zhí)行幾乎所有的操作,因此,我們后續(xù)對硬件的分析也集中在加法器模型上。
傳統(tǒng)對神經(jīng)網(wǎng)絡進行二值化的方法是在獲得定點神經(jīng)網(wǎng)絡后進行截斷并微調(diào),這樣的方式會不可避免地降低識別精度。基于權重位寬均為1 bit的XNOR-Net 的量化原理,本文提出了一種逐位量化的權重二值化方法。這一方法在網(wǎng)絡的訓練過程中介入,而非對最終的訓練結果二值化,從而減少KWSR 的準確率。
量化的具體方法如下:

式中:wi為第i層神經(jīng)網(wǎng)絡的權重數(shù)值;k為目標的量化位寬數(shù)值;Qquantizek(·)、f(·)為量化函數(shù)和壓縮函數(shù);wq為對應的權重量化數(shù)值結果。
因此,對于任意一層的神經(jīng)網(wǎng)絡層,均有對應的量化結果。

式中:xi為當前神經(jīng)網(wǎng)絡層的輸入;bi為量化前的偏置量;zq為當前神經(jīng)網(wǎng)絡層的輸出數(shù)值。
本文所述的逐位量化算法流程如圖1 所示。

圖1 神經(jīng)網(wǎng)絡的逐位量化算法流程圖Fig.1 Flow chart of the bit-by-bit quantization method for neural networks
在第k比特位寬度(k>1),輸入層和批處理歸一化(Batch Normalization,BN)層將同時量化。實際上,由于BN 層包含數(shù)據(jù)壓縮處理,激活函數(shù)tanh的量化可以被舍棄,因此,壓縮函數(shù)fc(·)可以按以下方式優(yōu)化:

在整個量化過程中,權重是首先壓縮為0~1 之間的數(shù)據(jù)。壓縮數(shù)據(jù)由式(1)和式(3)得出。隨后,權重量化為無損定點[-1,1]之間的數(shù)字。為了使量化權重在訓練過程中更接近理想值,在處理過程中采用逐位量化的方法進行反復訓練。第一次訓練量化的比特位寬度和訓練后的權重會保存下來以用于重新訓練,并且量化的位寬在下次訓練中逐漸降低。例如,量化位寬可以是從8 bit 寬度逐漸量化到4 bit 寬度,然后2 bit 寬度最終量化為1 bit 寬度。這樣漸進式權重訓練的最有利之處在于速度快,且可以提高權重的訓練效率和可靠性。
1.2.1 誤差評估量綱
為了使描述清晰,我們首先定義準確值為Laccu,近似值作為Lappro。
最大誤差量綱(Maximum Error Magnitude,MEM)即最大誤差,為準確值與近似值差值的絕對值,公式如下:

相對誤差量綱(Relative Error Magnitude,REM)即相對誤差,為準確值、近似值差值的絕對值和準確值絕對值的比,公式如下:

平均誤差量綱(Average Error Magnitude,AEM)為絕對差大小介于精確值和近似值之間所有差值的平均數(shù),平均誤差滿足如下公式:

均方誤差量綱(Mean Squared Error Magnitude,MSEM)為在所有可能的精確值與近似值之間的大小距離值上取平均,平方誤差度量公式如下:

1.2.2 低延遲近似加法器模型
基于文獻[9]中的研究內(nèi)容,代表基于塊的通用模型加法器結構如圖2 所示。輸入位分為多個不相交或重疊的子加法器。每個子加法器產(chǎn)生相應輸入的輸出部分和,同時使用前面子加法器的輸出進位來生成結果。

圖2 基于塊的通用模型加法器結構[6]Fig.2 Structure of generic block-based approximate adder[6]
文獻[6]中提出的誤差模型如下:

式中:Ei為二進制變量,當?shù)趇個子加法器錯誤時,Ei=1,否則Ei=0。考慮任何第i個加法器,當2≤i≤L,Ei=1,會有

式中:A1-K+B1-K為沒有輸入到第i個子加法器的較低比特位置;Pr[Pi;N]為之前的子加法器生成的進位數(shù)值參與計算;Pr[Gi;K]為之前的較低有效位在第i個子加法器產(chǎn)生一個進位;N為加法器的位寬;K為產(chǎn)生進位的低比特數(shù)據(jù)位寬;⊕為異或運算符;Pi為第i個子加法器產(chǎn)生了進位這一事件;Gi為第i個子加法器的低比特位產(chǎn)生進位這一事件。
對于由近似加法器組成的近似計算陣列,可分為兩種不同的情況:如果加法器用于不同的計算源,例如不同的神經(jīng)元,其誤差統(tǒng)計模型則為單獨考慮,近似加法器陣列的誤差模型是所有加法器的最大誤差,即MEM 值;如果近似加法器形成一個累加結構,將陣列的誤差模型視為所有加法器的平均誤差,即AEM 值。
在這一部分,進行了以下實驗。首先,本文為KWSR 系統(tǒng)設計了各種網(wǎng)絡,見表1,它們由不同的層組成;然后,將所有網(wǎng)絡通過前述的方法進行二值化,對于模型驗證,使用Matlab 模擬近似加法器的功能行為并獲得BWNN 的準確性;最后,將誤差模型引入BWNN 以獲得模型輸出精度,兩者精度在本文末尾進行了比較。

表1 深度神經(jīng)網(wǎng)絡的實現(xiàn)方案與對比Tab.1 Implementation schemes and specifications of DNN models
使用Google 語音命令數(shù)據(jù)集(Google Speech Command Dataset,GSCD)作為訓練集和驗證集。GSCD 中有10.5 萬組1 s 長的音頻數(shù)據(jù),集中包含35 個關鍵字的片段。當訓練神經(jīng)網(wǎng)絡時,我們將卷積層的權重和完全連接的層量化至1 bit 位寬。BWNN 模型經(jīng)過培訓,可以將音頻識別分類為10個關鍵字之一,“YES”“NO”“UP”“DOWN”“RIGHT”“LEFT”“ON”“OFF”“STOP”“GO”“沉默”(即不說任何話)和“未知”(即所說詞語不在10 個關鍵詞以內(nèi))。
表1 總結了所測試的神經(jīng)網(wǎng)絡的層次類型、計算要求和準確性,其中部分結構來源于文獻[5-6,14-16]中采用GSCD 進行KWSR 命令的網(wǎng)絡。這些網(wǎng)絡架構的權重都進行了二值化測試。其中縮寫的含義:CONV 為卷積層,F(xiàn)C 為全連接層,LSTM 為LSTM 單元的個 數(shù),GRU 為門遞歸單元個數(shù)。
表中可見,LSTM、GRU 和CRNN 都比CNN 的精度更高,但是它們在二值化后無法得到收斂的結果,即無法進行二值化。而為了提高語音識別的魯棒性并降低電路的功耗,可以適當犧牲網(wǎng)絡的識別精度,同時還需要控制識別精度高于85%。因此,CNN 是適用于BWNN 的結構。
由于權重在整個KWSR 系統(tǒng)中加載后,計算過程將不會更改,而數(shù)據(jù)將在整個操作過程中不斷變化,需要減少權重占用的存儲和數(shù)據(jù)刷新速度以進一步降低功耗。因此,需要根據(jù)網(wǎng)絡規(guī)模來評估和優(yōu)化網(wǎng)絡卷積核、全連接層的權重第1 和第2 卷積層的輸出。本文將3×3 卷積核用于卷積運算,同時減少數(shù)據(jù)位寬并防止數(shù)據(jù)溢出。而最后卷積層的輸出結果直接影響第一全連接層的權重大小。因此,本文減少了卷積層的卷積核數(shù)量,并增加卷積核的步幅以減少輸出結果的大小。
基于上述的方法,在實現(xiàn)了4 個BWNN 之后,評估了錯誤在軟件仿真結果和模型輸出結果之間,見表2。對于提出的4 個BWNN,仿真系統(tǒng)精度和預測系統(tǒng)精度之間的相對差異約為2%~3%。結果表明,采用的誤差統(tǒng)計模型可以預測本文所敘述的計算系統(tǒng)的精度。其中4 個網(wǎng)絡的拓撲結構闡述如下:BWNN 1~4 均由4 層卷積、1 層全連接(30 個神經(jīng)元)組成,卷積層參數(shù)(通道數(shù)、卷積核的三維尺寸、步長)見表1。通過4 種不同的卷積網(wǎng)絡設計,可以應對不同復雜度的分類場景,針對不同步長、不同通道數(shù)均進行了驗證,體現(xiàn)了模型的精確性和普遍適用性。

表2 系統(tǒng)誤差的預測和實測對比Tab.2 Predicted and simulated accuracies
本文提出了系統(tǒng)的誤差統(tǒng)計模型,可用于BWNN 在近似加法器的近似加速系統(tǒng)中。本文為KWSR 提出了二進制加權神經(jīng)網(wǎng)絡的量化方法,參考了近似加法器的基本誤差模型并針對KWSR 系統(tǒng)進行了優(yōu)化。此外,對面向10 個命令詞識別的網(wǎng)絡進行實驗,并將其二值化為BWNN。通過使用誤差統(tǒng)計模型,可以預測BWNN 的系統(tǒng)精度。通過比較仿真結果和模型預測的系統(tǒng)精度,本文提出的方法可以實現(xiàn)3%以內(nèi)的精度預測相對損失。這一工作對后續(xù)航天系統(tǒng)中KWSR 的系統(tǒng)設計,提供了有力的工具。