朱新忠,程利甫,,吳有余,林閩佳,胡汝豪
(1.上海航天電子技術(shù)研究所,上海 201109;2.清華大學(xué) 集成電路學(xué)院,北京 100047)
當(dāng)前,在航天系統(tǒng)中需要進(jìn)行很多的圖像或語音識別工作,在處理較為簡單的語音任務(wù),尤其是指令任務(wù)時,對系統(tǒng)實時性、高能效的要求越來越高。而深度學(xué)習(xí)已被多媒體廣泛用于處理應(yīng)用程序,包括圖像、視頻和語音的識別和分類等,其所在硬件平臺也在不斷發(fā)展和演進(jìn)。對于航天系統(tǒng)而言,神經(jīng)網(wǎng)絡(luò)也逐漸被采用到簡單的分類任務(wù)之中,如關(guān)鍵詞語音命令的識別(Keyword Spotting and Recognition,KWSR)。對于網(wǎng)絡(luò)結(jié)構(gòu)逐漸復(fù)雜的深度神經(jīng)網(wǎng)絡(luò)來說,其加速所需要的硬件能耗隨著網(wǎng)絡(luò)規(guī)模的增加而迅速增加,因此,近年來近似計算和更簡單的權(quán)重二值化神經(jīng)網(wǎng)絡(luò)(Binarized Weight Neural Network,BWNN)結(jié)構(gòu)逐漸被引入到實時性要求高的識別加速過程中。KWSR 往往應(yīng)用在物聯(lián)網(wǎng)、手機(jī)或其他基于電池的邊緣智能設(shè)備中,由于功耗和面積非常敏感,因此,簡化的多層深度神經(jīng)網(wǎng)絡(luò)廣泛地被應(yīng)用于處理輸入數(shù)據(jù),而這些技術(shù)成熟度較高,逐漸也被航天系統(tǒng)所采用。
在最近幾年的發(fā)展中,多類深度神經(jīng)網(wǎng)絡(luò)被應(yīng)用于KWSR 或者相關(guān)的航天系統(tǒng)中,包括深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)[1-2]、卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[3-4]、基 于長期和短期記憶的遞歸神經(jīng)網(wǎng)絡(luò)(Long-Short Term Memory-Recurrent Neural Network,LSTMRNN)[5-6]、基于門控循環(huán)單元(Gate Recurrent Unit Network,GRUN)的神經(jīng)網(wǎng)絡(luò)[7]和卷積遞歸神經(jīng)網(wǎng)絡(luò)(Convolutional Recurrent Neural Network,CRNN)[8]?;谏疃壬窠?jīng)網(wǎng)絡(luò)的KWSR 提高了語音的魯棒性,但是其所包含的大量參數(shù)和引入的運算會產(chǎn)生大量在存儲和計算方面的硬件開銷。對于多層神經(jīng)網(wǎng)絡(luò)的壓縮而言,量化是最為常用的方法之一。因此,通過探索和分析不同神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和壓縮方法,BWNN 被發(fā)現(xiàn)可以用于實現(xiàn)超低功耗的KWSR[9-13]。其與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的區(qū)別在于,傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)權(quán)重均為16 bit 或者更高的位寬,而這一網(wǎng)絡(luò)僅需要1 bit 位寬的權(quán)重即可實現(xiàn)高精度的識別,即:BWNN 將權(quán)重和隱藏層二值化,激活值設(shè)為+1 或-1。這樣的結(jié)構(gòu)大大降低了存儲壓力和片上帶寬壓力,也因為1 bit 的位寬,幾乎將網(wǎng)絡(luò)中的乘法運算消除,僅需要優(yōu)化加法運算的硬件實現(xiàn)。
本文提出了一個面向BWNN 的基于逐位量化的KWSR 網(wǎng)絡(luò),針對KWSR 中的近似加法器進(jìn)行了優(yōu)化設(shè)計。針對近似計算引入的誤差,需要一個系統(tǒng)性的評估方法,本文提出了一種統(tǒng)計意義的誤差分析模型,可用于預(yù)測近似系統(tǒng)對神經(jīng)網(wǎng)絡(luò)的加速效果。具體來說,使用本文的BWNN 量化方法,對不同種類的神經(jīng)網(wǎng)絡(luò)進(jìn)行二值化并測試其精度,從中選取最適合的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行量化。隨后,通過提出的誤差統(tǒng)計模型,本文使用建模為軟件仿真的近似加法器進(jìn)行神經(jīng)網(wǎng)絡(luò)加速的精度評估。通過與功能仿真結(jié)果進(jìn)行比較,本文的誤差統(tǒng)計模型預(yù)測精度很高,最終的系統(tǒng)誤差預(yù)測和真實系統(tǒng)誤差對比,相對偏差約在3%以內(nèi)。
對BWNN 而言,一方面其權(quán)重占用的存儲空間可以大大減少;另一方面可以使用位運算代替常規(guī)神經(jīng)網(wǎng)絡(luò)中的乘法操作,這樣可以減少大多數(shù)乘法運算??傊?,通過建立BWNN,只需要加法器就可執(zhí)行幾乎所有的操作,因此,我們后續(xù)對硬件的分析也集中在加法器模型上。
傳統(tǒng)對神經(jīng)網(wǎng)絡(luò)進(jìn)行二值化的方法是在獲得定點神經(jīng)網(wǎng)絡(luò)后進(jìn)行截斷并微調(diào),這樣的方式會不可避免地降低識別精度。基于權(quán)重位寬均為1 bit的XNOR-Net 的量化原理,本文提出了一種逐位量化的權(quán)重二值化方法。這一方法在網(wǎng)絡(luò)的訓(xùn)練過程中介入,而非對最終的訓(xùn)練結(jié)果二值化,從而減少KWSR 的準(zhǔn)確率。
量化的具體方法如下:
式中:wi為第i層神經(jīng)網(wǎng)絡(luò)的權(quán)重數(shù)值;k為目標(biāo)的量化位寬數(shù)值;Qquantizek(·)、f(·)為量化函數(shù)和壓縮函數(shù);wq為對應(yīng)的權(quán)重量化數(shù)值結(jié)果。
因此,對于任意一層的神經(jīng)網(wǎng)絡(luò)層,均有對應(yīng)的量化結(jié)果。
式中:xi為當(dāng)前神經(jīng)網(wǎng)絡(luò)層的輸入;bi為量化前的偏置量;zq為當(dāng)前神經(jīng)網(wǎng)絡(luò)層的輸出數(shù)值。
本文所述的逐位量化算法流程如圖1 所示。
圖1 神經(jīng)網(wǎng)絡(luò)的逐位量化算法流程圖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)化:
在整個量化過程中,權(quán)重是首先壓縮為0~1 之間的數(shù)據(jù)。壓縮數(shù)據(jù)由式(1)和式(3)得出。隨后,權(quán)重量化為無損定點[-1,1]之間的數(shù)字。為了使量化權(quán)重在訓(xùn)練過程中更接近理想值,在處理過程中采用逐位量化的方法進(jìn)行反復(fù)訓(xùn)練。第一次訓(xùn)練量化的比特位寬度和訓(xùn)練后的權(quán)重會保存下來以用于重新訓(xùn)練,并且量化的位寬在下次訓(xùn)練中逐漸降低。例如,量化位寬可以是從8 bit 寬度逐漸量化到4 bit 寬度,然后2 bit 寬度最終量化為1 bit 寬度。這樣漸進(jìn)式權(quán)重訓(xùn)練的最有利之處在于速度快,且可以提高權(quán)重的訓(xùn)練效率和可靠性。
1.2.1 誤差評估量綱
為了使描述清晰,我們首先定義準(zhǔn)確值為Laccu,近似值作為Lappro。
最大誤差量綱(Maximum Error Magnitude,MEM)即最大誤差,為準(zhǔn)確值與近似值差值的絕對值,公式如下:
相對誤差量綱(Relative Error Magnitude,REM)即相對誤差,為準(zhǔn)確值、近似值差值的絕對值和準(zhǔn)確值絕對值的比,公式如下:
平均誤差量綱(Average Error Magnitude,AEM)為絕對差大小介于精確值和近似值之間所有差值的平均數(shù),平均誤差滿足如下公式:
均方誤差量綱(Mean Squared Error Magnitude,MSEM)為在所有可能的精確值與近似值之間的大小距離值上取平均,平方誤差度量公式如下:
1.2.2 低延遲近似加法器模型
基于文獻(xiàn)[9]中的研究內(nèi)容,代表基于塊的通用模型加法器結(jié)構(gòu)如圖2 所示。輸入位分為多個不相交或重疊的子加法器。每個子加法器產(chǎn)生相應(yīng)輸入的輸出部分和,同時使用前面子加法器的輸出進(jìn)位來生成結(jié)果。
圖2 基于塊的通用模型加法器結(jié)構(gòu)[6]Fig.2 Structure of generic block-based approximate adder[6]
文獻(xiàn)[6]中提出的誤差模型如下:
式中:Ei為二進(jìn)制變量,當(dāng)?shù)趇個子加法器錯誤時,Ei=1,否則Ei=0。考慮任何第i個加法器,當(dāng)2≤i≤L,Ei=1,會有
式中:A1-K+B1-K為沒有輸入到第i個子加法器的較低比特位置;Pr[Pi;N]為之前的子加法器生成的進(jìn)位數(shù)值參與計算;Pr[Gi;K]為之前的較低有效位在第i個子加法器產(chǎn)生一個進(jìn)位;N為加法器的位寬;K為產(chǎn)生進(jìn)位的低比特數(shù)據(jù)位寬;⊕為異或運算符;Pi為第i個子加法器產(chǎn)生了進(jìn)位這一事件;Gi為第i個子加法器的低比特位產(chǎn)生進(jìn)位這一事件。
對于由近似加法器組成的近似計算陣列,可分為兩種不同的情況:如果加法器用于不同的計算源,例如不同的神經(jīng)元,其誤差統(tǒng)計模型則為單獨考慮,近似加法器陣列的誤差模型是所有加法器的最大誤差,即MEM 值;如果近似加法器形成一個累加結(jié)構(gòu),將陣列的誤差模型視為所有加法器的平均誤差,即AEM 值。
在這一部分,進(jìn)行了以下實驗。首先,本文為KWSR 系統(tǒng)設(shè)計了各種網(wǎng)絡(luò),見表1,它們由不同的層組成;然后,將所有網(wǎng)絡(luò)通過前述的方法進(jìn)行二值化,對于模型驗證,使用Matlab 模擬近似加法器的功能行為并獲得BWNN 的準(zhǔn)確性;最后,將誤差模型引入BWNN 以獲得模型輸出精度,兩者精度在本文末尾進(jìn)行了比較。
表1 深度神經(jīng)網(wǎng)絡(luò)的實現(xiàn)方案與對比Tab.1 Implementation schemes and specifications of DNN models
使用Google 語音命令數(shù)據(jù)集(Google Speech Command Dataset,GSCD)作為訓(xùn)練集和驗證集。GSCD 中有10.5 萬組1 s 長的音頻數(shù)據(jù),集中包含35 個關(guān)鍵字的片段。當(dāng)訓(xùn)練神經(jīng)網(wǎng)絡(luò)時,我們將卷積層的權(quán)重和完全連接的層量化至1 bit 位寬。BWNN 模型經(jīng)過培訓(xùn),可以將音頻識別分類為10個關(guān)鍵字之一,“YES”“NO”“UP”“DOWN”“RIGHT”“LEFT”“ON”“OFF”“STOP”“GO”“沉默”(即不說任何話)和“未知”(即所說詞語不在10 個關(guān)鍵詞以內(nèi))。
表1 總結(jié)了所測試的神經(jīng)網(wǎng)絡(luò)的層次類型、計算要求和準(zhǔn)確性,其中部分結(jié)構(gòu)來源于文獻(xiàn)[5-6,14-16]中采用GSCD 進(jìn)行KWSR 命令的網(wǎng)絡(luò)。這些網(wǎng)絡(luò)架構(gòu)的權(quán)重都進(jìn)行了二值化測試。其中縮寫的含義:CONV 為卷積層,F(xiàn)C 為全連接層,LSTM 為LSTM 單元的個 數(shù),GRU 為門遞歸單元個數(shù)。
表中可見,LSTM、GRU 和CRNN 都比CNN 的精度更高,但是它們在二值化后無法得到收斂的結(jié)果,即無法進(jìn)行二值化。而為了提高語音識別的魯棒性并降低電路的功耗,可以適當(dāng)犧牲網(wǎng)絡(luò)的識別精度,同時還需要控制識別精度高于85%。因此,CNN 是適用于BWNN 的結(jié)構(gòu)。
由于權(quán)重在整個KWSR 系統(tǒng)中加載后,計算過程將不會更改,而數(shù)據(jù)將在整個操作過程中不斷變化,需要減少權(quán)重占用的存儲和數(shù)據(jù)刷新速度以進(jìn)一步降低功耗。因此,需要根據(jù)網(wǎng)絡(luò)規(guī)模來評估和優(yōu)化網(wǎng)絡(luò)卷積核、全連接層的權(quán)重第1 和第2 卷積層的輸出。本文將3×3 卷積核用于卷積運算,同時減少數(shù)據(jù)位寬并防止數(shù)據(jù)溢出。而最后卷積層的輸出結(jié)果直接影響第一全連接層的權(quán)重大小。因此,本文減少了卷積層的卷積核數(shù)量,并增加卷積核的步幅以減少輸出結(jié)果的大小。
基于上述的方法,在實現(xiàn)了4 個BWNN 之后,評估了錯誤在軟件仿真結(jié)果和模型輸出結(jié)果之間,見表2。對于提出的4 個BWNN,仿真系統(tǒng)精度和預(yù)測系統(tǒng)精度之間的相對差異約為2%~3%。結(jié)果表明,采用的誤差統(tǒng)計模型可以預(yù)測本文所敘述的計算系統(tǒng)的精度。其中4 個網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)闡述如下:BWNN 1~4 均由4 層卷積、1 層全連接(30 個神經(jīng)元)組成,卷積層參數(shù)(通道數(shù)、卷積核的三維尺寸、步長)見表1。通過4 種不同的卷積網(wǎng)絡(luò)設(shè)計,可以應(yīng)對不同復(fù)雜度的分類場景,針對不同步長、不同通道數(shù)均進(jìn)行了驗證,體現(xiàn)了模型的精確性和普遍適用性。
表2 系統(tǒng)誤差的預(yù)測和實測對比Tab.2 Predicted and simulated accuracies
本文提出了系統(tǒng)的誤差統(tǒng)計模型,可用于BWNN 在近似加法器的近似加速系統(tǒng)中。本文為KWSR 提出了二進(jìn)制加權(quán)神經(jīng)網(wǎng)絡(luò)的量化方法,參考了近似加法器的基本誤差模型并針對KWSR 系統(tǒng)進(jìn)行了優(yōu)化。此外,對面向10 個命令詞識別的網(wǎng)絡(luò)進(jìn)行實驗,并將其二值化為BWNN。通過使用誤差統(tǒng)計模型,可以預(yù)測BWNN 的系統(tǒng)精度。通過比較仿真結(jié)果和模型預(yù)測的系統(tǒng)精度,本文提出的方法可以實現(xiàn)3%以內(nèi)的精度預(yù)測相對損失。這一工作對后續(xù)航天系統(tǒng)中KWSR 的系統(tǒng)設(shè)計,提供了有力的工具。