本發(fā)明涉及一種神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)處理方法,尤其涉及一種神經(jīng)網(wǎng)絡(luò)加速器的實(shí)現(xiàn)方法。
本發(fā)明涉及一種模型的實(shí)現(xiàn)方法,尤其涉及一種神經(jīng)網(wǎng)絡(luò)模型的實(shí)現(xiàn)方法。
背景技術(shù):
人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN),是20世紀(jì)80年代以來人工智能領(lǐng)域興起的研究熱點(diǎn)。它從信息處理角度對(duì)人腦神經(jīng)元網(wǎng)絡(luò)進(jìn)行抽象,建立某種簡單模型,并按不同的連接方式組成不同的網(wǎng)絡(luò)。在工程與學(xué)術(shù)界也常簡稱為神經(jīng)網(wǎng)絡(luò)或類神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)是一種運(yùn)算模型,由大量的節(jié)點(diǎn)(或稱神經(jīng)元)之間相互連接構(gòu)成,如圖1所示的是一個(gè)神經(jīng)元的示意圖,每個(gè)節(jié)點(diǎn)代表一種特定的輸出函數(shù),稱為激勵(lì)函數(shù);每兩個(gè)節(jié)點(diǎn)間的連接都代表一個(gè)對(duì)于通過該連接信號(hào)的加權(quán)值,稱之為權(quán)重,這相當(dāng)于人工神經(jīng)網(wǎng)絡(luò)的記憶。網(wǎng)絡(luò)的輸出則依網(wǎng)絡(luò)的連接方式、權(quán)重值和激勵(lì)函數(shù)的不同而不同。而網(wǎng)絡(luò)自身通常都是對(duì)自然界某種算法或者函數(shù)的逼近,也可能是對(duì)一種邏輯策略的表達(dá)。
近年來異構(gòu)加速器憑借其優(yōu)秀的性能功耗比成為了目前體系結(jié)構(gòu)研究的主流方向。同時(shí)隨著深度學(xué)習(xí)的興起,深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的研究也重新回到了機(jī)器學(xué)習(xí)領(lǐng)域的潮頭。深度學(xué)習(xí)是機(jī)器學(xué)習(xí)研究中的一個(gè)新的領(lǐng)域,其動(dòng)機(jī)在于建立、模擬人腦進(jìn)行分析學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),它模仿人腦的機(jī)制來解釋數(shù)據(jù),例如圖像,聲音和文本。深度學(xué)習(xí)是一個(gè)復(fù)雜的機(jī)器學(xué)習(xí)算法,在語音和圖像識(shí)別方面取得的效果,遠(yuǎn)遠(yuǎn)超過先前相關(guān)技術(shù)。因此,如何在加速器上高效地實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)處理系統(tǒng)受到了學(xué)術(shù)界和工業(yè)界廣泛的關(guān)注。目前,深度學(xué)習(xí)算法可實(shí)現(xiàn)在云端的CPU上,雖然負(fù)載能力強(qiáng),但是在性能和功耗上均不占優(yōu)勢(shì),且成本十分昂貴,工作頻率高達(dá)2~3GHz,而相比之下,人腦工作頻率僅為幾赫茲,而且并行且分布式的人腦結(jié)構(gòu)與連續(xù)且集中式的馮諾依曼架構(gòu)顯然大大不同,且分立的內(nèi)存與處理器之間出現(xiàn)了數(shù)據(jù)帶寬瓶頸,因此這種實(shí)現(xiàn)方式并非有效而經(jīng)濟(jì)的。另一種深度學(xué)習(xí)的方法就是采用GPU(圖形處理器)來加速GPU出色的浮點(diǎn)計(jì)算性能,深度學(xué)習(xí)需要很高的內(nèi)在并行度、大量的浮點(diǎn)計(jì)算能力以及矩陣預(yù)算,而GPU可以提供這些能力,并且在相同的精度下,擁有更快的處理速度、更少的服務(wù)器投入和更低的功耗。但是GPU成本高、能耗大,且主要性能瓶頸在于PCIE(外設(shè)部件互聯(lián)標(biāo)準(zhǔn))帶寬對(duì)于數(shù)據(jù)傳輸?shù)南拗啤?/p>
人類大腦的神經(jīng)元盡管傳導(dǎo)信號(hào)的速度很慢,但是卻擁有龐大的數(shù)量,而且每個(gè)神經(jīng)元都通過成千上萬個(gè)突觸與其他神經(jīng)元相連,形成超級(jí)龐大的神經(jīng)元回路,以分布式和并發(fā)式的方式傳導(dǎo)信號(hào),從而彌補(bǔ)了單神經(jīng)元處理速度的不足。IBM主導(dǎo)的SyNAPSE巨型神經(jīng)網(wǎng)絡(luò)芯片,在70毫瓦的功率上提供100萬個(gè)“神經(jīng)元”內(nèi)核、2.56億個(gè)“突觸”內(nèi)核以及4096個(gè)“神經(jīng)突觸”內(nèi)核,甚至允許神經(jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)負(fù)載能力超越了馮·諾依曼架構(gòu)??梢?,采用深度定制的人工神經(jīng)網(wǎng)絡(luò)專屬芯片無論是在集成度、功耗和機(jī)器學(xué)習(xí)負(fù)載上都具備明顯優(yōu)勢(shì)。但是這種晶片采用的是易失性的SRAM(Static Random Access Memory,靜態(tài)隨機(jī)存取存儲(chǔ)器)作為數(shù)據(jù)存儲(chǔ),雖然SRAM讀寫速度極快,但是大腦神經(jīng)網(wǎng)絡(luò)并不需要極高的處理速度,而更高的存儲(chǔ)密度以及并行性才是優(yōu)先考慮的。而且其占用芯片面積和功耗都非常大,且掉電后數(shù)據(jù)將全部丟失,不可恢復(fù),也就是在掉電之前必須要將SRAM中大腦學(xué)習(xí)的數(shù)據(jù)保存至額外的非易失存儲(chǔ)器中,耗電又耗時(shí)。傳統(tǒng)的用軟件實(shí)現(xiàn)方式來模擬實(shí)現(xiàn)神經(jīng)元和突觸,在功耗和性能上都不占優(yōu)勢(shì)(需要開啟能耗高的CPU或者GPU),而且在模擬復(fù)雜的大腦皮質(zhì)行為模型和神經(jīng)元結(jié)構(gòu)時(shí)的可伸縮性、靈活性方面都較差。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)目前通過軟件實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)加速器但存在靈活性差,通過硬件實(shí)現(xiàn)但是存在數(shù)據(jù)存儲(chǔ)帶寬受限制,掉電后數(shù)據(jù)容易丟失的問題,本發(fā)明提供一種實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)加速器以及神經(jīng)網(wǎng)絡(luò)模型的方法。
本發(fā)明解決技術(shù)問題所采用的技術(shù)方案為:
一種神經(jīng)網(wǎng)絡(luò)加速器的實(shí)現(xiàn)方法,包括非易失性存儲(chǔ)器,所述非易失性存儲(chǔ)器包括在后道制造工藝流程中制備的數(shù)據(jù)存儲(chǔ)陣列,
在制備所述數(shù)據(jù)存儲(chǔ)陣列的前道制造工藝流程中,在所述數(shù)據(jù)存儲(chǔ)陣列下方的硅襯底上制備神經(jīng)網(wǎng)絡(luò)加速器電路。
優(yōu)選地,還包括在制備所述數(shù)據(jù)存儲(chǔ)陣列的前道制造工藝流程中,在所述數(shù)據(jù)存儲(chǔ)陣列下方的硅襯底上制備外圍邏輯電路。
優(yōu)選地,所述神經(jīng)網(wǎng)絡(luò)加速器電路用于執(zhí)行數(shù)學(xué)運(yùn)算、數(shù)組運(yùn)算、矩陣運(yùn)算、狀態(tài)操作、檢查點(diǎn)操作或序列和同步操作。
優(yōu)選地,所述神經(jīng)網(wǎng)絡(luò)加速器電路還包括晶體管邏輯電路,用于實(shí)現(xiàn)反饋型神經(jīng)網(wǎng)絡(luò)。
優(yōu)選地,所述反饋型神經(jīng)網(wǎng)絡(luò)包括Elman網(wǎng)絡(luò)和Hopfield網(wǎng)絡(luò)。
優(yōu)選地,所述非易失性存儲(chǔ)器為3D NAND存儲(chǔ)器或3D相變存儲(chǔ)器。
優(yōu)選地,所述數(shù)據(jù)存儲(chǔ)單元為垂直堆疊的多層數(shù)據(jù)存儲(chǔ)單元。
一種神經(jīng)網(wǎng)絡(luò)模型的實(shí)現(xiàn)方法,包括上述所述的權(quán)利要求,所述神經(jīng)網(wǎng)絡(luò)模型包括從其他神經(jīng)元X1~Xn傳過來的輸入信號(hào)、從神經(jīng)元j到神經(jīng)元i的連接權(quán)信號(hào)Wij(j=1~n)、偏置、激活函數(shù)、運(yùn)算函數(shù)和輸出信號(hào),
所述激活函數(shù)和運(yùn)算函數(shù)通過所述神經(jīng)網(wǎng)絡(luò)加速器電路實(shí)現(xiàn);
所述輸入信號(hào)、連接權(quán)值、偏置和輸出信號(hào)保存至所述非易失性存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)陣列中。
優(yōu)選地,對(duì)所述輸入信號(hào)、連接權(quán)信號(hào)、偏置、激活函數(shù)、運(yùn)算函數(shù)進(jìn)行公式運(yùn)算或邏輯運(yùn)算,所述公式運(yùn)算或邏輯運(yùn)算通過所述神經(jīng)網(wǎng)絡(luò)加速器電路實(shí)現(xiàn)。
本發(fā)明的有益效果:本發(fā)明采用3D非易失性存儲(chǔ)器來存儲(chǔ)大腦神經(jīng)元深度學(xué)習(xí)的結(jié)果,極大的滿足成萬上億個(gè)神經(jīng)元和突觸在深度學(xué)習(xí)過程中對(duì)存儲(chǔ)容量的需求,而且直接在3D數(shù)據(jù)存儲(chǔ)陣列的下方實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)加速器電路,使得數(shù)據(jù)存儲(chǔ)帶寬不受限制,并且掉電后數(shù)據(jù)依然不丟失,是一種低功耗、低成本、高性能的實(shí)現(xiàn)方法。還能通過該神經(jīng)網(wǎng)絡(luò)加速器電路和數(shù)據(jù)存儲(chǔ)陣列實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)模型,極大地降低了對(duì)內(nèi)存的消耗,提高了性能。
附圖說明
圖1為現(xiàn)有技術(shù)中一種神經(jīng)元示意圖;
圖2a為本發(fā)明的非易失性存儲(chǔ)器結(jié)構(gòu)的立體示意圖;
圖2b為本發(fā)明的非易失性存儲(chǔ)器結(jié)構(gòu)的截面示意圖;
圖3為M-P模型的神經(jīng)網(wǎng)絡(luò)模型;
圖4為本發(fā)明的實(shí)現(xiàn)圖3的一種神經(jīng)網(wǎng)絡(luò)模型的實(shí)現(xiàn)方法示意圖;
圖5為本發(fā)明的對(duì)輸入信號(hào)進(jìn)行微分運(yùn)算的一種神經(jīng)網(wǎng)絡(luò)模型的實(shí)現(xiàn)方法示意圖;
圖6為本發(fā)明的對(duì)輸入信號(hào)進(jìn)行積分運(yùn)算的一種神經(jīng)網(wǎng)絡(luò)模型的實(shí)現(xiàn)方法示意圖;
圖7為Hopfield神經(jīng)網(wǎng)絡(luò)示意圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明,但不作為本發(fā)明的限定。
本發(fā)明提出一種基于非易失性存儲(chǔ)器的一種神經(jīng)網(wǎng)絡(luò)加速器的實(shí)現(xiàn)方法。非易失性存儲(chǔ)器采用非平面設(shè)計(jì),在垂直方向上采用后道制造工藝流程(BEOL)堆疊多層數(shù)據(jù)存儲(chǔ)單元以獲得更高的存儲(chǔ)密度,在更小的空間內(nèi)容納更高存儲(chǔ)容量,進(jìn)而帶來很大的成本節(jié)約、能耗降低,例如3D NAND存儲(chǔ)器和3D相變存儲(chǔ)器。在這些3D數(shù)據(jù)存儲(chǔ)陣列1下方是采用前道制造工藝流程(FEOL)制備的存儲(chǔ)器的外圍邏輯電路。隨著存儲(chǔ)器芯片容量的不斷提高,數(shù)據(jù)存儲(chǔ)陣列1容量越來越大,而相應(yīng)的外圍邏輯電路面積卻增加不大,因而會(huì)空出很多額外的面積。本發(fā)明的一種神經(jīng)網(wǎng)絡(luò)加速器的實(shí)現(xiàn)方法,如圖2a和2b所示,是基于3D非易失性存儲(chǔ)器工藝,在前道制作工藝流程中在數(shù)據(jù)存儲(chǔ)陣列1的下方制備神經(jīng)網(wǎng)絡(luò)加速器電路3,也就是在存儲(chǔ)器的硅襯底2上的外圍邏輯電路旁的空白區(qū)域制備神經(jīng)網(wǎng)絡(luò)加速器電路3,也就是神經(jīng)網(wǎng)絡(luò)加速器。神經(jīng)網(wǎng)絡(luò)加速器就是用硬件電路來實(shí)現(xiàn)所有的神經(jīng)元和突觸,而存儲(chǔ)器用作存儲(chǔ)輸入和輸出數(shù)據(jù)。
所述的神經(jīng)網(wǎng)絡(luò)加速器電路3能夠?qū)崿F(xiàn)多種公式的運(yùn)算及操作,具體有:元素級(jí)的數(shù)學(xué)運(yùn)算:比如加法、減法、乘法、除法、指數(shù)運(yùn)算、對(duì)數(shù)運(yùn)算、積分運(yùn)算、微分運(yùn)算、大于、小于以及等于運(yùn)算等;數(shù)組運(yùn)算,比如數(shù)組合并、數(shù)組切片、數(shù)組分解、數(shù)組排序數(shù)組變形及數(shù)組洗牌等;矩陣運(yùn)算,比如矩陣乘法、矩陣反轉(zhuǎn)及矩陣行列式等;狀態(tài)操作,比如賦值;神經(jīng)網(wǎng)絡(luò)構(gòu)建模塊;比如檢查點(diǎn)操作,保存和恢復(fù);序列和同步操作,比如入隊(duì)、出隊(duì)等;控制流操作等。
本發(fā)明還基于上述的神經(jīng)網(wǎng)絡(luò)加速器提出一種神經(jīng)網(wǎng)絡(luò)模型的實(shí)現(xiàn)方法。一種稱為M-P模型(McCulloch-Pitts Model)的神經(jīng)網(wǎng)絡(luò)模型如圖3所示,采用矩陣相乘和加法運(yùn)算實(shí)現(xiàn),X1~Xn是從其他神經(jīng)元傳來的輸入信號(hào),Wij(j=1~n)表示從神經(jīng)元j到神經(jīng)元i的連接權(quán)值,b代表偏置。那么神經(jīng)元i的輸出與輸入的關(guān)系表示為:
yi=f(neti)
圖中yi表示神經(jīng)元i的輸出,函數(shù)f稱為激活函數(shù)或轉(zhuǎn)移函數(shù),net稱為凈激活。若神經(jīng)元的凈激活net為正,稱該神經(jīng)元處于激活狀態(tài)或興奮狀態(tài);若凈激活net為負(fù),則稱神經(jīng)元處于抑制狀態(tài)。上述神經(jīng)網(wǎng)絡(luò)模型或者成為一個(gè)處理單元,顯然可以通過軟件來實(shí)現(xiàn)上述過程。但本發(fā)明采取硬件電路來實(shí)現(xiàn),如圖4所示,其中矩陣相乘運(yùn)算、加法運(yùn)算以及激活函數(shù)均可利用3D非易失性存儲(chǔ)器數(shù)據(jù)存儲(chǔ)陣列1下方的硅片空間并采用前道制作工藝流程制成的神經(jīng)網(wǎng)絡(luò)加速器的硬件電路來實(shí)現(xiàn),而神經(jīng)元i的數(shù)據(jù)輸入信號(hào)X1~Xn、神經(jīng)元之間的連接權(quán)值Wij(j=1~n)、偏置信號(hào)值b以及神經(jīng)元的輸出信號(hào)值yi均可以保存在3D非易失性存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)陣列1中,不僅充分利用了3D非易失性存儲(chǔ)器數(shù)據(jù)存儲(chǔ)陣列1下方的空余硅片面積,而且使神經(jīng)元網(wǎng)絡(luò)能夠獲得極高的存儲(chǔ)密度,大大節(jié)省了數(shù)據(jù)傳輸功耗。
進(jìn)一步的,許多優(yōu)化算法,包括常見的機(jī)器學(xué)習(xí)訓(xùn)練算法,比如隨機(jī)微分下降算法,需要對(duì)一系列輸入信號(hào)進(jìn)行微分或者積分運(yùn)算,如圖5和圖6所示,這類運(yùn)算如果用軟件實(shí)現(xiàn)則非常消耗內(nèi)存。微分和積分運(yùn)算同樣可以利用本發(fā)明的一種神經(jīng)網(wǎng)絡(luò)模型的實(shí)現(xiàn)方法來實(shí)現(xiàn):對(duì)輸入信號(hào)進(jìn)行微分運(yùn)算的神經(jīng)網(wǎng)絡(luò)模型,是基于神經(jīng)網(wǎng)絡(luò)加速器來實(shí)現(xiàn),其中矩陣相乘的微分運(yùn)算、加法的微分運(yùn)算以及激活函數(shù)的微分運(yùn)算均可利用神經(jīng)網(wǎng)絡(luò)加速器的硬件電路實(shí)現(xiàn),而神經(jīng)元的數(shù)據(jù)輸入信號(hào)的微分值dy/dx、神經(jīng)元之間連接權(quán)值的微分值dy/dW、偏置信號(hào)的微分值dy/db以及神經(jīng)元的輸出信號(hào)值t均可以保存在3D非易失性存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)陣列1中。同理,對(duì)一系列輸入信號(hào)進(jìn)行高階微分和高階積分的神經(jīng)網(wǎng)絡(luò)模型也能夠采用本發(fā)明的方法來實(shí)現(xiàn)。
反饋型神經(jīng)網(wǎng)絡(luò)是一種從輸出到輸入具有反饋連接的神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)要比一般神經(jīng)網(wǎng)絡(luò)要復(fù)雜得多。典型的反饋型神經(jīng)網(wǎng)絡(luò)有:Elman網(wǎng)絡(luò)和Hopfield網(wǎng)絡(luò)。例如圖7所示的是一個(gè)Hopfield網(wǎng)絡(luò),在圖中,第0層僅僅是作為網(wǎng)絡(luò)的輸人,它不是實(shí)際神經(jīng)元,所以無計(jì)算功能;而第一層是實(shí)際神經(jīng)元,故而執(zhí)行對(duì)輸入信息和權(quán)系數(shù)乘積的累加和,并由非線性函數(shù)f處理后產(chǎn)生輸出信息。f是一個(gè)簡單的閥值函數(shù),如果神經(jīng)元的輸出信息大于偏置b,那么,神經(jīng)元的輸出就取值為1;小于偏置b,則神經(jīng)元的輸出就取值為偏置b。顯然該反饋網(wǎng)絡(luò)也能夠用本發(fā)明的實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)模型的方法來實(shí)現(xiàn),利用3D非易失性存儲(chǔ)器數(shù)據(jù)存儲(chǔ)陣列1下方的晶體管邏輯電路實(shí)現(xiàn)上述神經(jīng)元網(wǎng)絡(luò)模型。
本發(fā)明采用3D非易失性存儲(chǔ)器用來存儲(chǔ)神經(jīng)元和突觸的輸入數(shù)據(jù)以及存儲(chǔ)輸出結(jié)果,大大提高了存儲(chǔ)密度,降低成本,并且能夠保證掉電后數(shù)據(jù)不丟失。相比之下,傳統(tǒng)的用軟件實(shí)現(xiàn)方式來模擬實(shí)現(xiàn)神經(jīng)元和突觸,在功耗和性能上都不占優(yōu)勢(shì),可伸縮性、靈活性方面都較差。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)硬件實(shí)現(xiàn)方式采用的是易失性的SRAM存儲(chǔ)器,占用芯片面積和功耗都非常大,且掉電后數(shù)據(jù)丟失。本發(fā)明采用非易失性存儲(chǔ)器來存儲(chǔ)大腦神經(jīng)元深度學(xué)習(xí)的結(jié)果,極大的滿足成萬上億個(gè)神經(jīng)元和突觸在深度學(xué)習(xí)過程中對(duì)存儲(chǔ)容量的需求,而且直接在數(shù)據(jù)存儲(chǔ)陣列1的下方制備神經(jīng)網(wǎng)絡(luò)加速器,使得數(shù)據(jù)存儲(chǔ)帶寬不受限制,并且掉電后數(shù)據(jù)依然不丟失。因此本發(fā)明基于非易失性存儲(chǔ)器工藝實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)加速器是一種低功耗、低成本、高性能的實(shí)現(xiàn)方法。
以上所述僅為本發(fā)明較佳的實(shí)施例,并非因此限制本發(fā)明的實(shí)施方式及保護(hù)范圍,對(duì)于本領(lǐng)域技術(shù)人員而言,應(yīng)當(dāng)能夠意識(shí)到凡運(yùn)用本發(fā)明說明書及圖示內(nèi)容所做出的等同替換和顯而易見的變化所得到的方案,均應(yīng)當(dāng)包含在本發(fā)明的保護(hù)范圍內(nèi)。