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