王新勝,李宗霖,王夕悅
(哈爾濱工業(yè)大學(xué)(威海),山東 威海 264209)
航天事業(yè)是我國(guó)群策群力發(fā)展的重要事業(yè),航天事業(yè)的穩(wěn)步向前離不開(kāi)航天器的可靠性,電子元器件是航天技術(shù)快速提升的關(guān)鍵[1]。航天器正常工作時(shí)一般位于太空中,太空中存在大量高能粒子,如果集成電路暴露在太空環(huán)境中,那么集成電路將迅速出錯(cuò)甚至失效,有許多航天器受到空間環(huán)境影響而出現(xiàn)故障,其中45%左右的故障是由各類輻射失效所導(dǎo)致的[2]。隨著集成電路工藝技術(shù)的發(fā)展,納米級(jí)的MOSFET會(huì)產(chǎn)生一些新的輻射效應(yīng)[3]。實(shí)時(shí)判斷集成電路所處的工作狀態(tài),診斷集成電路的輻射失效狀態(tài),及時(shí)采取處理措施可以很大程度地降低航天器出現(xiàn)故障的概率。
憶阻器是具有一定“記憶”特性的4種電學(xué)基本元件之一,目前主要的應(yīng)用方向有數(shù)據(jù)存儲(chǔ)、邏輯運(yùn)算、神經(jīng)網(wǎng)絡(luò)運(yùn)算等[4],且憶阻器可以與CMOS電路集成。憶阻器電路在數(shù)值運(yùn)算方面比CMOS電路更具優(yōu)勢(shì),在實(shí)現(xiàn)2×2乘法器時(shí),使用純CMOS搭建需要62個(gè)器件,而使用憶阻器與MOSFET混合搭建時(shí)僅需要36個(gè)器件就可以實(shí)現(xiàn)相同功能[5],憶阻器也可以實(shí)現(xiàn)模擬信號(hào)的乘法。使用憶阻器交叉陣列[6]搭建CNN的硬件電路是一種完美選擇,通過(guò)憶阻器搭建的智能集成電路輻射效應(yīng)診斷系統(tǒng),可以將診斷電路與待診斷電路集成,可以有效掌控電路的狀態(tài),保障系統(tǒng)的可靠性。
對(duì)于SRAM單粒子效應(yīng)的模型最早使用的是矩形注入脈沖模型,其波形形狀與真實(shí)高能粒子入射器件所產(chǎn)生的波形相差較大。
雙指數(shù)注入脈沖模型是優(yōu)于矩形模型的一種單粒子效應(yīng)模型,該模型的公式為:
式中包含雙指數(shù)函數(shù),通過(guò)模型對(duì)參數(shù)a1、a2、p1、p2進(jìn)行參數(shù)提取,將提取的值代入就可以獲得一個(gè)相對(duì)貼合的單粒子效應(yīng)模型。
目前,最適合最常用的單粒子效應(yīng)模型是瞬態(tài)注入脈沖模型,其模型中的參數(shù)不僅擁有實(shí)際物理意義,且其仿真波形與實(shí)際情況十分接近,瞬態(tài)注入脈沖模型的表達(dá)式為:
式中:I為瞬態(tài)注入脈沖模型的電流;Q0為高能粒子向器件中注入的電荷量;τ為與電荷重組相關(guān)的時(shí)間常數(shù);t為當(dāng)前時(shí)間。
瞬態(tài)注入脈沖模型中的參數(shù)Q0主要影響瞬態(tài)電流源的電流幅值,而時(shí)間參數(shù)τ主要影響的是瞬態(tài)電流的寬度,也就是電荷被吸收掉的時(shí)間。該模型重復(fù)考慮了不同能量的高能粒子入射時(shí)電流波形的不同,與入射高能粒子的LET值具有相關(guān)性,十分貼合器件受到高能粒子輻射時(shí)的電流波形。
通過(guò)建立好的NMOS模型,研究了器件受到單粒子輻射時(shí)的漏極電流,圖1為器件在受到不同能量高能粒子入射時(shí)漏極電流的波形圖,由圖1可知,隨著高能粒子的LET的增加,器件中注入的電荷量隨之升高,電荷被吸收掉的時(shí)間也會(huì)隨之增加。
圖1 不同LET的高能粒子輻射下的器件漏極電流變化
通過(guò)Python編寫(xiě)腳本,對(duì)TCAD中仿真的單粒子效應(yīng)數(shù)據(jù)中的Q0和τ進(jìn)行提取,程序的主要功能是:按文件順序讀取所有仿真得到的csv格式的文件,通過(guò)文件名來(lái)判斷LET的數(shù)值,之后通過(guò)對(duì)csv中數(shù)值的讀取及處理之后計(jì)算出2個(gè)重要參數(shù)。對(duì)單粒子效應(yīng)數(shù)據(jù),本文在不同條件下采集了多組數(shù)據(jù),其中數(shù)據(jù)的變量包括:高能粒子入射位置和角度、高能粒子的LET、高能粒子的入射距離、高能粒子的半徑。
之后,在仿真軟件Virtuoso中,通過(guò)Verilog-A語(yǔ)言編寫(xiě)了單粒子效應(yīng)的模型,該模型是一種單端口的電流源,并可以與其他電路直接仿真,該模型的仿真結(jié)果如圖2所示。
圖2 Virtuoso中單粒子效應(yīng)瞬態(tài)電流源仿真結(jié)果
對(duì)于SRAM總劑量效應(yīng)的仿真,根據(jù)NMOS總劑量輻射效應(yīng)機(jī)理,主要針對(duì)NMOS閾值電壓的改變和MOS漏極電流的變化,仿真時(shí)對(duì)器件受到總劑量效應(yīng)時(shí)的情況進(jìn)行模擬。對(duì)于輻射劑量對(duì)NMOS閾值電壓的關(guān)系,描述為:
式中:ΔVit為NMOS閾值電壓的變化量(V);D為器件受到的輻射總劑量(krad)。
圖3為器件受到0~150 krad輻射時(shí)NMOS閾值電壓的變化與輻射劑量的關(guān)系曲線,在器件受到的輻射總劑量較低時(shí),器件的閾值電壓漂移量與輻射劑量基本是線性關(guān)系。
通過(guò)對(duì)漏極電流和電場(chǎng)強(qiáng)度的仿真提取就可以間接計(jì)算出器件中的載流子數(shù)目,進(jìn)而求得器件1/f噪聲的噪聲幅值。器件中的總載流子數(shù)計(jì)算公式為:
式中:W為器件結(jié)構(gòu)的寬;Ex為器件溝道內(nèi)的電場(chǎng)強(qiáng)度。
圖3 總劑量效應(yīng)的NMOS閾值電壓漂移與輻射劑量的關(guān)系
1/f噪聲的得名是由于其噪聲功率與頻率成反比,即在低頻時(shí)噪聲功率比較大,用于描述器件1/f噪聲的頻率與噪聲功率關(guān)系的參數(shù)稱為1/f噪聲的頻率指數(shù),一般來(lái)說(shuō),NMOS的1/f噪聲的頻率指數(shù)一般為1.0~2.0。另外,對(duì)于器件內(nèi)部1/f噪聲產(chǎn)生的機(jī)理來(lái)說(shuō),描述噪聲產(chǎn)生時(shí)間的公式為:
式中,z為陷阱的相對(duì)距離。
總劑量下器件漏極電流變化值的表達(dá)式如式(6)所示,通過(guò)器件模型提取出不同輻射劑量下的ΔNt,就可以計(jì)算出器件的漏極電流。
NMOS電路級(jí)閾值電壓漂移的仿真模型如圖4所示,通過(guò)在NMOS柵極外加電壓源的方法來(lái)仿真NMOS的閾值電壓漂移。
圖4 NMOS閾值電壓的漂移模型
根據(jù)總劑量輻射的相關(guān)原理,在Virtuoso中使用Verilog-A對(duì)器件總劑量輻射時(shí)的電流1/f噪聲模型進(jìn)行編寫(xiě),該模型具有2個(gè)端口,使用時(shí)類似電阻連接在NMOS的源極或漏極。
應(yīng)用神經(jīng)網(wǎng)絡(luò)進(jìn)行故障診斷的目的是將神經(jīng)網(wǎng)絡(luò)分類的思路應(yīng)用于電路故障診斷領(lǐng)域,即對(duì)電路不同工作狀態(tài)下的電源電流數(shù)據(jù)進(jìn)行識(shí)別。卷積神經(jīng)網(wǎng)絡(luò)不僅在圖像分類識(shí)別取得成功,并且在各種類型的故障診斷領(lǐng)域也有廣泛的應(yīng)用。但是用于集成電路電學(xué)數(shù)據(jù)這種一維連續(xù)的數(shù)據(jù)時(shí),需要對(duì)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)進(jìn)行仔細(xì)設(shè)計(jì)。卷積神經(jīng)網(wǎng)絡(luò)中的卷積操作可以看作是部分點(diǎn)積的過(guò)程,一般來(lái)說(shuō)卷積都是由卷積核與輸入的矩陣或向量的其中一部分進(jìn)行點(diǎn)積運(yùn)算。
1)一維卷積運(yùn)算。一維卷積運(yùn)算和向量的點(diǎn)積運(yùn)算比較相似,可以說(shuō)一維卷積是向量的局部點(diǎn)積運(yùn)算,對(duì)于沒(méi)有張量填充的卷積運(yùn)算時(shí),用于計(jì)算輸出張量大小與輸入張量關(guān)系的表達(dá)式為:
式中:N為輸出張量的大??;M為輸入張量的大小;K為一維卷積核的大小。
一維卷積的數(shù)學(xué)形式化的公式為:
2)最大池化。最大池化是在指定的數(shù)據(jù)區(qū)域內(nèi),取該區(qū)域內(nèi)的最大值進(jìn)行保留,這個(gè)數(shù)據(jù)區(qū)域是由最大池化的大小決定。最大池化同樣也分一維最大池化和二維最大池化。圖5為最大池化運(yùn)算的示意圖。其中,圖5(a)是一維最大池化的運(yùn)算過(guò)程,圖5(b)是二維最大池化的運(yùn)算過(guò)程,經(jīng)過(guò)最大池化運(yùn)算之后的特征大小變化與經(jīng)過(guò)平均池化運(yùn)算的特征大小變化相同。
全連接層一般位于卷積神經(jīng)網(wǎng)絡(luò)的最終輸出之前,主要作用是對(duì)經(jīng)過(guò)卷積池化等運(yùn)算得到的特征進(jìn)行展開(kāi)分類,把分布式特征映射到樣本標(biāo)記空間,同樣也是卷積神經(jīng)網(wǎng)絡(luò)的重要組成部分。一般來(lái)說(shuō)全連接層的輸入一般是多組特征展開(kāi)的一維特征向量,經(jīng)過(guò)一次或多次全連接運(yùn)算,最終輸出指定分類數(shù)的張量,輸出一般經(jīng)過(guò)Softmax分類器進(jìn)行分類。
圖5 最大池化運(yùn)算的示意圖
圖6 為全連接運(yùn)算的示意圖,神經(jīng)網(wǎng)絡(luò)前半部分運(yùn)算的結(jié)果展開(kāi)之后是一個(gè)寬度為20的特征,卷積神經(jīng)網(wǎng)絡(luò)是將數(shù)據(jù)分類成5類。其中,圖6(a)僅有1層全連接層直接輸出5分類的結(jié)果,圖6(b)增加了一層全連接層,經(jīng)過(guò)2層全連接層之后同樣輸出5分類的結(jié)果。
圖6 全連接運(yùn)算的示意圖
本文設(shè)計(jì)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示,卷積神經(jīng)網(wǎng)絡(luò)的輸入為14個(gè)連續(xù)的數(shù)據(jù),經(jīng)過(guò)6個(gè)通道3×1大小的卷積核進(jìn)行一維卷積后的數(shù)據(jù)為6個(gè)通道12×1共72個(gè)數(shù)據(jù),之后會(huì)經(jīng)過(guò)2×1最大一維池化層對(duì)一維卷積層的輸出數(shù)據(jù)進(jìn)行下采樣,第一層一維最大池化層的輸出數(shù)據(jù)為6通道6×1共36個(gè)數(shù)據(jù),下一層是3×1共12個(gè)通道的第二層一維卷積層,其運(yùn)輸結(jié)果是12通道4×1的數(shù)據(jù)共48個(gè),之后會(huì)經(jīng)過(guò)第二層2×1最大池化層的運(yùn)算輸出數(shù)據(jù)為12通道2×1共24個(gè)數(shù)據(jù),在特征提取之后,對(duì)數(shù)據(jù)展開(kāi)成一維數(shù)據(jù),通過(guò)全連接層進(jìn)行分類,這里由于數(shù)據(jù)分類的種類較少,因此全連接只用了一層運(yùn)算后直接輸出3×1的張量。
由于一般的卷積神經(jīng)網(wǎng)絡(luò)激活函數(shù)為ReLU激活函數(shù),但由于ReLU激活函數(shù)的正數(shù)部分沒(méi)有上限,如果通過(guò)憶阻器硬件電路實(shí)現(xiàn),憶阻器卷積神經(jīng)網(wǎng)絡(luò)計(jì)算出的電流或電壓值也沒(méi)有上限,這不符合憶阻器電路對(duì)電壓的要求。為下一步神經(jīng)網(wǎng)絡(luò)的硬件實(shí)現(xiàn)做準(zhǔn)備,該輻射故障診斷的一維神經(jīng)網(wǎng)絡(luò)用到的激活函數(shù)是Sigmoid激活函數(shù),Sigmoid激活函數(shù)可以將輸出值限定在(0,1)的范圍內(nèi),該范圍內(nèi)的電壓值是滿足神經(jīng)網(wǎng)絡(luò)硬件電路的運(yùn)算范圍的。
圖7 輻射故障診斷的一維神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
數(shù)據(jù)在輸入神經(jīng)網(wǎng)絡(luò)之前經(jīng)過(guò)數(shù)據(jù)的預(yù)處理,數(shù)據(jù)預(yù)處理實(shí)現(xiàn)的功能是將輸出的原始數(shù)據(jù)等比例放縮到區(qū)間(-1,1),數(shù)據(jù)預(yù)處理標(biāo)準(zhǔn)化的公式為:
式中:Ds為經(jīng)過(guò)預(yù)處理標(biāo)準(zhǔn)化后的數(shù)據(jù);Di為原始未經(jīng)處理的數(shù)據(jù);Darg為輸入數(shù)據(jù)的算術(shù)平均值;Dmax為輸入數(shù)據(jù)中的最大值;Dmin為輸入數(shù)據(jù)中的最小值。
由于故障診斷神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù)相對(duì)較小,在進(jìn)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)可能出現(xiàn)訓(xùn)練速度慢的情況。使用數(shù)據(jù)預(yù)處理對(duì)輸入數(shù)據(jù)標(biāo)準(zhǔn)化,一方面對(duì)數(shù)據(jù)按照一定比例進(jìn)行放大,另一方面加快神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)的收斂速度。不同數(shù)據(jù)放大比例對(duì)數(shù)據(jù)處理存在一定影響,合理的數(shù)據(jù)處理可以提升神經(jīng)網(wǎng)絡(luò)訓(xùn)練效率,與數(shù)據(jù)直接放大相比,可以放大相對(duì)差距,在限定數(shù)據(jù)范圍的同時(shí)使數(shù)據(jù)差異化。
并不是所有神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)都具有學(xué)習(xí)能力,本文對(duì)搭建神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)能力的驗(yàn)證,用于驗(yàn)證的相關(guān)輸入數(shù)據(jù)集如表1所示。為了使數(shù)據(jù)能夠輸入到卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,需要調(diào)整數(shù)據(jù)大小,與神經(jīng)網(wǎng)絡(luò)輸入同樣的數(shù)據(jù)大小,因此數(shù)據(jù)寬度同樣也為14。
表1 于驗(yàn)證輻射故障診斷神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)能力的數(shù)據(jù)表
表1中,x是區(qū)間[0,19]中所有整數(shù),r是區(qū)間(-1,1)中的隨機(jī)數(shù)。將運(yùn)算得到的結(jié)果轉(zhuǎn)換為張量輸入到輻射故障診斷神經(jīng)網(wǎng)絡(luò),進(jìn)行學(xué)習(xí)能力的驗(yàn)證。將神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)率設(shè)置為0.05,動(dòng)量設(shè)置為0.9,迭代次數(shù)設(shè)置為17 k,將數(shù)據(jù)依次輸入神經(jīng)網(wǎng)絡(luò),最后驗(yàn)證了該卷積神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力,圖8為驗(yàn)證神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)能力時(shí)訓(xùn)練迭代次數(shù)與訓(xùn)練損失的關(guān)系圖。由圖8可以看出,在訓(xùn)練次9k左右的時(shí)候,該卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練損失已經(jīng)收斂,且訓(xùn)練的損失低于0.005,證明了神經(jīng)網(wǎng)絡(luò)具有學(xué)習(xí)能力,且對(duì)3種數(shù)據(jù)類型的分類效果比較好。
圖8 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)能力時(shí)迭代次數(shù)與訓(xùn)練損失
在對(duì)輻射故障診斷神經(jīng)網(wǎng)絡(luò)訓(xùn)練之前,本文通過(guò)對(duì)輻射故障診斷神經(jīng)網(wǎng)絡(luò)的權(quán)值初始化,以加快輻射故障診斷神經(jīng)網(wǎng)絡(luò)參數(shù)的收斂速度。圖9為神經(jīng)網(wǎng)絡(luò)的權(quán)重偏置初始化策略,采用Xavier[8]正態(tài)分布進(jìn)行初始化,一維卷積層和全連接層的偏置全部初始化為0.0。
圖9 神經(jīng)網(wǎng)絡(luò)的權(quán)重偏置初始化策略
由于本文采集的仿真數(shù)據(jù)是csv格式,通過(guò)Python編寫(xiě)數(shù)據(jù)處理腳本,將所有csv文件自動(dòng)加入標(biāo)簽(label)號(hào)后寫(xiě)入訓(xùn)練集和測(cè)試集2個(gè)txt文件中。神經(jīng)網(wǎng)絡(luò)的輸出為3類,具體分類如表2所示。
表2 輻射故障診斷神經(jīng)網(wǎng)絡(luò)的輸出類別
通過(guò)Pytorch編寫(xiě)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)及其訓(xùn)練程序,神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)程序包括網(wǎng)絡(luò)結(jié)構(gòu)的描述和初始化策略的實(shí)現(xiàn)。由于數(shù)據(jù)并非卷積神經(jīng)網(wǎng)絡(luò)的常用圖片數(shù)據(jù),訓(xùn)練時(shí)并未采用數(shù)據(jù)加載器(loader),而是通過(guò)程序代碼將數(shù)據(jù)轉(zhuǎn)換為張量(Tensor)格式。神經(jīng)網(wǎng)絡(luò)的訓(xùn)練程序?yàn)椋菏紫葘?duì)訓(xùn)練集的txt文件進(jìn)行讀取,通過(guò)式(8)對(duì)數(shù)據(jù)預(yù)處理,之后通過(guò)設(shè)定訓(xùn)練的迭代次數(shù)(iteration)對(duì)單組數(shù)據(jù)輸入網(wǎng)絡(luò)的訓(xùn)練次數(shù),輻射故障診斷神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)使用的是隨機(jī)梯度下降(stochastic gradient descent,SGD)方法。只有當(dāng)學(xué)習(xí)率處于合適范圍時(shí),訓(xùn)練誤差才會(huì)既快速又穩(wěn)定的下降。對(duì)于神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)的學(xué)習(xí)率來(lái)說(shuō),目前較佳的方法是先采用一個(gè)相對(duì)較高的學(xué)習(xí)率,使訓(xùn)練誤差迅速下降,之后逐漸減小神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)率,使訓(xùn)練誤差相對(duì)穩(wěn)定的下降至一個(gè)趨于穩(wěn)定的值,本文中輻射故障診斷神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)的學(xué)習(xí)率在0.000 1~0.001,在選擇學(xué)習(xí)率時(shí)進(jìn)行了多次試驗(yàn),著重于訓(xùn)練損失與迭代次數(shù)之間的關(guān)系。學(xué)習(xí)率對(duì)神經(jīng)網(wǎng)絡(luò)訓(xùn)練的影響如圖10所示。
圖10 學(xué)習(xí)率對(duì)神經(jīng)網(wǎng)絡(luò)訓(xùn)練的影響
通過(guò)SGD方法訓(xùn)練時(shí),神經(jīng)網(wǎng)絡(luò)動(dòng)量主要影響參數(shù)修正梯度的下降速度,圖11為SGD中動(dòng)量的作用示意圖,從圖11中可以看出,在使用動(dòng)量相關(guān)算法后,神經(jīng)網(wǎng)絡(luò)的梯度下降時(shí)波動(dòng)范圍上升了,且波動(dòng)方向不是向著最終的中心方向,但如果動(dòng)量的比例值設(shè)置在合適范圍,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練將事半功倍,會(huì)加快收斂速度、減少訓(xùn)練時(shí)間,本文中輻射故障診斷神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)動(dòng)量設(shè)置為0.8。訓(xùn)練完成后,保存訓(xùn)練后的網(wǎng)絡(luò)結(jié)構(gòu)及網(wǎng)絡(luò)參數(shù)。
圖11 動(dòng)量對(duì)神經(jīng)網(wǎng)絡(luò)梯度下降的影響
基于2.2小節(jié)研究的訓(xùn)練方法及關(guān)鍵參數(shù),對(duì)輻射故障診斷神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,由于卷積運(yùn)算需要進(jìn)行多次的乘法和加法,理論上可以通過(guò)CPU和GPU進(jìn)行訓(xùn)練,CPU注重于單任務(wù)快速處理,而GPU重點(diǎn)關(guān)注于多任務(wù)并行處理,圖12為CPU和GPU架構(gòu)的對(duì)比。從CPU和GPU架構(gòu)上的區(qū)別可以看出,對(duì)于卷積神經(jīng)網(wǎng)絡(luò)的卷積運(yùn)算,使用GPU的運(yùn)算速度會(huì)優(yōu)于CPU的運(yùn)算速度。因此,對(duì)輻射故障診斷神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,本文使用的是基于英偉達(dá)統(tǒng)一計(jì)算設(shè)備架構(gòu)(compute unified device Architecture,CUDA)的GPU。訓(xùn)練時(shí)使用的具體軟硬件配置如表3所示,訓(xùn)練過(guò)程中的關(guān)鍵參數(shù)設(shè)置如表4所示。
圖12 CPU和GPU架構(gòu)的對(duì)比圖
表3 訓(xùn)練輻射故障診斷神經(jīng)網(wǎng)絡(luò)的軟硬件配置
表4 訓(xùn)練的關(guān)鍵參數(shù)設(shè)置
訓(xùn)練過(guò)程中的損失函數(shù)變化如圖13所示,輻射故障診斷神經(jīng)網(wǎng)絡(luò)在訓(xùn)練數(shù)據(jù)量到達(dá)1 000 k時(shí)已經(jīng)接近于收斂,經(jīng)測(cè)試集對(duì)訓(xùn)練完成的神經(jīng)網(wǎng)絡(luò)進(jìn)行測(cè)試,測(cè)試準(zhǔn)確度達(dá)到99%。
圖13 訓(xùn)練過(guò)程中訓(xùn)練損失函數(shù)變化圖
對(duì)測(cè)試集數(shù)據(jù)進(jìn)行測(cè)試,由于輻射故障診斷神經(jīng)網(wǎng)絡(luò)是三分類輸出的,輸出的3個(gè)張量值作為3個(gè)坐標(biāo)軸,繪制輸出散點(diǎn)分類圖,如圖14所示。
至此,基于軟件平臺(tái)對(duì)輻射故障診斷神經(jīng)網(wǎng)絡(luò)的訓(xùn)練工作已經(jīng)基本完成,訓(xùn)練后的網(wǎng)絡(luò)已經(jīng)成功對(duì),3種不同工作狀態(tài)采集的電源電流數(shù)據(jù)進(jìn)行分類識(shí)別,且識(shí)別的準(zhǔn)確度較高。
圖14 輻射故障診斷神經(jīng)網(wǎng)絡(luò)測(cè)試分類散點(diǎn)圖
完成對(duì)輻射故障診斷神經(jīng)網(wǎng)絡(luò)的訓(xùn)練之后,通過(guò)憶阻器搭建神經(jīng)網(wǎng)絡(luò)的硬件電路,1971年,Leon Chua發(fā)現(xiàn)了缺少描述電荷量與磁通之間關(guān)系的電路元件,對(duì)其進(jìn)行論證并命名為憶阻器[9],圖15為電路參量之間的關(guān)系。2008年,惠普實(shí)驗(yàn)室的Stan Williams的團(tuán)隊(duì)通過(guò)實(shí)例證明了納米級(jí)電路系統(tǒng)中產(chǎn)生了憶阻現(xiàn)象[10],第一次獲得了現(xiàn)實(shí)中的憶阻器模型。
圖15 憶阻器與常見(jiàn)電學(xué)量之間的關(guān)系
惠普實(shí)驗(yàn)室提出的憶阻器模型如圖16所示,憶阻器主要由2片鉑片以及2層二氧化鈦薄膜構(gòu)成。其中一層二氧化鈦薄膜摻入了氧空位,其厚度為w;另一層未摻入氧空位厚度為D-w。摻入氧空位的二氧化鈦薄膜具有良好的導(dǎo)電性,而未摻入氧空位的薄膜導(dǎo)電性較差。在憶阻器2個(gè)電極外加電壓時(shí),2種二氧化鈦的薄膜邊界會(huì)移動(dòng)。正向電壓時(shí),邊界將朝向未摻雜層進(jìn)行移動(dòng),使憶阻器的電阻降低;負(fù)向電壓時(shí),邊界將朝向摻雜層進(jìn)行移動(dòng)使憶阻器的電阻升高,即憶阻器的電阻會(huì)隨著電壓的變化而變化。
圖16 憶阻器的模型示意圖
當(dāng)二氧化鈦邊界移動(dòng)到2個(gè)金屬鉑片時(shí),出現(xiàn)2個(gè)極限情況,即w=0和w=D,這2種狀態(tài)下憶阻器的電阻值定義為關(guān)斷電阻Roff和導(dǎo)通電阻Ron。研究人員定義憶阻器的電阻為摻雜層的電阻和非摻雜層電阻的和,任意時(shí)刻憶阻器的電阻計(jì)算公式為:
式中:Rm為憶阻器的電阻值;Ron為憶阻器完全導(dǎo)通時(shí)的電阻值;Roff為憶阻器完全關(guān)斷時(shí)的電阻值;x為二氧化鈦邊界所在位置的比例;w為二氧化鈦邊界所在位置;D為二氧化鈦薄膜的總厚度。
一般來(lái)說(shuō),二氧化鈦邊界的移動(dòng)速度與器件內(nèi)離子的移動(dòng)速度有關(guān),即:
式中:μv為離子平均的漂移率;k為邊界的移動(dòng)速度與流經(jīng)憶阻器電流的比例因子。
對(duì)于實(shí)際中的憶阻器來(lái)說(shuō),其二氧化鈦邊界不能完全到達(dá)器件的邊界,對(duì)其進(jìn)行描述的上述公式是不夠精確的,還需要通過(guò)窗口函數(shù)的限制,在式(12)右端右乘窗口函數(shù),常用的窗口函數(shù)有多種,本文模型中使用的是較為常用的Joglekar窗函數(shù)[11],其表達(dá)式為:
式中,p為任意正整數(shù)。
Joglekar窗函數(shù)的圖像如圖17所示,不同p值參數(shù)下Joglekar窗函數(shù)曲線具有不同程度的邊界效果,當(dāng)p≥5時(shí),窗函數(shù)的函數(shù)值約等于1。窗函數(shù)的加入,使器件模型在位于二氧化鈦邊界位置時(shí)體現(xiàn)出較強(qiáng)的抵抗性,邊界位于中心附近時(shí)器件模型會(huì)呈現(xiàn)一定的非線性。
圖17 不同參數(shù)下的Joglekar窗函數(shù)
基于上述對(duì)憶阻器模型研究,在Virtuoso中通過(guò)VerilogA語(yǔ)言對(duì)憶阻器的模型進(jìn)行設(shè)計(jì),使用的窗口函數(shù)是p=2時(shí)的Joglekar窗口函數(shù)。憶阻器模型的仿真結(jié)果如圖18所示。圖18(a)是憶阻器兩端輸入頻率100 Hz正弦波電壓時(shí),憶阻器電壓和電流隨時(shí)間的變化圖,在憶阻器電壓曲線的前半周期內(nèi),憶阻器電流曲線達(dá)到極值點(diǎn)的時(shí)間晚于電壓曲線,在憶阻器電壓曲線的后半周期內(nèi),憶阻器電流曲線達(dá)到極值點(diǎn)的時(shí)間早于電壓曲線,在電壓為0時(shí),電流也為0,這體現(xiàn)了憶阻器電阻的可變性;圖18(b)為不同輸入正弦電壓頻率下的伏安特性曲線,類似于電磁中的磁滯回線,隨著正弦電壓頻率的增加,憶阻器的伏安特性曲線越來(lái)越窄甚至變?yōu)橐粭l直線,此時(shí)憶阻器的特性將類似于普通電阻的特性。模型的仿真測(cè)試結(jié)果與惠普實(shí)驗(yàn)室制作的二氧化鈦憶阻器的特性完全吻合。
圖18 憶阻器特性的仿真結(jié)果
基于訓(xùn)練完成的輻射故障診斷神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和參數(shù),通過(guò)憶阻器等元器件對(duì)輻射故障診斷神經(jīng)網(wǎng)絡(luò)的硬件電路進(jìn)行搭建,搭建時(shí)采用參數(shù)移植方法,將通過(guò)軟件平臺(tái)訓(xùn)練之后的神經(jīng)網(wǎng)絡(luò)參數(shù),移植到憶阻器交叉陣列[12-14]神經(jīng)網(wǎng)絡(luò)電路中,將神經(jīng)網(wǎng)絡(luò)的權(quán)重和偏置映射到憶阻器的電導(dǎo)值中。由于憶阻器的電導(dǎo)只能表示正值,在計(jì)算卷積時(shí),如果存在負(fù)數(shù)值,則不能直接計(jì)算,而且憶阻器的電導(dǎo)存在一定范圍,所以需要正負(fù)2個(gè)運(yùn)算部分來(lái)計(jì)算正值和負(fù)值,將卷積核矩陣的值轉(zhuǎn)化到憶阻器電導(dǎo)可以表示的范圍內(nèi)[15]。式(15)是卷積核中正矩陣的轉(zhuǎn)換公式,式(16)是卷積核中負(fù)矩陣的轉(zhuǎn)換公式,即:
式中:σ+為正矩陣轉(zhuǎn)換后的憶阻器電導(dǎo)值;σ-為負(fù)矩陣轉(zhuǎn)換后的憶阻器電導(dǎo)值;σmax為憶阻器的最大電導(dǎo);σmin為憶阻器的最小電導(dǎo);W+為卷積核正矩陣中的值;W-為卷積核負(fù)矩陣中的值。
圖19為一個(gè)矩陣進(jìn)行憶阻器電導(dǎo)轉(zhuǎn)換時(shí)的示意圖,首先將矩陣拆分成正矩陣和負(fù)矩陣,之后通過(guò)式(17)和式(18)進(jìn)行轉(zhuǎn)換。
圖19 權(quán)重矩陣進(jìn)行憶阻器電導(dǎo)轉(zhuǎn)換的過(guò)程
由于運(yùn)算的權(quán)重矩陣經(jīng)過(guò)轉(zhuǎn)換,還需要對(duì)運(yùn)算結(jié)果進(jìn)行還原,一般通過(guò)差分放大器組成的模擬乘法器進(jìn)行數(shù)據(jù)還原,具體的還原倍數(shù)與該層是否使用激活函數(shù)相關(guān),使用激活函數(shù)的還原倍數(shù)和不使用激活函數(shù)的還原倍數(shù)的計(jì)算公式為:
式中,k為Sigmoid激活函數(shù)的線性擬合函數(shù)的斜率。
Sigmoid激活函數(shù)圖像類似于集成電路中放大器的輸入電壓與輸出電壓的關(guān)系曲線,可以通過(guò)差分放大器的結(jié)構(gòu)來(lái)實(shí)現(xiàn)激活函數(shù)和數(shù)值的還原,差分放大器放大時(shí)一般是線性放大的,這與Sigmoid函數(shù)的圖像存在一定區(qū)別,因此在利用差分放大器實(shí)現(xiàn)Sigmoid函數(shù)的功能時(shí),需要對(duì)Sigmoid函數(shù)進(jìn)行擬合。通過(guò)Python腳本,本文對(duì)斜率在區(qū)間(0.04,2)、與y軸交點(diǎn)在區(qū)間(0,0.95)內(nèi)的部分一次線性函數(shù)進(jìn)行枚舉,計(jì)算該函數(shù)與Sigmoid函數(shù)之間的相對(duì)差距,以獲得對(duì)Sigmoid的最佳擬合函數(shù)表達(dá)式,相對(duì)差距較小的幾個(gè)函數(shù)如表5所示。
表5 部分用于擬合Sigmoid函數(shù)的表達(dá)式
Sigmoid函數(shù)的擬合結(jié)果顯示,式(19)的函數(shù)對(duì)Sigmoid函數(shù)的擬合效果較好。
線性擬合的函數(shù)與Sigmoid激活函數(shù)曲線如圖20所示,圖20中只繪制了x值在(-5,5)間的函數(shù)圖像,在x值超過(guò)區(qū)間(-5,5)時(shí),2種函數(shù)的值基本上相等,可以在誤差允許的情況下使用式(19)中的函數(shù)代替Sigmoid激活函數(shù)。
圖20 線性擬合的函數(shù)與Sigmoid激活函數(shù)曲線
在完成對(duì)憶阻器神經(jīng)網(wǎng)絡(luò)的相關(guān)基礎(chǔ)研究后,下面將基于憶阻器對(duì)輻射診斷神經(jīng)網(wǎng)絡(luò)的各個(gè)結(jié)構(gòu)層在Virtuoso中進(jìn)行搭建如下。
1)一維卷積層。
搭建的第一層一維卷積層conv1中的一個(gè)卷積核電路如圖21所示,conv1的輸入為14個(gè)數(shù)據(jù),需要拆分成正半部分和負(fù)半部分,每一個(gè)憶阻器的電導(dǎo)值都需要通過(guò)轉(zhuǎn)換公式進(jìn)行轉(zhuǎn)換,本文通過(guò)Python腳本將訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)參數(shù)轉(zhuǎn)換為憶阻器二氧化鈦邊界的相對(duì)位置,并將相對(duì)位置的值移植到憶阻器電路中。inp是輸入的正半部分?jǐn)?shù)據(jù)值,inn是輸入的負(fù)半部分?jǐn)?shù)據(jù)值,輸入1 V電壓的一行憶阻器用于對(duì)擬合的激活函數(shù)偏置、一維卷積層偏置進(jìn)行計(jì)算。
圖21 conv1中的一個(gè)卷積核電路圖
根據(jù)電流節(jié)點(diǎn)定律,模擬乘法器輸入的值等于各個(gè)輸入值與各憶阻器電導(dǎo)乘積的和,模擬乘法器用于對(duì)該數(shù)值進(jìn)行還原,模擬乘法器的結(jié)構(gòu)圖如圖22所示,其中憶阻器Mg的電阻值與式(16)和式(17)的還原倍數(shù)相同。本文以VerilogA模型替代模擬乘法器的功能,設(shè)計(jì)的輻射故障診斷神經(jīng)網(wǎng)絡(luò)的conv1有6個(gè)卷積核,圖21中只是其中一個(gè)卷積核的電路圖,其他的卷積核結(jié)構(gòu)與圖21相同,區(qū)別在于憶阻器的電導(dǎo)值和還原倍數(shù)不同。
搭建的第二層一維卷積層中的卷積核電路圖與圖21類似,只是結(jié)構(gòu)上輸入節(jié)點(diǎn)和輸出節(jié)點(diǎn)數(shù)目不同,電路方面憶阻器的電導(dǎo)和乘法器還原倍數(shù)不同。憶阻器神經(jīng)網(wǎng)絡(luò)用于還原數(shù)值的模擬乘法電路如圖22所示。
圖22 憶阻器神經(jīng)網(wǎng)絡(luò)用于還原數(shù)值的模擬乘法電路圖
2)矩陣正負(fù)值運(yùn)算電路。
由于矩陣卷積時(shí)需要獲得矩陣的正值矩陣和負(fù)值矩陣,這需要特殊的電路來(lái)實(shí)現(xiàn),圖23為正負(fù)值運(yùn)算產(chǎn)生電路的電路圖,電路將輸入Vin的值輸出為Vn和Vp,由于Sigmoid激活函數(shù)的輸出均為正值或0,因此Vn的值是Vin的值絕對(duì)值的相反數(shù),Vp的值是Vin的絕對(duì)值,差分放大器的增益均為1。
圖23 正負(fù)值運(yùn)算產(chǎn)生電路的電路圖
3)最大池化電路。
最大池化電路的主要功能是判斷2個(gè)輸入的較大值,并輸出較大值的數(shù)值。實(shí)現(xiàn)上述功能的電路如圖24所示,左邊是CMOS比較器,其功能是比較2個(gè)輸入的大小,如果正極輸入大于負(fù)極輸入,則輸出上限電壓1 V,相反如果正極輸入小于負(fù)極電壓,則輸出下限電壓0 V。
圖24中右邊的器件是可用CMOS傳輸門(mén)實(shí)現(xiàn)的單刀雙擲開(kāi)關(guān),Sel是數(shù)據(jù)輸出選擇信號(hào),Sel為高電平時(shí),將輸出Vin1的值,Sel為低電平時(shí),則輸出Vin2的值。最大池化電路以這種電路為單元組成,輻射故障診斷神經(jīng)網(wǎng)絡(luò)的第一層最大池化層有72個(gè)輸入和36個(gè)輸出,共需要36個(gè)這樣的單元組成,第二層最大池化層有48個(gè)輸入和24個(gè)輸出,共需要24個(gè)這樣的單元組成。
圖24 最大池化電路的電路圖
4)全連接層的電路結(jié)構(gòu)。
全連接運(yùn)算的本質(zhì)也是矩陣的乘法,同樣可以通過(guò)憶阻器來(lái)實(shí)現(xiàn),只不過(guò)電路結(jié)構(gòu)不同于一維卷積層的電路,圖25為輻射故障診斷神經(jīng)網(wǎng)絡(luò)全連接層的電路圖,全連接層有24個(gè)輸入和3個(gè)分類輸出,且全連接層的輸出沒(méi)有使用Sigmoid函數(shù)進(jìn)行激活,但同樣需要單獨(dú)的憶阻器來(lái)計(jì)算全連接層的偏置值。
5)電路總體結(jié)構(gòu)。
根據(jù)上述設(shè)計(jì)的電路結(jié)構(gòu),本文在Virtuoso中對(duì)神經(jīng)網(wǎng)絡(luò)的總體電路進(jìn)行搭建,總體電路結(jié)構(gòu)如圖26所示,矩形方框內(nèi)代表上文中介紹的電路結(jié)構(gòu),箭頭方向代表數(shù)據(jù)流的方向,箭頭上的數(shù)據(jù)代表各個(gè)電路之間的數(shù)據(jù)數(shù)量及正負(fù),未標(biāo)明正負(fù)代表數(shù)據(jù)可能為正值或負(fù)值。
圖25 進(jìn)行分類的全連接層電路圖
圖26 輻射故障診斷神經(jīng)網(wǎng)絡(luò)電路結(jié)構(gòu)框圖
輻射故障診斷神經(jīng)網(wǎng)絡(luò)電路的內(nèi)部運(yùn)算通過(guò)電學(xué)參量的關(guān)系進(jìn)行運(yùn)算,在滿足數(shù)據(jù)輸入格式前提下,運(yùn)算速度與模擬芯片相接近,可以較好地滿足實(shí)時(shí)性需求。但硬件電路與軟件平臺(tái)存在一定區(qū)別,導(dǎo)致神經(jīng)網(wǎng)絡(luò)電路的運(yùn)算結(jié)果和軟件平臺(tái)計(jì)算的結(jié)果會(huì)存在一定誤差,誤差主要來(lái)源于激活函數(shù)的差別、憶阻器電導(dǎo)值的存儲(chǔ)方式與軟件權(quán)重的差別和電路的噪聲等因素,對(duì)硬件神經(jīng)網(wǎng)絡(luò)的運(yùn)算結(jié)果產(chǎn)生了一定影響。圖27給出了在軟硬輸入相同條件時(shí),硬件電路仿真的相對(duì)誤差平均值,由于卷積層第二層的運(yùn)算量較大,硬件電路的相對(duì)誤差較大。
本文在搭建硬件電路后,在Virtuoso中仿真200組3種狀態(tài)的數(shù)據(jù),硬件實(shí)際測(cè)試時(shí)的平均誤差如圖28所示,誤差結(jié)果均為整體神經(jīng)網(wǎng)絡(luò)電路與軟件之間的仿真相對(duì)誤差。
圖27 硬件實(shí)際測(cè)試時(shí)的相對(duì)誤差平均值
圖28 硬件實(shí)際測(cè)試時(shí)的平均誤差
本文統(tǒng)計(jì)了200組實(shí)驗(yàn)數(shù)據(jù)在神經(jīng)網(wǎng)絡(luò)硬件上運(yùn)行的準(zhǔn)確度,達(dá)到98%以上,相較于軟件的準(zhǔn)確度略低,本文結(jié)果對(duì)精度要求稍低而對(duì)運(yùn)算速度要求高的場(chǎng)景更為適用。