本發(fā)明涉及計算機技術領域,尤其涉及一種應用于二值權重卷積網(wǎng)絡的處理系統(tǒng)及方法。
背景技術:
深度學習技術在近幾年得到了飛速的發(fā)展,深度神經網(wǎng)絡,尤其是卷積神經網(wǎng)絡,在圖像識別、語音識別、自然語言理解、天氣預測、基因表達、內容推薦和智能機器人等領域取得了廣泛的應用。通過深度學習獲得的深度網(wǎng)絡結構是一種運算模型,其中包含大量數(shù)據(jù)節(jié)點,每個數(shù)據(jù)節(jié)點與其他數(shù)據(jù)節(jié)點相連,各個節(jié)點間的連接關系用權重表示。伴隨著神經網(wǎng)絡復雜度的不斷提高,神經網(wǎng)絡技術在實際應用過程中存在占用資源多、運算速度慢、能量消耗大等問題。
在現(xiàn)有技術中,為解決上述問題,將二值權重卷積神經網(wǎng)絡模型應用到圖像識別、增強現(xiàn)實和虛擬現(xiàn)實等領域。二值權重卷積神經網(wǎng)絡通過將權重二值化(例如,采用1和-1表示權重)減少了數(shù)據(jù)位寬,極大地降低了參數(shù)容量并且提高了網(wǎng)絡模型運算速度。二值權重卷積神經網(wǎng)絡的出現(xiàn)降低了圖像識別等復雜系統(tǒng)運行所需要的硬件配置,擴展了卷積神經網(wǎng)絡的應用領域。
然而,目前大部分的深度學習應用是使用中央處理器和圖形處理單元等實現(xiàn)的,這些技術能效不高,在嵌入式設備或低開銷數(shù)據(jù)中心等領域應用時存在嚴重的能效問題和運算速度瓶頸,難以滿足應用的性能要求,因此,很難將其應用于移動電話、嵌入式電子設備等小型化輕量級設備中。
技術實現(xiàn)要素:
本發(fā)明針對二值權重卷積神經網(wǎng)絡的網(wǎng)絡特征和計算特征,提供一種應用于二值權重卷積網(wǎng)絡的處理系統(tǒng)及方法,以克服上述現(xiàn)有技術的缺陷。
根據(jù)本發(fā)明的一個方面,提供了一種應用于二值權重卷積神經網(wǎng)絡的處理系統(tǒng)。該系統(tǒng)包括:
至少一個存儲單元,用于存儲數(shù)據(jù)和指令;
至少一個控制單元,用于獲得保存在所述存儲單元的指令并發(fā)出控制信號;
至少一個計算單元,用于從所述存儲單元獲得卷積神經網(wǎng)絡中的一層的節(jié)點值和對應的二值權重值數(shù)據(jù)并通過執(zhí)行加減操作獲得下一層的節(jié)點值。
在本發(fā)明的系統(tǒng)中,所述計算單元包括卷積單元和累加器,其中,所述卷積單元接收卷積神經網(wǎng)絡中的一層的節(jié)點值和對應的二值權重值數(shù)據(jù),所述卷積單元的輸出耦合到所述累加器。
在本發(fā)明的系統(tǒng)中,所述卷積單元包括數(shù)值取反單元、多路選擇單元和加法器,其中,輸入數(shù)據(jù)分別通過所述數(shù)值取反單元接入至所述多路選擇單元以及直接接入至所述多路選擇單元,二值權重值數(shù)據(jù)接入至所述多路選擇單元以控制所述多路選擇單元的信號選通,所述多路選擇單元的輸出接入至所述加法器。
在本發(fā)明的系統(tǒng)中,所述二值權重值采用以下公式進行映射:
其中,z表示操作數(shù),binarize(z)表示映射后的值。
在本發(fā)明的系統(tǒng)中,所述二值權重值進一步映射為:
其中,z表示操作數(shù),r(z)表示映射后的值。
根據(jù)本發(fā)明的第二方面,提供了一種應用于二值權重卷積神經網(wǎng)絡的處理方法。該方法包括:獲得卷積神經網(wǎng)絡中的一層的節(jié)點值和對應的二值權重值數(shù)據(jù);通過執(zhí)行加減操作獲得下一層的節(jié)點值。
在本發(fā)明的方法中,所述二值權重值采用以下公式進行映射:
其中,z表示操作數(shù),binarize(z)表示映射后的值。
在本發(fā)明的方法中,通過執(zhí)行加減操作獲得下一層的節(jié)點值包括:當權重值為1時,將原始輸入數(shù)據(jù)傳送到加法器;以及當權重值為-1時,將經過數(shù)值取反后的輸入數(shù)據(jù)傳送到加法器。
在本發(fā)明的方法中,所述二值權重值進一步映射為:
其中,z表示操作數(shù),r(z)表示映射后的值。
與現(xiàn)有技術相比,本發(fā)明的優(yōu)點在于,基于本發(fā)明的系統(tǒng)可以實現(xiàn)面向二值卷積網(wǎng)絡的處理器或芯片,通過將權重值位寬降低至單比特,減少了存儲電路的開銷,降低了計算復雜度,此外,也降低了片上數(shù)據(jù)傳輸帶寬。與采用普通位寬的神經網(wǎng)絡相比,本發(fā)明提供的處理系統(tǒng)可以在不損失過多計算精度的情況下,有效降低芯片功耗和電路面積。
附圖說明
以下附圖僅對本發(fā)明作示意性的說明和解釋,并不用于限定本發(fā)明的范圍,其中:
圖1示出了根據(jù)本發(fā)明一個實施例的二值神經網(wǎng)絡的模型示意圖;
圖2示出了根據(jù)本發(fā)明一個實施例的神經網(wǎng)絡處理系統(tǒng)的結構框圖;
圖3示出了根據(jù)本發(fā)明另一實施例的神經網(wǎng)絡處理系統(tǒng)的結構框圖;
圖4示出了本發(fā)明的神經網(wǎng)絡處理系統(tǒng)中計算單元的結構框圖;
圖5示出了根據(jù)本發(fā)明的計算單元中的卷積單元的結構框圖;
圖6示出了根據(jù)本發(fā)明一個實施例的神經網(wǎng)絡的處理方法的流程圖。
具體實施方式
為了使本發(fā)明的目的、技術方案、設計方法及優(yōu)點更加清楚明了,以下結合附圖通過具體實施例對本發(fā)明進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
神經網(wǎng)絡結構包括輸入層、多個隱藏層和輸出層,在二值權重卷積神經網(wǎng)絡中,多層結構的第一層輸入值為原始圖像(在本發(fā)明中的“原始圖像”指的是待處理的原始數(shù)據(jù),不僅僅是狹義的通過拍攝照片獲得的圖像),因此在第一層(輸入層)計算時需要采用正常位寬(例如,8位、16位等)來進行計算,其余層可以采用二值方式進行計算,即通過對該層的節(jié)點值和其對應的權重值進行二值運算來得到下一層的節(jié)點。
參見圖1示出的二值神經網(wǎng)絡模型示意圖,假設
本發(fā)明旨在提供一種面向二值權重神經網(wǎng)絡的處理系統(tǒng)或稱作處理器,該系統(tǒng)在二值權重神經網(wǎng)絡計算過程中采用基本的加減操作來代替?zhèn)鹘y(tǒng)卷積神經網(wǎng)絡中的乘加操作,從而提升神經網(wǎng)絡的運算速度及能效。
圖2示出了根據(jù)本發(fā)明一個實施例的應用于二值權重神經網(wǎng)絡的處理系統(tǒng)的框圖。概括而言,本發(fā)明提供的神經網(wǎng)絡處理器基于存儲-控制-計算的結構。存儲結構用于存儲參與計算的數(shù)據(jù)、神經網(wǎng)絡權重及處理器操作指令;控制結構用于解析操作指令,生成控制信號,該信號用于控制處理系統(tǒng)內數(shù)據(jù)的調度和存儲以及神經網(wǎng)絡的計算過程;計算結構用于參與該處理器中的神經網(wǎng)絡計算操作,保證數(shù)據(jù)在計算單元中能夠正確地與相應權重進行計算。
具體地,參見圖2的實施例,提供了面向二值權重神經網(wǎng)絡的處理系統(tǒng)200,其包括至少一個存儲單元210、至少一個控制單元220和至少一個計算單元230??刂茊卧?20與存儲單元210、計算單元230連接。計算單元230和存儲單元210連接,用于從存儲單元210讀取或寫入數(shù)據(jù)。存儲單元210、控制單元220和計算單元230之間的數(shù)據(jù)通路包括h-tree或fat-tree等互聯(lián)技術。
存儲單元210用于存儲神經網(wǎng)絡處理系統(tǒng)外部傳來的數(shù)據(jù)(例如,原始特征圖數(shù)據(jù))或用于存儲處理過程中產生的數(shù)據(jù),包括處理過程中產生的處理結果或中間結果,這些結果可以來自于神經網(wǎng)絡處理系統(tǒng)內部的核心運算部件或其他外部運算部件。此外,存儲單元還可用于存儲參與計算的指令信息(例如,載入數(shù)據(jù)至計算單元、計算開始、計算結束、或將計算結果存儲至存儲單元等)。存儲單元可以是靜態(tài)隨機存儲器(sram)、動態(tài)隨機存儲器(dram)、寄存器堆等常見存儲介質,也可以是3d存儲器件等新型的存儲類型。
控制單元220用于獲取保存在存儲單元的指令并進行解析,進而根據(jù)解析得到的控制信號來控制計算單元230進行神經網(wǎng)絡的相關運算。控制單元220完成指令譯碼、數(shù)據(jù)調度、過程控制等工作。
計算單元230用于根據(jù)從控制單元220獲得的控制信號來執(zhí)行相應的神經網(wǎng)絡計算,計算單元230與存儲單元210相連,以獲得數(shù)據(jù)進行計算并將計算結果寫入到存儲單元210。計算單元230可完成神經網(wǎng)絡中的大部分計算,如,卷積操作、池化操作等。池化操作通常在卷積操作之后進行,其作用為降低卷積層特征向量,通常包括平均值池化和最大值池化兩類。平均值池化的方法為計算圖層內所有元素的平均值作為輸出結果,最大值池化的方法為計算圖層內所有元素的最大值最為輸出結果。通過池化操作可以改善圖層出現(xiàn)過擬合現(xiàn)象。
本領域的技術人員應理解的是,盡管圖2中未示出,該處理系統(tǒng)還包括地址尋址功能,用于將輸入的索引映射到正確的存儲地址,以從存儲單元中獲得需要的數(shù)據(jù)或指令,地址尋址功能可以實現(xiàn)在控制單元中或以獨立單元的形式實現(xiàn)。
圖3是根據(jù)本發(fā)明另一實施例的神經網(wǎng)絡處理系統(tǒng)的結構框圖。與圖2的神經網(wǎng)絡處理系統(tǒng)的區(qū)別是:在圖3(其中未示出各單元的連接關系)的神經網(wǎng)絡處理系統(tǒng)300中,根據(jù)存儲數(shù)據(jù)的類型不同,劃分成多個存儲單元,即輸入數(shù)據(jù)存儲單元311、權重存儲單元312、指令存儲單元313和輸出數(shù)據(jù)存儲單元314;計算單元包括多個可以并行處理的子計算單元1至n。
輸入數(shù)據(jù)存儲單元311用于存儲參與計算的數(shù)據(jù),該數(shù)據(jù)包括原始特征圖數(shù)據(jù)和參與中間層計算的數(shù)據(jù);權重存儲單元312用于存儲已經訓練好的神經網(wǎng)絡權重;指令存儲單元313用于存儲參與計算的指令信息,指令可被控制單元320解析為控制流來調度神經網(wǎng)絡的計算;輸出數(shù)據(jù)存儲單元314用于存儲計算得到的神經元響應值。通過將存儲單元進行細分,可將數(shù)據(jù)類型基本一致的數(shù)據(jù)集中存儲,以便于選擇合適的存儲介質并可以簡化數(shù)據(jù)尋址等操作。
此外,通過采用多個并行的計算單元,可以提供神經網(wǎng)絡的計算速度。
圖4示出了圖2和圖3中的計算單元的結構框圖和連接關系圖。參見圖4所示,計算單元由依次連接的卷積單元、加法單元(或加法器)、累加器單元、中間層緩沖單元、池化及批量歸一化單元等運算部件組成。應注意的是,在本文中,所述的卷積單元指的是在物理實現(xiàn)時通過加減操作來完成卷積的結果。
卷積單元可由原碼-補碼轉換單元、多路選擇器和加法器等單元組成,用于完成圖層數(shù)據(jù)與權重的卷積操作,輸出結果作為加法單元的輸入數(shù)據(jù)。
累加器由加法器單元組成,用于保存和累加加法單元的部分數(shù)據(jù)和結果。
中間層緩沖單元由存儲器組成,用于存儲單個卷積核完成卷積操作后的結果。
池化及批量歸一化單元對卷積輸出層進行池化操作。
在本發(fā)明的實施例中,可采用或門實現(xiàn)加法單元,或門的輸入為來自卷積單元的輸出結果,輸出值為單比特值,采用或門實現(xiàn)加法單元可以簡化運算、增加運算效率。在另一實施例中,可以采用漢明重量計算單元來實現(xiàn)加法單元。漢明重量計算單元的輸入為卷積單元的輸出結果,輸出值為輸入數(shù)據(jù)中邏輯1的數(shù)量,即漢明重量。采用漢明重量計算單元實現(xiàn)加法單元能夠精確實現(xiàn)求和操作。
進一步地,本發(fā)明提出一種適用于二值權重神經網(wǎng)絡的卷積單元,如圖5所示。卷積單元由數(shù)值取反單元、多路選擇單元和加法器單元組成。輸入數(shù)據(jù)(例如,卷積神經網(wǎng)絡中的一層的節(jié)點值)分別接入到數(shù)值取反單元以及多路選擇單元的一個輸入,數(shù)值取反單元接入至多路選擇單元的另一個輸入,權重數(shù)據(jù)接入至多路選擇單元中作為信號選通單元,多路選擇單元的輸出結果接入至加法器單元中,加法器單元的輸出結果作為卷積單元的輸出結果。
數(shù)值取反單元用于將輸入數(shù)值做取反操作。在本發(fā)明提供的應用于二值權重卷積神經網(wǎng)絡處理中,正數(shù)采用原碼表示,負數(shù)采用補碼表示,數(shù)值取反單元可將輸入數(shù)據(jù)做數(shù)值取反處理。例如,對于具有符號位的二進制正數(shù)0101(+5),輸入至數(shù)值取反單元后輸出的二進制補碼為1011(-5);對于采用補碼表示的具有符號位的二進制負數(shù)1010(-6),輸入值數(shù)值取反單元后輸出的二進制數(shù)為0110(+6)。
在卷積單元中原始輸入數(shù)據(jù)和數(shù)值取反后的輸入數(shù)據(jù)接入至多路選擇器中,當權重值為-1時,多路選擇器輸出經過數(shù)值取反后的輸入數(shù)據(jù),當權重值為1時,多路選擇器輸出原始輸入數(shù)據(jù)。加法器單元用于完成卷積運算中加法操作。
具體地,當采用本發(fā)明的卷積單元時,以卷積神經網(wǎng)絡某一層的y=x0×w0+x1×w1+x2×w2為例,當w0為1,w1為-1,w2為1時,則y可以表示為y=x0-x1+x2,即乘加運算過程轉化為加減運算。
此外,在本發(fā)明提供的基于二值權重神經網(wǎng)絡處理系統(tǒng)中,為了減少存儲空間并提高運算效率,在本發(fā)明的另外實施中,還可將權重數(shù)據(jù)進一步縮減。具體過程如下:
對于二值權重卷積神經網(wǎng)絡,權重可采用1和數(shù)值-1表示,因此在將傳統(tǒng)卷積神經網(wǎng)絡中的正常位寬的權重數(shù)據(jù)應用至二值權重卷積神經網(wǎng)絡時需要依據(jù)下式對圖層進行二值化處理。
其中,z表示輸入操作數(shù),binarize(z)表示映射結果,即式(1)表達的操作可理解為,當輸入操作數(shù)大于等于零時,所述操作數(shù)被二值化為1;當操作數(shù)小于零時,操作數(shù)被二值化為-1。
本領域的技術人員應當理解,除了采用上式(1)中的決定式的二值化方式外,還可采用其他方式進行映射,例如,通過概率方法來判斷映射為1或-1。
通常,可采用兩比特二進制數(shù)描述二值權重神經網(wǎng)絡中被二值化的權重數(shù)據(jù),其中高位為符號位,低位為數(shù)據(jù)位,1的二進制源碼為01,-1的二進制補碼為11。
可將上述采用兩比特表示的權重數(shù)據(jù)進行重映射,重映射函數(shù)r(z)為:
式(2)表達的操作可理解為,當輸入操作數(shù)等于1時,所述操作數(shù)保持數(shù)值1不變;當操作數(shù)為-1時,操作數(shù)被映射為數(shù)值0。
因此,本發(fā)明提出的二值權重神經網(wǎng)絡處理系統(tǒng)也可采用數(shù)值0代表二值權重神經網(wǎng)絡中數(shù)值為-1的權重值,采用數(shù)值1代表二值權重神經網(wǎng)絡中數(shù)值為1的權重值。載入至權重神經網(wǎng)絡處理器的權重值需要在片外進行預處理,即根據(jù)函數(shù)r(z)進行重映射。通過這種方式,可以將兩比特表示的權重值縮減為單比特。
圖6是本發(fā)明利用圖3的神經網(wǎng)絡處理系統(tǒng)進行神經網(wǎng)絡計算的方法流程圖,該方法包括:
步驟s1,控制單元對存儲單元尋址,讀取并解析下一步需要執(zhí)行的指令;
步驟s2,根據(jù)解析指令得到的存儲地址從存儲單元中獲取輸入數(shù)據(jù);
步驟s3,將數(shù)據(jù)和權重分別從輸入存儲單元和權重存儲單元載入至計算單元;
步驟s4,計算單元執(zhí)行神經網(wǎng)絡運算中的運算操作,其中包括卷積操作、池化操作等
步驟s5,將數(shù)據(jù)存儲輸出至存儲單元中。
本發(fā)明依據(jù)二值權重神經網(wǎng)絡中權重值為1和-1的特點,提供一種應用于二值權重卷積神經網(wǎng)絡的處理系統(tǒng),減少了神經網(wǎng)絡計算過程中數(shù)據(jù)位寬、提高卷積運算速度、降低了存儲容量及工作能耗。
本發(fā)明的卷積神經網(wǎng)絡處理器可應用了各種電子設備,例如、移動電話、嵌入式電子設備等。
以上已經描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本技術領域的普通技術人員來說許多修改和變更都是顯而易見的。本文中所用術語的選擇,旨在最好地解釋各實施例的原理、實際應用或對市場中的技術改進,或者使本技術領域的其它普通技術人員能理解本文披露的各實施例。