摘 要: 本文針對邊緣智能設備低功耗,輕算力的要求,采用了新型存算一體器件憶阻器作為基礎電路元件,設計了低功耗、圖像識別電路。該電路采用多個憶阻卷積層和憶阻全連接網絡串聯的方式,獲得了較高的識別精度。為了減小憶阻卷積層計算所需的憶阻交叉陣列的行尺寸和列尺寸的不平衡,同時降低輸入電壓方向電路的功耗,將輸入電壓反相器置于憶阻交叉陣列之后。該電路可以將完成憶阻卷積網絡運算所需的憶阻交叉陣列的行大小從 2M+1 減少到 M+1,同時將單個卷積核計算所需的反相器的數量降低到了 1,從而大幅度降低了憶阻卷積網絡的體積和功耗。利用數學近似,將 BN 層和 dropout 層計算合并到 CNN 層中,減小網絡層數同時降低電路的功耗。通過在 CIFAR10 數據集上的實驗表明,該電路可以有效地對圖像進行分類,同時具備推理速度快 (136ns) 和功耗低的優點 (單個神經元功耗小于 3.5uW)。
羅佳; 冉歡歡; 何凱霖; 丁曉峰, 控制與決策 發表時間:2021-08-02
關鍵詞: 邊緣計算;憶阻器;卷積;反相器;數據集;神經元
0 引 言
隨著近年來人工智能的蓬勃發展,大量卷積神經網絡相繼被提出,而進一步依托于互聯網的高速發展,由大量數字處理設備和服務器所組成的大型數據計算中心相應產生,這為各類模型的提出和運算提供了極佳的實驗基礎,同時數據計算中心的不斷擴大,也相應促進互聯網技術的相應發展,云計算正式誕生。云計算擁有大量的應用場景和需求,在商用上,類似于谷歌和亞馬遜這樣的互聯網公司早早布局 [12],擁有了持續的用戶數據接入。云計算目前擁有廣闊的市場和用戶,主要通過網絡通信接入海量的用戶數據運算后,反饋給用戶。顯然,整個過程極度依賴網絡通信,對通信要求較高,同時由于雙向通信會損失一部分的時間延時,對應高響應要求的處理事件不友好。而涉及到用戶數據,對于用戶的隱私保護和接入管理也同樣重要,云計顯得難以處理以上問題。在這樣的情況下,邊緣計算進入了大家的視野,將用戶數據保留于邊緣端,減少數據對于云計算的上傳,降低通信要求,在邊緣端部署部分算力,滿足低功耗要求,并且對用戶隱私數據進行實時保護 [3]。邊緣設備的計算方式正是解決上述問題的合理設計。而在對于海量圖像數據分析和處理領域,深度學習網絡擁有極佳的效率和性能,這可以滿足圖像識別對效率和精度的要求。而圖像數據的分析和處理的效率及性能極大程度取決于神經網絡的構架,Iandola 等人提出了一個名為“squeezunet”的小型卷積神經網絡架構 [4]。Szegedy 等人提出了一個更加深入的卷積神經網絡架構,稱為 Inception[5]。 Dai 等人對 Szegedy 的研究進行了改進 [6]。Zeiler 和 Fergus 提出了一種可視化卷積神經網絡激活函數 [7],Google 的研究人員提出了 BlazeFace[8] 一個超高性能的人臉檢測網絡,通過 BlazeFace,移動平臺上可以達到 1ms 以內的檢測速度,拓寬了很多基于邊緣計算的人臉相關聯應用的發展空間。Krizhevsky 等人提出了一種深度卷積神經網絡結構 AlexNet,這是深度學習的一個重大突破 [9]。AlexNet 由 5 個卷積層和 3 個全連接層組成。這種架構使用圖形處理單元(GPU)進行卷積運算,ReLU 作為激活函數, ReLU 激活函數不僅在計算方面比 Sigmoid 更加簡單,而且可克服 Sigmoid 函數在接近 0 和 1 時難以訓練的問題。并使用 dropout 來減少過擬合問題 [10]。傳統深度學習對于計算能力的需求極大,傳統的馮諾依曼計算機體系結構通過運算器和控制器進行數據處理,利用提取和存儲存儲器內的數據,數據傳輸效率較低,而神經態計算計算結構,有別與傳統的馮諾依曼計算機體系結構,以生物神經元系統的信息傳遞為參照,實現神經系統類似的神經元的計算 [11]。而作為模擬神經元的基礎電路元件所需的元件信息的傳遞功能,系統記憶學習能力和高度靈敏性也是目前神經態計算系統面臨的主要問題。隨著近年來元件領域的發展,納米級原件出現并迅速被廣泛應用,比傳統 CMOS 體積更小的納米硅薄膜晶體管的出現,不僅大大降低了電路的功耗,電路的速度也得到極大的提升 [12]。憶阻器的出現為上述問題提供了理想的解決方案。憶阻器是具有動態特性的電阻器,根據激勵電壓其阻值可變 [13]。與傳統電路元件相比,憶阻器的記憶性和靈活性使其更適應于神經態計算計算結構。并且由于憶阻器納米級尺寸和高速的特性,非常適合邊緣設備的低功耗和速度要求。因此,憶阻器可以作為神經態計算計算結構的基礎電路元件進行神經網絡突觸功能的記憶儲存功能,實現深度學習網絡的結合,擁有廣闊的應用空間 [14]。T.A.Bala 等人提出針對憶阻器深度學習神經網絡的高效激活電路,從電路設計方向對憶阻神經網絡進行優化 [15]。S.wen 和 H. Liu 和 J. Chen 等人針對憶阻器神經網絡實際應用場景對網絡進行裁剪和優化,通過二值化和稀疏化等方法降低網絡對憶阻器性能要求,提高性能 [1618]。G. Bao 等人針對憶阻器模型與組成電路特性,對比傳統網絡電路,基于電壓電流關系,仿真證明憶阻器網絡模型性能和優越性 [19]。G.Wan 等人通過聯系憶阻器再神經網絡中的應用,從電路和網絡上設計了一種具有改進的憶阻器遺忘模型,通過仿真證明有效性,在模擬人腦運算及記憶方面提供了可能性 [20]。通過上述工作,基于憶阻器構建的神經網絡電路為邊緣設備計算有著廣闊的應用前景和大量的實踐證明,本文從神經網絡各層的運算要求出發,對整體網絡構架優化電路,設計出適合各層網絡的憶阻器運算電路,依托于憶阻器記憶和計算一體的特性,提高圖像識別的效率,降低運算所需的功耗。
1 基本憶阻器神經電路
1.1 憶阻器模型
憶阻器的常用模型采用了其電壓閾值的特性,只有當輸入電壓超過憶阻器的閾值電壓時憶阻器的阻抗才會發生變化。輸入電壓 V (t),憶阻器阻抗 G(t),和當前產生電流 I(t) 有以下關系:
1.2 憶阻器交叉陣列和記憶卷積層
Vin 是外圍控制電路的輸入(j 是憶阻器交叉陣列的字線號數,Vin 是一個 j 維向量)。根據基爾霍夫電流定律,電路中任一個節點上在任一時刻,流入節點的電流之和等于流出節點的電流之和。
I 是一個 N 維向量,G 是一個 M ×N 的電導矩陣。對于一個 M ×N 的憶阻器交叉陣列,M ×N 維加法和乘法可同時進行,極大地提高了矩陣運算效率并且降低了功耗。而隨著憶阻器交叉陣列規模的增加,計算量需求更大的矩陣和向量也可以得到滿足。記憶卷積層的計算主要是向量與矩陣的點乘運算,FC 層可以看作是一種 H=1,W=1 的特殊卷積層。記憶卷積層由多個卷積核組成,輸出特征映射由卷積核的卷積結果和輸入數據組成。令第 k 次記憶卷積層的輸入圖像為 Hλk in×W λk in×Cλk in, 卷積核為 n×n,步長為 1,其中 n 為用戶決定的參數。當使用相同的填充模式時,輸出特征映射為 Hλk out ×W λk out ×Cλk out。 (i, j, c) 輸出特征可表示為
如果 i 和 j 是不變的,那么第 c 次卷積核 Wc 和輸入數據 I i,j in 是不變的,可以在憶阻器交叉陣列位線中得到一個輸出特征映射的值。通過上圖所示憶阻器交叉陣列,我們需要 (2×N2+1)×Cin 個憶阻器交叉陣列才能在一個卷積計算周期內得到一個 1 × 1 × Cout
1.3 憶阻卷積神經網絡上的批量標準化
在深度神經網絡中批量標準化層是一種典型的處理層。主要是為標準化每一層的輸入。理想的數據標準化公式如下: xˆ (k) bn = x (k) bn − E[x (k) bn ] √ V ar[x (k) bn ] . (7) 數據標準化將影響下一層網絡學習提取的特征。因此,BN 層還會包括數據重建功能。BN 層的輸出如下: γ (k) bn = β (k) bn xˆ (k) bn + ρ (k) bn , (8) β (k) bn 和 ρ (k) bn 是本層的學習參數,在反向傳播網絡中, BN 層的參數包括 E\[x (k) bn ],D\[x (k) bn ]。E\[x (k) bn ] 和 D\[x (k) bn ] 是網絡訓練過程中所有數據的均值和方差的統計值。在后面的網絡中這兩個參數可以通過下述方程計算:由于式 (7) 和式 (14) 意義相同,因此可只改變憶阻器交叉陣列的系數,便可以使 BN 層和 CNN 層共用一個憶阻器交叉陣列。當一個內核為 N 的 CNN 層后連接著一個 BN 層時,具體電路如圖 2(a) 所示,通過共用憶阻器減少了運算放大器的使用,這樣大大降低了功耗。
1.4 池化操作
池化層將輸入的特征映射分割為多個 N × N 的單元進行最大和平均值的計算,進一步簡化提取特征,因此提取的特征圖像尺寸變為原來的 1 N2。最大池化和平均池化是池化層的主要操作方式。最大池化通過并聯的兩個 nmos 二極管選擇輸入中的最大電壓,如圖 2(b) 所示,若輸入數大于 2,可以通過多個下述結構組合完成。平均池化一般通過加法電路實現,如圖 2(c) 所示,平均池化輸出一般可以通過下述計算:因此可以用這樣的加法電路可以用于憶阻神經網絡池化層。
1.5 限流二極管下的 ReLU
ReLU 函數是人工神經網絡中的典型激活函數 [21]。其計算簡單,有效避免梯度消失和梯度爆炸的特性,在深度神經網絡中得到了廣泛的應用。ReLU 函數通過以下方式將線形輸入非線性化。
ReLU 的實現相當于單向限制電路,只允許電壓大于 1 的信號通過,因此限流二極管非常適合擔當 ReLU 電路的基礎元件。但由于 ReLU 層的輸出可能會大于憶阻器的閾值,所以在 ReLU 后加上限制電路,實現方式如下。
F(x) = min(max(0, MT X + B), Vl). (18) 在本文實現 ReLU 層選用限流二極管的另一個原因是功耗較低,在此基礎上,只需加上一個上限二極管,實現如圖 2(d) 所示。當導通時電路存在壓降,所以在理論計算時應該加上二極管的偏置電壓。
2 憶阻卷積神經網絡的圖像分類
2.1 概述
憶阻卷積神經網絡由 5 個卷積層和 2 個全連接層組成,其輸入圖像是尺寸為 32×32×3 的 RGB 色彩圖像。前四個卷積層每層之間由一個最大池化層連接,第五個卷積層后經過平均池化層輸出到全連接層。全連接層輸出后通過遞增函數 softmax(x) 層將分類網絡結果 x 進行標準化映射到 01。softmax(x) 層輸出值最大的通道代表輸入圖像的分類結果,如圖 3 所示。
2.2 憶阻卷積層
根據文章 [22],卷積層的參數可以分離為一個正系數矩陣 K+ 和一個負系數矩陣 K−,當 σb > 0, xb > 0 時
對圖像分類的第一層憶阻卷積層,卷積核的大小為 3×3×3,輸出通道數為 32。為了實現卷積核的計算需求,則需要憶阻器交叉陣列的規模為 (3 × 3 × 3 + 1) × 32 × 2。通過 DAC 將數據轉換輸入進憶阻器交叉陣列,經過 BN 層和 RELU 處理后,通過 ADC 轉換將數據送出,如圖 4(a) 所示。
2.3 最大池化和憶阻卷積層
在第一個憶阻卷積層輸出后,經過最大池化層處理后的數據輸入第二個憶阻卷積層,第二次憶阻卷積的卷積核尺寸為 3×3×3,輸出通道數為 64,為了實現卷積核的計算需求,則需要憶阻器交叉陣列的規模為 (3 × 3 × 32 + 1) × 64 × 2,如圖 4(b) 所示。
2.4 平均池化和全連接層
在第五個憶阻卷積層輸出后,經過平均池化層處理后的數據輸入全連接層。將之前憶阻卷積層計算的特征映射為 3 × 3 × 256 映射為 1 × 1 × 512 的特征向量,需要平均池化電路實現,為了提高計算速度,可以通過同時鋪設多個平均池化電路,降低計算周期數來減少電路搭建,在一個周期內結束運算,提高整體運算速率,如圖 4(c) 所示。
3 實驗分析
3.1 精準度分析
目前國內外學者根據憶阻器的電路特性,建立了大量完善的 MATLAB 的仿真模型,本文的仿真模型采用的是學者們公認的密歇根大學盧偉教授提出的基于 MATLAB 的憶阻器電路模型 [23],能夠有效模擬憶阻器的電學特性。本文首先建立憶阻器的 MATLAB 電路模型,然后對神經網絡中的各層進行了電路設計,完成了憶阻卷積神經網絡電路的構建。通過文章 [24] 對憶阻器網絡參數進行編程。輸入尺寸為 32×32×3 的 RGB 圖像,輸出對該圖像的十種分類的預測。數據上采用 CIFAR10 數據集,該數據集包含十種分類的對象,每種分類圖像數量為 6000 張,總共 60000 張圖像數據集。本文實驗采用十個分類每個分類 5000 張,總共 50000 張圖像進行訓練,最后 10000 張圖像進行檢驗測試,準確率大于 %86,如圖 5 所示。
3.2 能耗分析
在憶阻卷積神經網絡中有五個憶阻卷積層和兩個全連接層。從憶阻卷積神經網絡的圖像分類中可以得出卷積層的等效電導率分布,如圖 6(a) 所示,并由等效電導率可以計算出憶阻卷積神經網絡的功耗。功耗主要由兩部分組成,一是來源于寫入電導率,二是預測過程產生功耗,上述兩個過程組成了憶阻卷積神經網絡工作的主要流程。基于憶阻卷積神經網絡的圖像分類功耗可以通過下述公式得到:
上式中,U 是通過單個憶阻器的電壓,G 為憶阻器的等效電導率,W 是憶阻器消耗的功率,由于憶阻器的 1 Gon 和 1 Goff 分別為 1K? 和 1M?,所以憶阻器的等效電壓電導率分別為 10−3 和 10−6。為了匹配網絡的權重,網絡權重和憶阻器電導率關系如下:
令 β=0.6,寫入電壓為 G(t)=6.5V,則可得出每個憶阻卷積層的功耗,如圖 6(b) 在導通階段,憶阻卷積平均功耗為 3.5μW。在網絡中的預測過程,功耗隨著輸入數據變化而變化,可以采用寫入電壓最大時的最大功耗表示,如圖 6(c) 所示。顯然,由以上兩個過程組成的憶阻卷積神經網絡的主要功耗,遠遠小于 CMOS 電路下同樣計算過程的功耗 [25]。表一展示了憶阻卷積神經網絡所需要的憶阻器資源量,由于憶阻器的尺寸一般為方形,為了盡可能發揮憶阻器的優勢并且合理利用資源,通常使憶阻器的行和列數目盡可能接近。表中可看出需要資源量最大的過程為第四個 MCCN 層,所以這里設計憶阻器交叉陣列規模為 2305×2305,電路便可以滿足網絡要求。憶阻器的響應時間在 100ps 以下,如果按照每個計算周期 100ps 計算,則本文設計的憶阻神經網絡電路所需的推理時間為:136.5ns。與文獻 [26] 相比,本文用多個最大池化電路在一個時鐘周期內完成計算,將最大池化層的計算周期從 512 個時鐘周期降到了 1 個時鐘周期。因此本文設計的電路的推理時間更少,電路速度更快。在憶阻器的功耗方面,本文的設計的電路的單個憶阻器的功耗略高于文獻 [26] 的數據,但本文設計的電路只需要 5 個憶阻陣列,而文獻 [26] 需要 17 個憶阻陣列,在憶阻陣列的數量方面遠小于對比文章的結果。憶阻陣列的數量直接決定了憶阻神經網絡電路的總功耗和面積。憶阻陣列的數量越多,憶阻神經網絡電路的體積越大,總功耗越高。因此本文設計的電路在推理
4 結論
本文基于新型計算存儲材料,憶阻器構建了憶阻神經網絡電路用于圖像識別,并成功對 CIFAR10 圖像進行了分類驗證。通過實驗,憶阻卷積神經網絡能比傳統計算構架以更高的實時性和更低的功耗進行圖像分類,通過對各層網絡電路的設計和優化,使計算構架更適合于當前的神經網絡和所針對的目標分類。通過優化,將卷積網絡運算所需的憶阻交叉陣列的行大小從 2M+1 減少到 M+1,通過對憶阻器交叉陣列系數的更改,在 BN 層和 CNN 層共用一個憶阻器交叉陣列,對運算放大器的替代,同時在ReLU 實現電路上通過二極管的限流,大大降低了功耗。實際電路的特征與目前 MATLAB 的仿真模型存在一定的差異,我們將在后續的實驗中進一步對仿真模型進行優化。同時我們也將開展憶阻神經網絡電路的設計與驗證工作,來證明本文的仿真電路的有效性。
論文指導 >
SCI期刊推薦 >
論文常見問題 >
SCI常見問題 >