李聲揚(yáng) 莫春梅
關(guān)鍵詞: 脈沖神經(jīng)網(wǎng)絡(luò); 類腦芯片; 神經(jīng)形態(tài)計(jì)算; 膜電位; 事件驅(qū)動
0 引言
脈沖神經(jīng)網(wǎng)絡(luò)模擬了哺乳動物大腦的關(guān)鍵信息處理機(jī)制和通信方法,它基于類似神經(jīng)細(xì)胞動作電位的脈沖編碼,從時間和空間兩方面處理數(shù)據(jù),被譽(yù)為第三代人工神經(jīng)網(wǎng)絡(luò)[1]。脈沖神經(jīng)網(wǎng)絡(luò)有著強(qiáng)類腦屬性、生物屬性、低計(jì)算復(fù)雜度、容錯等能力[2]。得益于脈沖神經(jīng)網(wǎng)絡(luò)強(qiáng)大的能力,研究者開始研究使用物理平臺實(shí)現(xiàn)脈沖神經(jīng)網(wǎng)絡(luò)以解決現(xiàn)實(shí)中的實(shí)際問題,如人工視覺系統(tǒng)、圖片識別。脈沖神經(jīng)網(wǎng)絡(luò)硬件系統(tǒng)旨在高效使用電路實(shí)現(xiàn)脈沖神經(jīng)網(wǎng)絡(luò),以類腦處理方法解決現(xiàn)實(shí)中的實(shí)際問題[2]。一般來說,脈沖神經(jīng)網(wǎng)絡(luò)硬件系統(tǒng)主要由神經(jīng)計(jì)算單元、互聯(lián)表、通信網(wǎng)絡(luò)、權(quán)重存儲器、膜電位存儲器五大部分組成。神經(jīng)計(jì)算單元接收其他計(jì)算單元產(chǎn)生的脈沖事件、更新膜電位、產(chǎn)生脈沖事件并發(fā)送給其他計(jì)算單元,完成神經(jīng)元關(guān)鍵信息處理?;ヂ?lián)表本質(zhì)是一塊存儲器,存放著每一個神經(jīng)元的突觸前和突觸后神經(jīng)元地址,決定了脈沖神經(jīng)網(wǎng)絡(luò)的互聯(lián)拓?fù)浣Y(jié)構(gòu)。通信網(wǎng)絡(luò)根據(jù)互聯(lián)表信息將脈沖事件等信息從源計(jì)算單元傳輸至目標(biāo)計(jì)算單元,由于硬件系統(tǒng)往往容納了大量的計(jì)算單元,通信量較大,一般采用片上網(wǎng)絡(luò)技術(shù)實(shí)現(xiàn)大規(guī)模神經(jīng)元互聯(lián)通信。權(quán)重存儲器存放著所有神經(jīng)元間的連接強(qiáng)度。膜電位存儲器存放著神經(jīng)元的膜電位信息,當(dāng)神經(jīng)計(jì)算單元收到脈沖信號時,將根據(jù)該信號源地址從權(quán)重存儲器中提取出對應(yīng)權(quán)重并結(jié)合上一時間步的膜電位值更新膜電位。這五大部分協(xié)調(diào)工作,完成對生物神經(jīng)網(wǎng)絡(luò)的模擬與仿真。在先前的研究中,大量的工作已經(jīng)對脈沖神經(jīng)網(wǎng)絡(luò)硬件系統(tǒng)整體硬件架構(gòu)、局部模塊微電路等硬件方面進(jìn)行優(yōu)化(生物真實(shí)性、面積消耗、功率消耗、工作頻率、實(shí)現(xiàn)復(fù)雜度、吞吐量、延時等)[3-5],有的也結(jié)合算法層面、軟件層面進(jìn)行協(xié)調(diào)優(yōu)化[6]。例如,針對神經(jīng)計(jì)算單元的高硬件資源消耗和高計(jì)算復(fù)雜度問題,研究者通過隨機(jī)計(jì)算技術(shù)用簡單的門電路和LFSR隨機(jī)數(shù)產(chǎn)生器替代復(fù)雜的算術(shù)運(yùn)算邏輯[3]。針對通信網(wǎng)絡(luò),研究者使用高并行的片上網(wǎng)絡(luò)技術(shù)去支持海里神經(jīng)元間的數(shù)據(jù)傳輸,使用流量預(yù)測機(jī)制、脈沖擁塞策略去防止通信鏈路阻塞,最終減少脈沖事件傳輸延時,使用無緩沖路由器技術(shù)優(yōu)化傳統(tǒng)通信路由器的緩存器數(shù)量,進(jìn)而減少通信網(wǎng)絡(luò)的硬件開銷[5]。在大多數(shù)脈沖神經(jīng)網(wǎng)絡(luò)硬件系統(tǒng)中,每一個脈沖神經(jīng)元都部署了一個獨(dú)立的膜電位存儲單元,膜電位存儲器消耗隨神經(jīng)元數(shù)量的增加而增加,尤其是對于擁有海量神經(jīng)元的大規(guī)模神經(jīng)硬件系統(tǒng),消耗了大量的膜電位存儲器。受上述研究工作和計(jì)算機(jī)主存與Cache之間經(jīng)典映射方式的啟發(fā),文章針對膜電位存儲器高開銷問題,提出了存儲復(fù)用機(jī)制,以減少膜電位存儲器開銷,最終減少脈沖神經(jīng)網(wǎng)絡(luò)硬件系統(tǒng)的硬件成本。
2 脈沖神經(jīng)網(wǎng)絡(luò)
脈沖神經(jīng)網(wǎng)絡(luò)由大量錯綜復(fù)雜互聯(lián)在一起的脈沖神經(jīng)元組成,詳細(xì)地模擬了生物神經(jīng)網(wǎng)絡(luò)的動態(tài)行為[2]。脈沖神經(jīng)元是脈沖神經(jīng)網(wǎng)絡(luò)最基本的單元,常見的模型包括Hodgkin-Huxley(H-H)、Izhikevich(Izh)、Spike Response Mode(SRM)、Leaky Integrate-and-Fire(LIF)等[7]。這些模型通過不同計(jì)算復(fù)雜度的數(shù)學(xué)方程對生物神經(jīng)元動態(tài)行為進(jìn)行不同程度的模仿與近似。其中,H-H模型能夠模擬神經(jīng)元的關(guān)鍵行為,且可以非常精確地模擬多種活動細(xì)節(jié),如細(xì)胞膜的鈉鉀離子通道活動情況。但是其涉及復(fù)雜、大量的計(jì)算以及眾多的參數(shù),大多數(shù)硬件系統(tǒng)基于硬件實(shí)現(xiàn)復(fù)雜度和成本考慮,沒有采用這一模型。相較于其他模型,LIF模型不僅能夠?qū)ι锷窠?jīng)元關(guān)鍵行為進(jìn)行抽象且具有低的計(jì)算復(fù)雜度,在生物真實(shí)性和計(jì)算復(fù)雜度兩方面取得了平衡[7]。當(dāng)前大多數(shù)硬件系統(tǒng)采用了該模型,通過低硬件實(shí)現(xiàn)復(fù)雜度完成神經(jīng)網(wǎng)絡(luò)計(jì)算。LIF可由以下公式描述:
U 表示神經(jīng)元膜電位;當(dāng)收到第i 個神經(jīng)元產(chǎn)生的脈沖(動作電位)時,該神經(jīng)元膜電位增加Wi,若未收到輸入脈沖,膜電位將以τ 系數(shù)指數(shù)衰減。當(dāng)膜電位超過開火閾值Uthes時,該神經(jīng)元將產(chǎn)生一個脈沖并發(fā)送給所有突觸后神經(jīng)元,且膜電位快速置靜息電位Ureset,在后續(xù)一段時間內(nèi)膜電位維持該值,這一時期稱為不應(yīng)期。例如,如圖1(a) 所示,假設(shè)某一神經(jīng)元有三個突觸前神經(jīng)元1、2、3,對應(yīng)權(quán)重分別為W1、W2、W3, 突觸前神經(jīng)元1分別在第2和5時間步,神經(jīng)元2在第1、4、5時間步產(chǎn)生脈沖,神經(jīng)元3在第2和5時間步產(chǎn)生脈沖。該神經(jīng)元的膜電位動態(tài)變化規(guī)律如果1(b) 所示,膜電位隨著有無脈沖輸入、連接強(qiáng)度、τ 系數(shù)等情況變化而變化。大量如此屬性的神經(jīng)元互聯(lián)在一起形成了脈沖神經(jīng)網(wǎng)絡(luò),有著強(qiáng)大的類腦屬性。
3 膜電位存儲器復(fù)用機(jī)制
如圖2所示,在大多數(shù)脈沖神經(jīng)網(wǎng)絡(luò)硬件系統(tǒng)中,每一個脈沖神經(jīng)元都需要一個獨(dú)立的膜電位存儲單元,用于計(jì)算神經(jīng)元在下一時間步是否產(chǎn)生脈沖,膜電位存儲器消耗隨神經(jīng)元數(shù)量的增加而增加。由于硬件系統(tǒng)往往容納了大量的神經(jīng)元以支持大規(guī)模神經(jīng)網(wǎng)絡(luò)仿真和復(fù)雜的工程任務(wù),因此傳統(tǒng)的膜電位存儲機(jī)制導(dǎo)致了較大的硬件開銷。研究表明:相較于硬件電路的超高運(yùn)行頻率,單個脈沖神經(jīng)元的典型動作電位產(chǎn)生速率非常低[4],每秒約15個[8]。此外,當(dāng)脈沖神經(jīng)元產(chǎn)生脈沖后,在一段時間內(nèi)處于不應(yīng)期,這期間神經(jīng)元處于停機(jī)狀態(tài),其膜電位為靜息電位[9]。這一電位值往往是預(yù)先給定的,因此單獨(dú)存儲此時的膜電位信息是沒有意義的,在這種情況下,當(dāng)多個神經(jīng)元都處于不應(yīng)期時,將導(dǎo)致多個存儲單元存儲著相同的值,膜電位存儲器被浪費(fèi);實(shí)際中,可以使用一個專用的存儲器預(yù)先存儲該值。另一方面,在計(jì)算機(jī)領(lǐng)域中,主存與Cache之間存在著經(jīng)典直接映射、組相聯(lián)映射與全相聯(lián)映射方式[10]。
受到上述研究的啟發(fā),文章針對大規(guī)模脈沖神經(jīng)網(wǎng)絡(luò)硬件系統(tǒng)高膜電位存儲器消耗問題,提出了神經(jīng)元膜電位存儲器復(fù)用機(jī)制,包括多對一復(fù)用、多對多復(fù)用以及全連接復(fù)用。在該機(jī)制中,處于不應(yīng)期的神經(jīng)元將不占用存儲器,膜電位存儲單元數(shù)量少于神經(jīng)元數(shù)量以減少硬件資源消耗。該機(jī)制存在一種特殊情況:當(dāng)所有膜電位存儲器都被占用,而其他神經(jīng)元需要使用存儲器時,即給定膜電位存儲單元數(shù)量低于處于不應(yīng)期外的神經(jīng)元數(shù)量時,這將導(dǎo)致存儲器沖突。此時,將取消膜電位存儲器中的最大膜電位值對應(yīng)神經(jīng)元的存儲占用,以分配給有需求的神經(jīng)元。若這一最大膜電位值接近開火閾值,將強(qiáng)制使其對應(yīng)神經(jīng)元產(chǎn)生脈沖,否則,強(qiáng)制使其處于不應(yīng)期。由于脈沖神經(jīng)網(wǎng)絡(luò)具有強(qiáng)容錯性[2],這一策略將解決上述存儲沖突問題。
為了詳細(xì)描述文章所提出的存儲器復(fù)用機(jī)制,假設(shè)系統(tǒng)需要實(shí)現(xiàn)K個神經(jīng)元且給定éK/Mù個膜電位存儲單元,M為正整數(shù),限定éK/Mù當(dāng)該存儲單元空閑時,M 個神經(jīng)元中的任意一個可以使用該存儲器。當(dāng)該存儲單元被占用且其他神經(jīng)元需要使用該存儲單元時,將按照上述沖突策略處理。在該機(jī)制下,每個神經(jīng)元的膜電位信息僅有一個存儲空間可供選擇,其發(fā)生存儲沖突概率較大。然而,這一機(jī)制可采用低成本的M 輸入1輸出選擇器硬件電路實(shí)現(xiàn)。多對多復(fù)用機(jī)制如圖3(b) 所示,其工作原理與多對一復(fù)用機(jī)制類似,將K 個神經(jīng)元以每組Q×M 數(shù)量(Q>1) 打包為若干組,即神經(jīng)元1到Q×M、Q×M+1到2(Q×M) 、...、K- (Q×M)+1到K。給定的éK/Mù個膜電位存儲單元以每組Q 數(shù)量均分為若干組(與神經(jīng)元組數(shù)相等),即存儲單元1到Q、Q+1到2Q、...、éK/Mù-Q+1到éK/Mù。每一神經(jīng)元組都部署了Q個專門的膜電位存儲單元,供組內(nèi)所有神經(jīng)元復(fù)用,即每一個神經(jīng)元有Q 個膜電位存儲空間可供選擇。相較于多對一復(fù)用機(jī)制的一個可選對象,其發(fā)生存儲器沖突的概率小。但這一機(jī)制需要使用Q×M 輸入Q 輸出交叉開關(guān)電路開關(guān)才能實(shí)現(xiàn),其復(fù)雜度相較于多對一機(jī)制大。全連接復(fù)用機(jī)制如圖3(c) 所示,主要工作原理和前兩策略相似,本質(zhì)上相當(dāng)于Q×M=K(K 個神經(jīng)元為一組,éK/Mù個存儲空間為一組)的多對多機(jī)制特例。每一個神經(jīng)元都有éK/Mù個存儲空間可供選擇。相較于前兩個機(jī)制,其發(fā)生存儲沖突的概率最小,但硬件實(shí)現(xiàn)最復(fù)雜,因?yàn)榻徊骈_關(guān)的輸入和輸出通道數(shù)最大。
總的來說,如表1所示,相較于傳統(tǒng)脈沖神經(jīng)元與膜電位存儲單元一一對應(yīng)策略,文章提出的三個膜電位存儲器復(fù)用機(jī)制都能減少膜電位存儲器的消耗,其存儲沖突概率隨其硬件實(shí)現(xiàn)復(fù)雜度增大而減少。多對一策略硬件實(shí)現(xiàn)復(fù)雜度最低,但存儲沖突概率最大;全連接機(jī)制雖實(shí)現(xiàn)復(fù)雜度最大,但沖突概率最??;多對多策略在這兩者之間取得了平衡?,F(xiàn)實(shí)中,可根據(jù)實(shí)際應(yīng)用場景、脈沖發(fā)放速率與硬件資源預(yù)算等選擇合適的M、Q 值和存儲機(jī)制。
4 結(jié)論
文章針對脈沖神經(jīng)網(wǎng)絡(luò)硬件系統(tǒng)高膜電位存儲開銷問題,提出了三個存儲復(fù)用機(jī)制:多對一、多對多及全連接。它們以不同的硬件實(shí)現(xiàn)復(fù)雜度和存儲沖突概率實(shí)現(xiàn)膜電位存儲單元的減少,進(jìn)而降低了整個硬件系統(tǒng)的成本。實(shí)際中,可以根據(jù)不同應(yīng)用場景選擇某一專門存儲機(jī)制,也可使硬件系統(tǒng)動態(tài)支持這三個機(jī)制以應(yīng)對復(fù)雜場景。未來的工作將基于液體狀態(tài)機(jī)或前饋脈沖神經(jīng)網(wǎng)絡(luò)等模型,整合神經(jīng)計(jì)算單元、權(quán)重存儲器、片上網(wǎng)絡(luò)技術(shù)與文章提出的膜電位存儲器復(fù)用機(jī)制,使用FPGA(現(xiàn)場可編程門陣列)設(shè)備實(shí)現(xiàn)一個完整的脈沖神經(jīng)網(wǎng)絡(luò)硬件系統(tǒng)。