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