(1.中國(guó)人民解放軍66294部隊(duì),北京 100042; 2.中國(guó)人民解放軍陸軍裝備部信息保障室三室,北京 100042)
在武器裝備維修與技術(shù)保障領(lǐng)域中,普遍存在故障模式復(fù)雜、分析定位繁瑣等問(wèn)題。以陸軍某型便攜式防空導(dǎo)彈為例,通過(guò)FMEA分析可知,故障現(xiàn)象與故障模式大量交錯(cuò),尤其對(duì)于電氣性能故障,現(xiàn)象與模式一對(duì)多、多對(duì)一的情況非常普遍。目前,對(duì)于裝備在維修過(guò)程中的故障分析及定位,仍然以人工為主,人的經(jīng)驗(yàn)水平對(duì)分析和定位的準(zhǔn)確性影響很大。遇到經(jīng)驗(yàn)不足的維修人員,無(wú)法準(zhǔn)確定位故障部位,只能以分步代換的方法進(jìn)行故障排除,導(dǎo)致工作效率低下、資源大量浪費(fèi)。
目前,隨著人工智能的發(fā)展進(jìn)步,人工神經(jīng)網(wǎng)絡(luò)等方法大量應(yīng)用在模式識(shí)別、自動(dòng)控制、測(cè)試估計(jì)等多個(gè)領(lǐng)域。本文針對(duì)上述問(wèn)題,以某型便攜防空導(dǎo)彈發(fā)射機(jī)構(gòu)為典型研究對(duì)象,以近五年的維修歷史數(shù)據(jù)制作了訓(xùn)練和測(cè)試數(shù)據(jù)集,引入BP神經(jīng)網(wǎng)絡(luò)算法進(jìn)行故障分析及定位,探討神經(jīng)網(wǎng)絡(luò)在裝備故障分析中的應(yīng)用。
BP神經(jīng)網(wǎng)絡(luò)(back propagation neural network)是一種按誤差反向傳播訓(xùn)練的多層前饋網(wǎng)絡(luò),其基本思想是利用梯度搜索,使網(wǎng)絡(luò)的實(shí)際輸出和期望輸出的誤差均方差最小。
基本的BP網(wǎng)絡(luò)包括信號(hào)的前向傳播和誤差的反向傳播兩個(gè)過(guò)程。在信號(hào)前向傳播過(guò)程中,輸入信號(hào)通過(guò)中間層作用于輸出層,經(jīng)過(guò)非線性變換,產(chǎn)生輸出信號(hào),若實(shí)際輸出與期望輸出不相符,則轉(zhuǎn)入誤差反向傳播過(guò)程,逐層獲取誤差信號(hào)以更新每個(gè)節(jié)點(diǎn)的聯(lián)接強(qiáng)度以及閾值,以上即為神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程。經(jīng)過(guò)大量樣本的多次迭代,傳播矩陣被不斷修正,各節(jié)點(diǎn)間的權(quán)值進(jìn)一步趨于合理,最終對(duì)數(shù)據(jù)歸類的準(zhǔn)確率也不斷提高[1]。在訓(xùn)練結(jié)束后,以最終確定的各節(jié)點(diǎn)權(quán)值構(gòu)建完整網(wǎng)絡(luò)。
Python是一種解釋型、面向?qū)ο?、?dòng)態(tài)數(shù)據(jù)類型的高級(jí)程序設(shè)計(jì)語(yǔ)言,由于其簡(jiǎn)潔、易讀的特性,有著大規(guī)模的用戶群體。同時(shí),Python支持眾多開源的科學(xué)計(jì)算庫(kù),如著名的OpenCV、VTK等等,得益于此,Python大量應(yīng)用于科學(xué)計(jì)算以及人工智能領(lǐng)域[2]。
2.1.1 地面設(shè)備的主要電氣組成及性能參數(shù)
該型地面設(shè)備內(nèi)部主要由3塊線路板組成,根據(jù)具體功能,可分為主要有以下9個(gè)功能模塊:
1)供電電路:對(duì)系統(tǒng)主電源進(jìn)行變換,為裝備各部分提供二次電源。常見的故障模式主要是二次電源失效,所表現(xiàn)出的現(xiàn)象主要為相關(guān)部分的電源最大消耗電流以及穩(wěn)定工作電流異常,出現(xiàn)故障后會(huì)對(duì)全局造成影響。
2)單片機(jī)核心及外圍接口電路:系統(tǒng)的核心部分,接收各類外部信號(hào),計(jì)算導(dǎo)彈發(fā)射條件,輸出各種控制指令,出現(xiàn)故障后會(huì)對(duì)全局造成影響。
3)起轉(zhuǎn)控制電路:控制導(dǎo)引頭陀螺部分起轉(zhuǎn)與停止,常見的故障模式主要是導(dǎo)引頭起轉(zhuǎn)失敗或轉(zhuǎn)速異常,表現(xiàn)出的現(xiàn)象主要為導(dǎo)引頭不起轉(zhuǎn)、起轉(zhuǎn)斷開時(shí)間或斷開頻率異常,出現(xiàn)故障后會(huì)對(duì)全局造成影響。
4)聲音信號(hào)控制電路:控制輸出聲音信號(hào),主要用于在截獲目標(biāo)以及分析目標(biāo)角速度時(shí)給出聲音指示,故障模式和現(xiàn)象比較簡(jiǎn)單,主要是有聲(正常)/無(wú)聲(異常),出現(xiàn)故障后不會(huì)對(duì)系統(tǒng)主體功能產(chǎn)生影響。
5)光信號(hào)控制電路:和聲音信號(hào)控制電路類似,主要用于在截獲目標(biāo)以及分析目標(biāo)角速度時(shí)給出燈光指示,故障模式和現(xiàn)象比較簡(jiǎn)單,主要是有光(正常)/無(wú)光(異常),出現(xiàn)故障后不會(huì)對(duì)系統(tǒng)主體功能產(chǎn)生影響。
6)解鎖電路:控制導(dǎo)引頭陀螺部分偏移的鎖定以及解鎖,常見的故障模式主要是導(dǎo)引頭陀螺部分不解鎖,無(wú)法正常跟蹤目標(biāo),表現(xiàn)出的故障現(xiàn)象主要是對(duì)目標(biāo)角飛行狀態(tài)分析異常,無(wú)法給出正確的發(fā)射條件。其故障現(xiàn)象不直觀,需要依據(jù)發(fā)射條件以及分析時(shí)間等多個(gè)量綜合判斷,該部分出現(xiàn)故障后會(huì)對(duì)全局造成影響。
7)電源轉(zhuǎn)換電路:在導(dǎo)彈進(jìn)入發(fā)射程序后,激活彈上電源,同時(shí)將工作電源從地面電源轉(zhuǎn)換為彈上電源,常見的故障模式主要是彈上電源無(wú)法激活以及電源轉(zhuǎn)換失敗,表現(xiàn)出的故障現(xiàn)象主要是導(dǎo)彈起飛后姿態(tài)異常。其故障現(xiàn)象不直觀,需要根據(jù)測(cè)試結(jié)果綜合判斷,該部分出現(xiàn)故障后會(huì)對(duì)全局造成影響。
8)氣源激活電路:與電源轉(zhuǎn)換電路類似,主要是激活彈上致冷氣源。
9)點(diǎn)火電路:用于輸出導(dǎo)彈發(fā)動(dòng)機(jī)點(diǎn)火信號(hào),常見的故障模式和現(xiàn)象主要是導(dǎo)彈進(jìn)入發(fā)射程序后發(fā)射失敗,該部分出現(xiàn)故障后會(huì)對(duì)全局造成影響。
10)IFF電路:敵我識(shí)別功能電路,主要用于對(duì)目標(biāo)進(jìn)行敵我識(shí)別,在判定目標(biāo)為友機(jī)時(shí),及時(shí)停止發(fā)射程序。主要的故障模式和現(xiàn)象是無(wú)法進(jìn)行敵我判定,該部分出現(xiàn)故障后不會(huì)影響系統(tǒng)主體功能。
對(duì)應(yīng)各功能模塊電路,主要的電氣性能測(cè)試項(xiàng)目表1所列。
表1 發(fā)射機(jī)構(gòu)主要電氣性能測(cè)試項(xiàng)目
2.1.2 神經(jīng)網(wǎng)絡(luò)模型
發(fā)射機(jī)構(gòu)故障分析相對(duì)簡(jiǎn)單,為減少計(jì)算量及計(jì)算時(shí)間,在構(gòu)建神經(jīng)網(wǎng)絡(luò)時(shí)采用常見的3層架構(gòu),即除輸入層及輸出層外,只建立1層中間層。
對(duì)于每層的節(jié)點(diǎn)數(shù),根據(jù)以下規(guī)則確定:
1)輸入層節(jié)點(diǎn)數(shù)由發(fā)射機(jī)構(gòu)需要測(cè)試的性能參數(shù)決定,即14個(gè)節(jié)點(diǎn);
2)輸出層節(jié)點(diǎn)數(shù)由需要定位故障的發(fā)射機(jī)構(gòu)功能模塊電路數(shù)量確定,即9個(gè)節(jié)點(diǎn);
確定了以上參數(shù),在程序中建立neuralNetwork類,該類主要對(duì)輸入層、中間層、輸出層的節(jié)點(diǎn)數(shù)量和各層間的權(quán)重矩陣以及梯度下降算法的學(xué)習(xí)率進(jìn)行初始化,其代碼如下:
classneuralNetwork:
初始化
def __init__(self, inputnodes, hiddennodes, outputnodes, learningrate):
根據(jù)初始化參數(shù)設(shè)置輸入、隱藏、輸出節(jié)點(diǎn)數(shù)量
self.inodes = inputnodes
self.hnodes = hiddennodes
self.onodes = outputnodes
設(shè)置學(xué)習(xí)率
self.lr = learningrate
以隨機(jī)正態(tài)分布的方式確定兩個(gè)權(quán)重矩陣
self.wih = numpy.random.normal(0.0, pow(self.hnodes,
0.5),(self.hnodes,self.inodes))
self.who = numpy.random.normal(0.0, pow(self.onodes,
-0.5),(self.onodes,self.hnodes))
以lambda表達(dá)式的方式引用Sigmoid函數(shù),expit()即為S函數(shù)
self.activation_function = lambda x: scipy.special.expit(x)
在信號(hào)前饋過(guò)程中,重點(diǎn)需要關(guān)注由每個(gè)節(jié)點(diǎn)的權(quán)重組成的權(quán)重矩陣以及信號(hào)在中間層傳播時(shí)應(yīng)用的激活函數(shù)。在本項(xiàng)目中,權(quán)重矩陣的初始化以隨機(jī)數(shù)的方式生成。同時(shí),如果沒有激活函數(shù),每一層的輸出和輸入都為線性關(guān)系,無(wú)論中間有多少層,都沒有意義[2]。在激活函數(shù)的選擇上,采用了類似階躍函數(shù)但比階躍函數(shù)更加平滑、更接近現(xiàn)實(shí)的S函數(shù)(Sigmoid Function):
(1)
在本神經(jīng)網(wǎng)絡(luò)中,中間層的輸入信號(hào)符合:
(2)
式中,I為輸入矩陣,Wih為輸入層和中間層之間的權(quán)重矩陣。
中間層的輸出為:
(3)
輸出層的信號(hào)符合:
(4)
式中,I為輸入矩陣,Wih、Who分別為輸入層至中間層以及中間層至輸出層的權(quán)重矩陣,Xh為中間層輸出矩陣,Xo為輸出層輸出矩陣)
誤差的反向傳播過(guò)程可以用矩陣乘法表示:
(5)
考慮到神經(jīng)網(wǎng)絡(luò)的規(guī)模,在權(quán)重更新過(guò)程中采用了梯度下降法,該方法計(jì)算效率高,但存在兩個(gè)風(fēng)險(xiǎn)。一是有可能停止于局部極小值而不是全局最小值,導(dǎo)致分類不準(zhǔn)確;二是超調(diào)越過(guò)最小值,系統(tǒng)不斷振蕩,導(dǎo)致無(wú)法有效收斂。為了盡量減少上述風(fēng)險(xiǎn),需要選擇適當(dāng)?shù)恼`差函數(shù)。在網(wǎng)絡(luò)中,對(duì)于第k個(gè)節(jié)點(diǎn),確定誤差函數(shù)為:
ek=(tk-ok)2
(6)
選擇這一誤差函數(shù),主要基于兩點(diǎn)原因[4]:
1)使用該函數(shù),可以比較方便的計(jì)算出梯度下降的斜率;
2)誤差函數(shù)平滑連續(xù),不會(huì)出現(xiàn)下降過(guò)程中突然跳躍的情況;
3)誤差越接近最小值,梯度越小,超調(diào)風(fēng)險(xiǎn)相應(yīng)減小。
相應(yīng)的,在該處的斜率為:?e/?w。
設(shè)輸入層某一節(jié)點(diǎn)為i,中間層某一節(jié)點(diǎn)為j,輸出層某一節(jié)點(diǎn)為k,期望值為t,實(shí)際輸出值為o。則對(duì)于任意j-k鏈路,可計(jì)算斜率為:
(7)
由于t為常數(shù),則有:
(8)
最終,中間層與輸出層間誤差函數(shù)斜率為:
(1-sigmoid(∑jWj,k·oj))·oj
(9)
輸入層與中間層誤差函數(shù)斜率為:
(1-sigmoid(∑jWj,k·oj))·oj
(10)
最終的權(quán)重更新函數(shù)為:
(11)
式中,α為學(xué)習(xí)率。在梯度下降算法中,學(xué)習(xí)率決定了參數(shù)每次更新的幅度,即下降過(guò)程中每一步的步長(zhǎng)。
誤差計(jì)算與權(quán)重更新源代碼如下:
計(jì)算誤差
output_errors = targets - final_outputs
hidden_errors = numpy.dot(self.who.T, output_errors)
更新權(quán)重
self.who += self.lr * numpy.dot((output_errors * final_outputs * (1.0 - final_outputs)), numpy.transpose(hidden_outputs))
self.wih += self.lr * numpy.dot((hidden_errors * hidden_outputs * (1.0 - hidden_outputs)), numpy.transpose(inputs))
以隨機(jī)正態(tài)分布的方式確定兩個(gè)權(quán)重矩陣
self.wih = numpy.random.normal(0.0, pow(self.hnodes,
-0.5),(self.hnodes,self.inodes))
self.who = numpy.random.normal(0.0, pow(self.onodes,
-0.5),(self.onodes,self.hnodes))
考慮到激活函數(shù)以及整個(gè)神經(jīng)網(wǎng)絡(luò)的使用范圍,需要輸入數(shù)據(jù)進(jìn)行預(yù)處理。由于網(wǎng)絡(luò)特征所限,輸入數(shù)據(jù)必須在0.0~1.0范圍內(nèi),因此需要對(duì)輸入數(shù)據(jù)進(jìn)行歸一化。同時(shí),當(dāng)輸入數(shù)據(jù)為0時(shí),權(quán)重更新函數(shù)會(huì)輸出0,導(dǎo)致網(wǎng)絡(luò)喪失學(xué)習(xí)能力,因此在遇到輸入為0時(shí),需要加入一個(gè)微量的偏移0.001。特別的,對(duì)于聲音信號(hào)、光信號(hào)這類只存在正常和異常(非0即1)兩種狀態(tài)的測(cè)試結(jié)果數(shù)據(jù),為了使網(wǎng)絡(luò)能正常進(jìn)行判斷,同樣需要加入微量偏移,使其正常狀態(tài)輸出0.99、異常狀態(tài)輸出0.001。
為了使神經(jīng)網(wǎng)絡(luò)能正常工作,需要對(duì)其進(jìn)行訓(xùn)練。訓(xùn)練數(shù)據(jù)由歷史測(cè)試數(shù)據(jù)經(jīng)預(yù)處理后綜合而成,共15位,其中第2~15位為測(cè)試數(shù)據(jù),第1位為故障判定結(jié)果。部分訓(xùn)練數(shù)據(jù)如圖1所示。
圖1 部分訓(xùn)練數(shù)據(jù)
網(wǎng)絡(luò)訓(xùn)練的實(shí)現(xiàn)過(guò)程中,需要先將輸入矩陣轉(zhuǎn)化為二維數(shù)組,之后通過(guò)激活函數(shù),進(jìn)行正向計(jì)算,在計(jì)算完成后,根據(jù)與目標(biāo)的誤差,反向更新權(quán)重矩陣,完整方法代碼如下[5-7]:
def train(self, inputs_list, targets_list):
將輸入轉(zhuǎn)換成2D數(shù)組
inputs = numpy.array(inputs_list, ndmin =2).T
targets = numpy.array(targets_list, ndmin =2).T
hidden_inputs = numpy.dot(self.wih, inputs)
hidden_outputs = self.activation_function(hidden_inputs)
final_inputs = numpy.dot(self.who, hidden_outputs)
final_outputs = self.activation_function(final_inputs)
計(jì)算誤差
output_errors = targets - final_outputs
hidden_errors = numpy.dot(self.who.T, output_errors)
更新權(quán)重
self.who += self.lr * numpy.dot((output_errors * final_outputs * (1.0
- final_outputs)), numpy.transpose(hidden_outputs))
self.wih += self.lr * numpy.dot((hidden_errors * hidden_outputs * (1.0
- hidden_outputs)), numpy.transpose(inputs))
利用訓(xùn)練數(shù)據(jù)集以及測(cè)試數(shù)據(jù)集對(duì)訓(xùn)練完畢的網(wǎng)絡(luò)進(jìn)行訓(xùn)練、測(cè)試。收集五年的歷史測(cè)試數(shù)據(jù),其中80%用于制作訓(xùn)練數(shù)據(jù)集,剩余20%用于制作測(cè)試數(shù)據(jù)集。訓(xùn)練數(shù)據(jù)集總量為520條,測(cè)試數(shù)據(jù)集總量為130條。在學(xué)習(xí)率為0.2、中間層節(jié)點(diǎn)數(shù)量為11的條件下,得到預(yù)測(cè)準(zhǔn)確率約為94.7%,程序總執(zhí)行時(shí)間約為8.18秒。
在網(wǎng)絡(luò)中,如果學(xué)習(xí)率較小,則訓(xùn)練時(shí)間會(huì)增加,相應(yīng)達(dá)到收斂所需要迭代的次數(shù)就高,反之,雖然效率提高,但有可能超過(guò)局部最小值,造成系統(tǒng)振蕩不停,使其無(wú)法收斂[8]。對(duì)于目前網(wǎng)絡(luò),經(jīng)過(guò)多次實(shí)驗(yàn),發(fā)現(xiàn)在其他條件不變的情況下,當(dāng)學(xué)習(xí)率低于0.05以下時(shí),預(yù)測(cè)準(zhǔn)確率明顯下降,可知網(wǎng)絡(luò)有可能在非全局最小值出現(xiàn)收斂;當(dāng)學(xué)習(xí)率高于0.2時(shí),程序執(zhí)行時(shí)間明顯增加,并且預(yù)測(cè)準(zhǔn)確率出現(xiàn)下降趨勢(shì),可知網(wǎng)絡(luò)出現(xiàn)超調(diào)振蕩現(xiàn)象,分類效率受到影響;當(dāng)學(xué)習(xí)率高于0.4時(shí),預(yù)測(cè)準(zhǔn)確率下降顯著,可知網(wǎng)絡(luò)在部分?jǐn)?shù)據(jù)訓(xùn)練中有可能出現(xiàn)無(wú)法收斂的情況;在學(xué)習(xí)率設(shè)置為0.1左右時(shí),得到最佳預(yù)測(cè)準(zhǔn)確率約為95.2%,用時(shí)約7.36 s。整體結(jié)果如圖2所示。
圖2 不同學(xué)習(xí)率下的準(zhǔn)確率曲線(橫軸為學(xué)習(xí)率,縱軸為準(zhǔn)確率)
網(wǎng)絡(luò)中間層是執(zhí)行學(xué)習(xí)過(guò)程的主要層次,如果節(jié)點(diǎn)過(guò)少,則沒有足夠的空間使網(wǎng)絡(luò)完成學(xué)習(xí)[9]。經(jīng)過(guò)實(shí)驗(yàn),發(fā)現(xiàn)對(duì)于目前網(wǎng)絡(luò),在其他條件不變的情況下,當(dāng)中間層節(jié)點(diǎn)數(shù)量減少為7個(gè)時(shí),學(xué)習(xí)率約為70%左右,當(dāng)中間層數(shù)量為100時(shí),預(yù)測(cè)準(zhǔn)確率約為95.6%,用時(shí)約8.86秒,當(dāng)中間層節(jié)點(diǎn)數(shù)量設(shè)置為200時(shí),得到預(yù)測(cè)準(zhǔn)確率約為96.2%,用時(shí)約12.41秒。此后,隨著節(jié)點(diǎn)數(shù)量增加,程序執(zhí)行時(shí)間增加明顯,但準(zhǔn)確率未發(fā)現(xiàn)明顯提升,結(jié)果如圖3所示。
圖3 不同中間層節(jié)點(diǎn)下的準(zhǔn)確率曲線(橫軸為中間層節(jié)點(diǎn)數(shù),縱軸為準(zhǔn)確率)
通過(guò)分析結(jié)果,在最初的網(wǎng)絡(luò)結(jié)構(gòu)中,預(yù)測(cè)準(zhǔn)確率約為94.7%;在其他條件不變的情況下,預(yù)測(cè)準(zhǔn)確率在學(xué)習(xí)率為0.1左右時(shí)達(dá)到最高,約95.2%,同時(shí)學(xué)習(xí)率過(guò)高或過(guò)低時(shí),準(zhǔn)確率會(huì)出現(xiàn)明顯下降;進(jìn)一步將中間層節(jié)點(diǎn)增加至200個(gè)時(shí),識(shí)別準(zhǔn)確率又提升約1%,達(dá)到96.2%,而后隨著節(jié)點(diǎn)數(shù)量增加,訓(xùn)練及預(yù)測(cè)時(shí)間成倍增長(zhǎng),但預(yù)測(cè)準(zhǔn)確率并無(wú)明顯變化。由此可知,對(duì)于簡(jiǎn)單的三層BP神經(jīng)網(wǎng)絡(luò),設(shè)置適當(dāng)?shù)膶W(xué)習(xí)率以及中間層節(jié)點(diǎn)數(shù)量,可以有效提升最終結(jié)果的準(zhǔn)確程度,反之,則有可能面臨梯度消失或超調(diào)的風(fēng)險(xiǎn)。同時(shí),在武器裝備的維修及技術(shù)保障工作中,超過(guò)95%的準(zhǔn)確率已經(jīng)可以滿足基本的故障分析和定位。
本文中,選擇S函數(shù)作為神經(jīng)網(wǎng)絡(luò)的激活函數(shù)。該函數(shù)連續(xù)、并且在整個(gè)定義域間單調(diào),是常見的激活函數(shù)。但是,在實(shí)際運(yùn)用中仍然存在兩個(gè)問(wèn)題,一是S函數(shù)輸出均值不為0,存在偏移現(xiàn)象,在多層神經(jīng)網(wǎng)絡(luò)中,下層的輸入會(huì)受到上層輸出的影響;二是對(duì)該函數(shù)求導(dǎo)后發(fā)現(xiàn),在變量x取值非常大或非常小的時(shí)候,其斜率會(huì)趨近于0,使梯度更新緩慢,有可能導(dǎo)致梯度消失,即如果初始值很大的話,神經(jīng)元會(huì)出現(xiàn)飽和現(xiàn)象,整個(gè)網(wǎng)絡(luò)學(xué)習(xí)困難。
在人工神經(jīng)網(wǎng)絡(luò)中,常見的激活函數(shù)還可以選擇tanh函數(shù)、ReLU函數(shù)以及Leaky-ReLU函數(shù)。
tanh函數(shù)原型如下:
(12)
與S函數(shù)相比,tanh函數(shù)的最大優(yōu)點(diǎn)是輸出均值為0,但依然存在軟飽和性,對(duì)于某些初始值,有梯度消失的風(fēng)險(xiǎn)。
ReLU函數(shù)(線性整流函數(shù))是斜坡函數(shù)的變種函數(shù),原型如下:
f(x)=max(0,x)
(13)
其在x小于0時(shí),存在硬飽和現(xiàn)象,在x大于0時(shí),不存在飽和問(wèn)題,可以避免梯度消失現(xiàn)象。同時(shí),若梯度過(guò)大,會(huì)導(dǎo)致“神經(jīng)元死亡”的現(xiàn)象。因此,在使用時(shí)需要適當(dāng)控制學(xué)習(xí)率。
Leaky-ReLU函數(shù)是對(duì)ReLU函數(shù)的改進(jìn),原型如下:
(14)
函數(shù)中,α為一較小常數(shù),可以比較有效的解決變量小于0時(shí),函數(shù)存在硬飽和區(qū)的問(wèn)題,是比較理想的激活函數(shù)。同時(shí),無(wú)論ReLU或Leaky-ReLU函數(shù),都存在輸出均值不為0的情況。
對(duì)于輸入與輸出節(jié)點(diǎn)數(shù)量多、對(duì)應(yīng)關(guān)系復(fù)雜的系統(tǒng),適當(dāng)增加中間層數(shù)量,可以提升網(wǎng)絡(luò)預(yù)測(cè)準(zhǔn)確率。但是,對(duì)于簡(jiǎn)單系統(tǒng),中間層數(shù)量增加不但對(duì)改進(jìn)預(yù)測(cè)準(zhǔn)確率貢獻(xiàn)不大,而且還會(huì)使分析時(shí)間大量增加。
根據(jù)以上兩點(diǎn),對(duì)于以文中提到的某型便攜防空導(dǎo)彈發(fā)射機(jī)構(gòu)這類結(jié)構(gòu)較為簡(jiǎn)單,故障現(xiàn)象、故障模式以及故障部位對(duì)應(yīng)較為單一的裝備,不存在極端的輸入數(shù)據(jù),選擇單一中間層網(wǎng)絡(luò)并且以S函數(shù)作為激活函數(shù),在實(shí)現(xiàn)中較為簡(jiǎn)單,準(zhǔn)確率和網(wǎng)絡(luò)工作效率較高,同時(shí)不會(huì)出現(xiàn)梯度消失或者偏移量過(guò)大的問(wèn)題。如果將此神經(jīng)網(wǎng)絡(luò)應(yīng)用于故障模式復(fù)雜的大型裝備,則要考慮根據(jù)輸入輸出的復(fù)雜程度,選擇效率高、工作中冗余度大的激活函數(shù),適當(dāng)設(shè)置中間層數(shù)量,以達(dá)到整個(gè)網(wǎng)絡(luò)的最優(yōu)配置。
本文以某型便攜防空導(dǎo)彈發(fā)射機(jī)構(gòu)為研究平臺(tái),研究了BP神經(jīng)網(wǎng)絡(luò)在裝備故障分析中的應(yīng)用,構(gòu)建了基于神經(jīng)網(wǎng)絡(luò)的故障分析方法,并在Python環(huán)境下進(jìn)行了實(shí)現(xiàn),同時(shí)探討了網(wǎng)絡(luò)方法的進(jìn)一步改進(jìn)策略。通過(guò)實(shí)驗(yàn)驗(yàn)證,可知該方法具有速度快、應(yīng)用簡(jiǎn)單、準(zhǔn)確率高的特點(diǎn),可以滿足典型目標(biāo)的故障分析及定位,并且可以快速擴(kuò)展應(yīng)用于其他裝備的技術(shù)保障工作中。