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