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