文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190018
中文引用格式: 湯知日,朱若華,常勝. 一種基于憶阻特性的監(jiān)督神經(jīng)網(wǎng)絡算法及電路設計[J].電子技術應用,2019,45(4):19-22,28.
英文引用格式: Tang Zhiri,Zhu Ruohua,Chang Sheng. A memristor-based supervised neural network algorithm and its circuit design[J]. Application of Electronic Technique,2019,45(4):19-22,28.
0 引言
憶阻器[1](Memristor)最早于20世紀70年代由蔡少棠教授首先提出,作為除了電阻、電容和電感之外的第四類基本元器件,憶阻器表達了電荷量和磁通量之間的關系。2008年惠普實驗室利用TiO2為原材料首次制成了憶阻器實物[2]。由于憶阻器可以模擬人腦神經(jīng)元學習規(guī)則[3](Spiking Timing-Dependent Plasticity,STDP),因此將憶阻器用作電子突觸應用于人工神經(jīng)網(wǎng)絡之中逐漸成為憶阻器的研究熱點之一。
受工藝的限制,憶阻器實物的參數(shù)波動較大[4],一種可行的對其研究的做法是通過技術手段對憶阻器進行建模[5],從而探索其應用前景;另一方面,對于如何很好地將憶阻器應用于人工神經(jīng)網(wǎng)絡之中[6]也仍處在一個探索階段[7],目前尚無完備的理論或者實踐能夠將兩者很好地結合在一起。尋找一個新的思路和方法將憶阻器的特性在人工神經(jīng)網(wǎng)絡中發(fā)揮出來就顯得尤為重要,對人工神經(jīng)網(wǎng)絡和憶阻器兩個方向的發(fā)展都非常有價值。
針對目前憶阻器和人工神經(jīng)網(wǎng)絡結合不夠緊密的問題,本文采用現(xiàn)場可編程邏輯門陣列(Field Programmable Gate Array,F(xiàn)PGA)對憶阻器和人工神經(jīng)網(wǎng)絡實現(xiàn)進行數(shù)字電路搭建。利用該方式實現(xiàn)的有監(jiān)督的憶阻神經(jīng)網(wǎng)絡具有魯棒性強[8]、集成度高[9]、并行度很高[10]等優(yōu)點。目前FPGA的開發(fā)技術已經(jīng)十分完善,這一整套的設計流程使得對于神經(jīng)網(wǎng)絡的結構完善[11]十分方便,也貼近于電子系統(tǒng)的應用。本文根據(jù)憶阻器的存儲能力,在FPGA上將該網(wǎng)絡應用于圖像分類識別,得到了良好的實驗結果,為這類有監(jiān)督的憶阻神經(jīng)網(wǎng)絡的運用提供了一個參考。
1 憶阻器FPGA建模
2008年HP實驗室的研究人員采用兩塊鉑(Pt)作為正負電極,再將二氧化鈦(TiO2)薄膜置于正負電極之間,對其中—層TiO2進行氧空位摻雜操作。摻雜氧空位后,這一層的TiO2由于部分氧原子的缺失,導致其導電性大大增強,另一層TiO2不進行摻雜操作,體現(xiàn)出類似絕緣體的低導電性。當在憶阻器兩端施加一個大于閾值的電流或電壓時,摻雜和未摻雜的兩層TiO2之間會產(chǎn)生電子和空穴的相互移動,進而讓摻雜的分界面發(fā)生一定的位移,致使其阻值發(fā)生變化。這就是經(jīng)典的HP憶阻器。
根據(jù)HP憶阻器推導得到一般的流控憶阻器[12]模型如下:
其中M(t)為憶阻器的當前阻值。根據(jù)上式,利用Verilog代碼進行實現(xiàn)并在Quartus上進行仿真,設Roff=16 kΩ,Ron=100 Ω,D=10 nm,μv=10-14m2s-1V-1。憶阻器搭建成功的標志是當其兩端加上周期性三角函數(shù)電壓時,其伏安特性曲線為一個閉合的滯回曲線[2]。在輸入端加入U(t)=2sint,保持憶阻器參數(shù)不變,應用示波器來對憶阻器模型的伏安特性曲線進行測量,得到的結果如圖1所示。
由圖1可知,通過上述方法所實現(xiàn)的流控憶阻器模型可以體現(xiàn)憶阻器特有的性能,為將其應用于神經(jīng)網(wǎng)絡系統(tǒng)打下堅實的基礎。
2 監(jiān)督憶阻神經(jīng)網(wǎng)絡的設計和實現(xiàn)
2.1 整體網(wǎng)絡設計
基本的網(wǎng)絡結構由輸入層、隱含層和輸出層三層組成,憶阻器在網(wǎng)絡中作為權值存儲模塊,其存儲的阻值作為權值模塊需要輸出的權值,如圖2所示。
在硬件設計上,神經(jīng)網(wǎng)絡算法通過模塊化的手段進行實現(xiàn)。網(wǎng)絡中的神經(jīng)元結構和算法均由神經(jīng)元模塊進行,神經(jīng)元模塊通過與傳遞函數(shù)模塊進行運算,得到輸出誤差值,并且通過計算得到的誤差值來控制訓練模塊,誤差值同樣也會傳遞到權值更新模塊,更新之后的權值由憶阻器權值存儲模塊進行存儲和讀取。在該網(wǎng)絡的整體設計中,采用流水線方式[13]對整體進行優(yōu)化,盡可能減少多個寄存器同時賦值或者同時運算等操作,以期網(wǎng)絡的處理頻率達到較高的水平。經(jīng)過流水線設計的各模塊間連接次序如圖3所示。
傳遞函數(shù)模塊通常采用雙曲正切函數(shù),該函數(shù)在FPGA中可通過cordic算法[14]完成該設計。cordic算法是一種對三角函數(shù)或對數(shù)函數(shù)等非線性方程進行逼近的一種硬件算法,其利用循環(huán)迭代的方式對目標函數(shù)進行逼近。在硬件上設計cordic算法時,逼近位數(shù)設置的越高,計算精度也就越高,但是同時硬件資源也會消耗越多;如果位數(shù)較低,雖然硬件資源占用較少,但是相應的計算精度就會不夠,甚至會影響網(wǎng)絡識別精度。硬件上實際的設計必須根據(jù)實際需要來決定cordic算法的逼近位數(shù),所以本設計位數(shù)設置為27位,可以保證該算法在精度較高的情況下來控制硬件資源的占用。
誤差計算模塊需要預先設定教師信號,對上一次訓練的結果進行對比,在硬件中可以通過減法器計算得到權值更新量。該網(wǎng)絡通過訓練控制模塊對得到的權值更新量進行判斷,輸出訓練控制信號,決定下一步的操作是繼續(xù)當前樣本的訓練還是跳進下一幅樣本圖。在硬件電路上,訓練控制模塊由比較器構成。當網(wǎng)絡的結構較小時,可預先將教師信號儲存于寄存器中,直接帶入誤差計算模塊進行運算。
整個網(wǎng)絡計算過程通過流水線設計提升了運行速度,而在內(nèi)部計算中,包括最為復雜的傳遞函數(shù)模塊和憶阻器權值存儲模塊,均僅需要通過乘法器和減法器的搭配即可實現(xiàn),對硬件的資源與速度較為友好。
2.2 神經(jīng)元模塊設計
神經(jīng)元模塊是神經(jīng)網(wǎng)絡硬件化中最重要的基本模塊。以3×3像素的二值圖像為例,考慮到輸入神經(jīng)元與訓練樣本圖的每一個像素點對應,輸入層有10個神經(jīng)元。其中第一個輸入值為偏置電壓,值設為-1,后面9個神經(jīng)元分別對應9個點,當像素為黑色時,輸入值為1,當像素為白色時,輸入值為-1,如圖4所示。
訓練方式為,當一幅樣本訓練完后,接著訓練第二幅樣本圖,一直到所有樣本都訓練完,即代表訓練完成。如果網(wǎng)絡沒有達到設定的要求,則跳回第一幅樣本從頭開始訓練,直到完成為止。
以3×3圖像為例,隱層的神經(jīng)元個數(shù)3,通過輸入的數(shù)值和權值經(jīng)過乘累加計算得到Ii的結果,計算過程如下:
其中Wij為神經(jīng)元之間連接對應的權值,j為輸入神經(jīng)元的編號,i為隱層和輸出層神經(jīng)元的編號。由于輸入層神經(jīng)元個數(shù)為10,隱層神經(jīng)元個數(shù)為3,因此權值的個數(shù)一共為30個。上述乘累加運算結果可以直接通過寄存器的乘累加得到。
2.3 憶阻權值模塊設計
以3×3圖像為例,權值更新過程計算如下:
其中ΔQij為通過憶阻器的電荷量在訓練中的改變量。由于初始權值為0,可以得到:
其中Qij為累計通過憶阻器的電荷量。以當一次訓練結束之后需要修正憶阻權值模塊的權值時,可以根據(jù)式(5)和式(6),修改通過憶阻器兩端的電量值即可。
2.4 訓練控制模塊設計
以3×3圖像為例,當訓練集中的圖均輸出正確的分類結果時,代表網(wǎng)絡訓練完成,此時訓練停止。由于訓練集是依次輸入進行訓練,并且前一幅圖的輸出結果決定了下一個輸入值是下一幅圖還是返回第一幅圖,因此采用狀態(tài)機來對訓練控制模塊進行實現(xiàn)。有限狀態(tài)機初始狀態(tài)為狀態(tài)0,當?shù)谝环柧殬颖緢D像輸入時,判斷圖像的分類的結果是否正確,如果正確,有限狀態(tài)機跳至狀態(tài)1,不正確就跳至狀態(tài)0。當?shù)诙柧殬颖据斎霑r,判斷分類的結果是否正確,如果正確,則跳至狀態(tài)2,如果不正確,有限狀態(tài)機跳至狀態(tài)0,重新從第一個樣本圖開始訓練。以此類推,當所有的訓練樣本均分類正確時,有限狀態(tài)機會跳至最后一個狀態(tài),此時訓練控制模塊控制憶阻神經(jīng)網(wǎng)絡停止訓練,否則網(wǎng)絡會一直訓練下去。
3 實驗結果和分析
本文以神經(jīng)網(wǎng)絡訓練和測試中常用的3×3像素的二值圖像作為該神經(jīng)網(wǎng)絡系統(tǒng)的訓練和測試數(shù)據(jù)集,樣本集包括30幅3×3的二值圖像,每10幅樣本圖為一組,總共分為3個類別,分別是z、v、n和其被部分損壞的圖像,如圖5所示。
網(wǎng)絡的訓練以30幅圖為一個訓練周期,訓練的前10幅圖為字母z,中間10幅圖為字母v,最后10幅圖為字母n。理想情況下,輸入第一類,即字母z的圖像時,第一個輸出神經(jīng)元的值應該比第二個和第三個輸出值要大。輸入第二類和第三類與之類似。測試使用的樣本與訓練一致,任意一幅圖輸入進該系統(tǒng)應該得出正確的分類結果,連續(xù)將30幅圖輸入也一樣可以得到每一幅圖各自正確的分類結果。
根據(jù)上述理論設置好各類參數(shù),各權值初始值均為0~1之間的任意值,訓練一共耗時30個周期之后停止了,狀態(tài)機的指針也停在了最后一個周期,此時可認為訓練已結束。將30幅圖再依次輸入該系統(tǒng),得到的3個分類輸出如圖6所示。
圖6中,rst為置位信號,clk為時鐘信號,state為狀態(tài)機跳轉信號,k1、k2和k3分別對應z,v和n三個分類。從圖中可以看到,30個周期中,前10個周期的分類結果顯示第一輸出神經(jīng)元為高電平,即輸出為字母z,如圖中k1所示;中間10個周期的分類結果顯示第二輸出神經(jīng)元為高電平,即輸出為字母v,如圖中k2所示;最后10個周期的分類結果顯示第三輸出神經(jīng)元為高電平,即輸出為字母n,如圖中k3所示。由圖6可知,該網(wǎng)絡對3×3數(shù)據(jù)集的分類準確率為100%,驗證了該憶阻網(wǎng)絡的有效性和可靠性。
利用Quartus II軟件對整個設計進行綜合,選用型號為Cyclone II:EP2C70F896I8的FPGA,資源占用和處理速度如表1所示。
由表1可知,訓練總共需要30個時鐘周期。結合表1中的網(wǎng)絡整體處理速度可以得到整個訓練時長僅為t=30/(89.64×103)=0.33 ms,在測試時,從將一幅圖像輸入到硬件中到得到測試結果,僅需t=10 μs即可完成。與現(xiàn)有憶阻神經(jīng)網(wǎng)絡的硬件算法相比,該算法具有準確率高以及處理速度快的優(yōu)勢。
4 結論
本文提出了一種基于憶阻特性的監(jiān)督神經(jīng)網(wǎng)絡算法,并將其在FPGA上進行了實現(xiàn)。該設計首先通過對憶阻器進行建模和功能仿真,進而將該憶阻器模塊用作神經(jīng)網(wǎng)絡中的權值存儲模塊,最終搭建有監(jiān)督的憶阻神經(jīng)網(wǎng)絡。將該設計應用于圖像分類功能,得到了良好的實驗結果,體現(xiàn)出硬件電路高并行度和高處理速度的優(yōu)勢。該設計提出了一種憶阻器和神經(jīng)網(wǎng)絡的結合方法,也對監(jiān)督憶阻神經(jīng)網(wǎng)絡算法的電路系統(tǒng)實現(xiàn)給出了參考。
參考文獻
[1] 蔡坤鵬,王睿,周濟.第四種無源電子元件憶阻器的研究及應用進展[J].電子元件與材料,2010(4):78-82.
[2] 劉東青,程海峰,朱玄,等.憶阻器及其阻變機理研究進展[J].物理學報,2014,63(18):187301.
[3] 段美濤.基于STDP規(guī)則的憶阻神經(jīng)網(wǎng)絡及應用[D].重慶:西南大學,2013.
[4] 賈林楠,黃安平,鄭曉虎,等.界面效應調(diào)制憶阻器研究進展[J].物理學報,2012,61(21):217306-217306.
[5] 胡柏林,王麗丹,黃藝文,等.憶阻器Simulink建模和圖形用戶界面設計[J].西南大學學報(自然科學版),2011,33(9):50-56.
[6] 榮輝,張濟世.人工神經(jīng)網(wǎng)絡及其現(xiàn)狀與展望[J].電子技術應用,1995(10):4-5.
[7] 王樂毅.憶阻器研究進展及應用前景[J].電子元件與材料,2010(12):71-74.
[8] 陸燕,杜繼宏,梁循.人工神經(jīng)網(wǎng)絡在控制中的應用[J].電子技術應用,1996(2):4-7.
[9] 徐智勇,唐根偉,姜新泉,等.硬件友好型合成指紋鑒別算法的研究[J].電子技術應用,2016,42(10):54-57.
[10] 白艷宇,申超群,楊新鋒.結合SIFT特征和神經(jīng)網(wǎng)絡池的物體分類方法[J].電子技術應用,2017,43(7):130-134,139.
[11] 王蒙,常勝,王豪.一種自適應訓練的BP神經(jīng)網(wǎng)絡FPGA設計[J].現(xiàn)代電子技術,2016,39(15):115-118.
[12] 洪慶輝,曾以成,李志軍.含磁控和荷控兩種憶阻器的混沌電路設計與仿真[J].物理學報,2013,62(23):230502-230502.
[13] 張科峰,李朝培,古安強.一種可重構流水線結構模數(shù)轉換器的設計[J].電子技術應用,2008(5):51-53,58.
[14] 李全,李曉歡,陳石平.基于CORDIC算法的高精度浮點超越函數(shù)的FPGA實現(xiàn)[J].電子技術應用,2009,35(5):166-170.
作者信息:
湯知日,朱若華,常 勝
(武漢大學 物理科學與技術學院,湖北 武漢430072)