文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190018
中文引用格式: 湯知日,朱若華,,常勝. 一種基于憶阻特性的監(jiān)督神經(jīng)網(wǎng)絡(luò)算法及電路設(shè)計[J].電子技術(shù)應用,,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)元學習規(guī)則[3](Spiking Timing-Dependent Plasticity,STDP),,因此將憶阻器用作電子突觸應用于人工神經(jīng)網(wǎng)絡(luò)之中逐漸成為憶阻器的研究熱點之一,。
受工藝的限制,憶阻器實物的參數(shù)波動較大[4],,一種可行的對其研究的做法是通過技術(shù)手段對憶阻器進行建模[5],,從而探索其應用前景;另一方面,,對于如何很好地將憶阻器應用于人工神經(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)的應用,。本文根據(jù)憶阻器的存儲能力,在FPGA上將該網(wǎng)絡(luò)應用于圖像分類識別,,得到了良好的實驗結(jié)果,,為這類有監(jiān)督的憶阻神經(jīng)網(wǎng)絡(luò)的運用提供了一個參考。
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上進行仿真,,設(shè)Roff=16 kΩ,,Ron=100 Ω,,D=10 nm,μv=10-14m2s-1V-1,。憶阻器搭建成功的標志是當其兩端加上周期性三角函數(shù)電壓時,,其伏安特性曲線為一個閉合的滯回曲線[2]。在輸入端加入U(t)=2sint,,保持憶阻器參數(shù)不變,,應用示波器來對憶阻器模型的伏安特性曲線進行測量,得到的結(jié)果如圖1所示,。
由圖1可知,,通過上述方法所實現(xiàn)的流控憶阻器模型可以體現(xiàn)憶阻器特有的性能,為將其應用于神經(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ù)模塊進行運算,,得到輸出誤差值,,并且通過計算得到的誤差值來控制訓練模塊,誤差值同樣也會傳遞到權(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ù)較低,雖然硬件資源占用較少,,但是相應的計算精度就會不夠,,甚至會影響網(wǎng)絡(luò)識別精度。硬件上實際的設(shè)計必須根據(jù)實際需要來決定cordic算法的逼近位數(shù),,所以本設(shè)計位數(shù)設(shè)置為27位,,可以保證該算法在精度較高的情況下來控制硬件資源的占用,。
誤差計算模塊需要預先設(shè)定教師信號,,對上一次訓練的結(jié)果進行對比,在硬件中可以通過減法器計算得到權(quán)值更新量,。該網(wǎng)絡(luò)通過訓練控制模塊對得到的權(quán)值更新量進行判斷,,輸出訓練控制信號,決定下一步的操作是繼續(xù)當前樣本的訓練還是跳進下一幅樣本圖,。在硬件電路上,,訓練控制模塊由比較器構(gòu)成。當網(wǎng)絡(luò)的結(jié)構(gòu)較小時,,可預先將教師信號儲存于寄存器中,,直接帶入誤差計算模塊進行運算。
整個網(wǎng)絡(luò)計算過程通過流水線設(shè)計提升了運行速度,,而在內(nèi)部計算中,,包括最為復雜的傳遞函數(shù)模塊和憶阻器權(quán)值存儲模塊,均僅需要通過乘法器和減法器的搭配即可實現(xiàn),,對硬件的資源與速度較為友好,。
2.2 神經(jīng)元模塊設(shè)計
神經(jīng)元模塊是神經(jīng)網(wǎng)絡(luò)硬件化中最重要的基本模塊。以3×3像素的二值圖像為例,,考慮到輸入神經(jīng)元與訓練樣本圖的每一個像素點對應,,輸入層有10個神經(jīng)元。其中第一個輸入值為偏置電壓,,值設(shè)為-1,,后面9個神經(jīng)元分別對應9個點,當像素為黑色時,,輸入值為1,,當像素為白色時,輸入值為-1,,如圖4所示,。
訓練方式為,當一幅樣本訓練完后,,接著訓練第二幅樣本圖,,一直到所有樣本都訓練完,即代表訓練完成,。如果網(wǎng)絡(luò)沒有達到設(shè)定的要求,,則跳回第一幅樣本從頭開始訓練,,直到完成為止。
以3×3圖像為例,,隱層的神經(jīng)元個數(shù)3,,通過輸入的數(shù)值和權(quán)值經(jīng)過乘累加計算得到Ii的結(jié)果,計算過程如下:
其中Wij為神經(jī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為通過憶阻器的電荷量在訓練中的改變量。由于初始權(quán)值為0,,可以得到:
其中Qij為累計通過憶阻器的電荷量,。以當一次訓練結(jié)束之后需要修正憶阻權(quán)值模塊的權(quán)值時,可以根據(jù)式(5)和式(6),,修改通過憶阻器兩端的電量值即可,。
2.4 訓練控制模塊設(shè)計
以3×3圖像為例,當訓練集中的圖均輸出正確的分類結(jié)果時,,代表網(wǎng)絡(luò)訓練完成,,此時訓練停止。由于訓練集是依次輸入進行訓練,,并且前一幅圖的輸出結(jié)果決定了下一個輸入值是下一幅圖還是返回第一幅圖,,因此采用狀態(tài)機來對訓練控制模塊進行實現(xiàn)。有限狀態(tài)機初始狀態(tài)為狀態(tài)0,,當?shù)谝环柧殬颖緢D像輸入時,,判斷圖像的分類的結(jié)果是否正確,如果正確,,有限狀態(tài)機跳至狀態(tài)1,,不正確就跳至狀態(tài)0。當?shù)诙柧殬颖据斎霑r,,判斷分類的結(jié)果是否正確,,如果正確,則跳至狀態(tài)2,,如果不正確,,有限狀態(tài)機跳至狀態(tài)0,重新從第一個樣本圖開始訓練。以此類推,,當所有的訓練樣本均分類正確時,,有限狀態(tài)機會跳至最后一個狀態(tài),此時訓練控制模塊控制憶阻神經(jīng)網(wǎng)絡(luò)停止訓練,,否則網(wǎng)絡(luò)會一直訓練下去,。
3 實驗結(jié)果和分析
本文以神經(jīng)網(wǎng)絡(luò)訓練和測試中常用的3×3像素的二值圖像作為該神經(jīng)網(wǎng)絡(luò)系統(tǒng)的訓練和測試數(shù)據(jù)集,樣本集包括30幅3×3的二值圖像,,每10幅樣本圖為一組,,總共分為3個類別,分別是z,、v,、n和其被部分損壞的圖像,如圖5所示,。
網(wǎng)絡(luò)的訓練以30幅圖為一個訓練周期,訓練的前10幅圖為字母z,,中間10幅圖為字母v,,最后10幅圖為字母n。理想情況下,,輸入第一類,,即字母z的圖像時,第一個輸出神經(jīng)元的值應該比第二個和第三個輸出值要大,。輸入第二類和第三類與之類似,。測試使用的樣本與訓練一致,任意一幅圖輸入進該系統(tǒng)應該得出正確的分類結(jié)果,,連續(xù)將30幅圖輸入也一樣可以得到每一幅圖各自正確的分類結(jié)果,。
根據(jù)上述理論設(shè)置好各類參數(shù),各權(quán)值初始值均為0~1之間的任意值,,訓練一共耗時30個周期之后停止了,,狀態(tài)機的指針也停在了最后一個周期,此時可認為訓練已結(jié)束,。將30幅圖再依次輸入該系統(tǒng),,得到的3個分類輸出如圖6所示。
圖6中,,rst為置位信號,,clk為時鐘信號,state為狀態(tài)機跳轉(zhuǎn)信號,,k1,、k2和k3分別對應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可知,訓練總共需要30個時鐘周期,。結(jié)合表1中的網(wǎng)絡(luò)整體處理速度可以得到整個訓練時長僅為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è)計應用于圖像分類功能,,得到了良好的實驗結(jié)果,,體現(xiàn)出硬件電路高并行度和高處理速度的優(yōu)勢。該設(shè)計提出了一種憶阻器和神經(jīng)網(wǎng)絡(luò)的結(jié)合方法,,也對監(jiān)督憶阻神經(jīng)網(wǎng)絡(luò)算法的電路系統(tǒng)實現(xiàn)給出了參考,。
參考文獻
[1] 蔡坤鵬,王睿,,周濟.第四種無源電子元件憶阻器的研究及應用進展[J].電子元件與材料,,2010(4):78-82.
[2] 劉東青,,程海峰,朱玄,,等.憶阻器及其阻變機理研究進展[J].物理學報,,2014,63(18):187301.
[3] 段美濤.基于STDP規(guī)則的憶阻神經(jīng)網(wǎng)絡(luò)及應用[D].重慶:西南大學,,2013.
[4] 賈林楠,,黃安平,鄭曉虎,,等.界面效應調(diào)制憶阻器研究進展[J].物理學報,,2012,61(21):217306-217306.
[5] 胡柏林,,王麗丹,,黃藝文,等.憶阻器Simulink建模和圖形用戶界面設(shè)計[J].西南大學學報(自然科學版),,2011,,33(9):50-56.
[6] 榮輝,張濟世.人工神經(jīng)網(wǎng)絡(luò)及其現(xiàn)狀與展望[J].電子技術(shù)應用,,1995(10):4-5.
[7] 王樂毅.憶阻器研究進展及應用前景[J].電子元件與材料,,2010(12):71-74.
[8] 陸燕,杜繼宏,,梁循.人工神經(jīng)網(wǎng)絡(luò)在控制中的應用[J].電子技術(shù)應用,1996(2):4-7.
[9] 徐智勇,,唐根偉,,姜新泉,等.硬件友好型合成指紋鑒別算法的研究[J].電子技術(shù)應用,,2016,,42(10):54-57.
[10] 白艷宇,申超群,,楊新鋒.結(jié)合SIFT特征和神經(jīng)網(wǎng)絡(luò)池的物體分類方法[J].電子技術(shù)應用,,2017,43(7):130-134,,139.
[11] 王蒙,,常勝,王豪.一種自適應訓練的BP神經(jīng)網(wǎng)絡(luò)FPGA設(shè)計[J].現(xiàn)代電子技術(shù),,2016,,39(15):115-118.
[12] 洪慶輝,曾以成,,李志軍.含磁控和荷控兩種憶阻器的混沌電路設(shè)計與仿真[J].物理學報,,2013,,62(23):230502-230502.
[13] 張科峰,李朝培,,古安強.一種可重構(gòu)流水線結(jié)構(gòu)模數(shù)轉(zhuǎn)換器的設(shè)計[J].電子技術(shù)應用,,2008(5):51-53,58.
[14] 李全,,李曉歡,,陳石平.基于CORDIC算法的高精度浮點超越函數(shù)的FPGA實現(xiàn)[J].電子技術(shù)應用,2009,,35(5):166-170.
作者信息:
湯知日,,朱若華,常 勝
(武漢大學 物理科學與技術(shù)學院,,湖北 武漢430072)