吳立金,夏 冉,詹紅燕,韓新宇
(中國(guó)船舶工業(yè)綜合技術(shù)經(jīng)濟(jì)研究院,北京 100081)
故障預(yù)測(cè)[1-2]是一種主動(dòng)容錯(cuò)技術(shù)之,與之相近的概念是故障檢測(cè)、故障隔離和故障診斷,其區(qū)別如表1所示。
表1 故障預(yù)測(cè)相關(guān)概念
深度學(xué)習(xí)起源于神經(jīng)網(wǎng)絡(luò),是機(jī)器學(xué)習(xí)[4]的一個(gè)新領(lǐng)域,通過(guò)組合低層特征形成更加抽象的高層表示屬性類別或特征,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征。本文提出一種基于深度學(xué)習(xí)的故障預(yù)測(cè)方案,利用深度學(xué)習(xí)算法處理裝備狀態(tài)監(jiān)測(cè)和試驗(yàn)驗(yàn)證獲得的海量故障數(shù)據(jù),通過(guò)故障模型訓(xùn)練、故障特征識(shí)別、故障演化規(guī)律獲取來(lái)進(jìn)行裝備故障預(yù)測(cè)。
基于深度學(xué)習(xí)的故障模型訓(xùn)練方法,主要分為有監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)以及強(qiáng)化學(xué)習(xí)[5]。
1)有監(jiān)督學(xué)習(xí)。在有監(jiān)督學(xué)習(xí)中,進(jìn)行模型學(xué)習(xí)的輸入數(shù)據(jù)稱為訓(xùn)練數(shù)據(jù),需要輸入到模型中進(jìn)行檢測(cè)的數(shù)據(jù)稱為測(cè)試數(shù)據(jù),訓(xùn)練數(shù)據(jù)具有自己的標(biāo)簽或者結(jié)果。
2)無(wú)監(jiān)督學(xué)習(xí)是指不需要預(yù)先學(xué)習(xí)出模型,并且輸入數(shù)據(jù)沒(méi)有類別標(biāo)簽,而是通過(guò)推測(cè)輸入數(shù)據(jù)中蘊(yùn)含的結(jié)構(gòu)來(lái)構(gòu)造模型。無(wú)監(jiān)督學(xué)習(xí)用于實(shí)時(shí)、高速處理情景。
3)強(qiáng)化學(xué)習(xí)中,數(shù)據(jù)的獲取主要為來(lái)自外部環(huán)境的反饋,且模型必須對(duì)這些反饋數(shù)據(jù)做出反應(yīng)。強(qiáng)化學(xué)習(xí)中反饋來(lái)自外部環(huán)境,動(dòng)態(tài)調(diào)整參數(shù)從而達(dá)到強(qiáng)化信號(hào)的目標(biāo),適用于系統(tǒng)控制和機(jī)器人領(lǐng)域。
4)半監(jiān)督混合學(xué)習(xí)是指樣本數(shù)據(jù)由帶標(biāo)簽和不帶標(biāo)簽兩種組成,先通過(guò)帶標(biāo)簽的數(shù)據(jù)學(xué)習(xí),再通過(guò)對(duì)未帶標(biāo)簽數(shù)據(jù)進(jìn)行知識(shí)發(fā)現(xiàn)找到隱藏的結(jié)構(gòu)更新完善學(xué)習(xí)模型。半監(jiān)督學(xué)習(xí)解決的問(wèn)題主要是如何通過(guò)少量含有標(biāo)簽與大量不含標(biāo)簽的數(shù)據(jù)進(jìn)行模型的訓(xùn)練和學(xué)習(xí)。
深度學(xué)習(xí)的計(jì)算成本和合適的訓(xùn)練方法造成一定的局限性。
1)基于模型的故障預(yù)測(cè)技術(shù);主要包括兩類:一類是基于失效物理模型,針對(duì)電子產(chǎn)品展開(kāi);另一類是基于系統(tǒng)的輸入輸出模型,或者是狀態(tài)空間模型,典型代表是基于隨機(jī)濾波理論的故障預(yù)測(cè)技術(shù),主要方法包括卡爾曼濾波、擴(kuò)展卡爾曼濾波、粒子濾波等。
2)基于知識(shí)的故障預(yù)測(cè)技術(shù):主要有專家系統(tǒng)和模糊邏輯兩種,適合定性推理,可以充分利用專家經(jīng)驗(yàn)和知識(shí),不適合于定量計(jì)算。專家知識(shí)的局限性和知識(shí)規(guī)則化表述的難度對(duì)象系統(tǒng)知識(shí)獲取的瓶頸。
3)基于數(shù)據(jù)的故障預(yù)測(cè)技術(shù):以數(shù)據(jù)為基礎(chǔ),通過(guò)數(shù)據(jù)分析處理方法挖掘隱含信息進(jìn)行預(yù)測(cè),成為了一種實(shí)用的故障預(yù)測(cè)技術(shù)[6]。隨著機(jī)器學(xué)習(xí)與深度學(xué)習(xí)理論的發(fā)展,基于機(jī)器學(xué)習(xí)的方法成為裝備故障預(yù)測(cè)技術(shù)的發(fā)展趨勢(shì)。在復(fù)合故障的情況下,各個(gè)故障對(duì)系統(tǒng)存在交互作用,無(wú)法利用模式特征對(duì)復(fù)合故障進(jìn)行故障建模與理論分析。深度學(xué)習(xí)不依賴前期假設(shè),能夠自動(dòng)檢測(cè)相互作用。常規(guī)的預(yù)測(cè)結(jié)果好壞取決于特征工程準(zhǔn)備數(shù)據(jù)的能力,需要相專業(yè)知識(shí)和技能。深度學(xué)習(xí)無(wú)需對(duì)數(shù)據(jù)正確分布做假設(shè),無(wú)需處理原始數(shù)據(jù),能夠自動(dòng)學(xué)習(xí)預(yù)測(cè)性的特征。
故障預(yù)測(cè)技術(shù)分為靜態(tài)故障預(yù)測(cè)和動(dòng)態(tài)故障預(yù)測(cè)兩種。
1)靜態(tài)預(yù)測(cè)通過(guò)計(jì)算被測(cè)系統(tǒng)的質(zhì)量屬性以及根據(jù)歷史故障記錄訓(xùn)練好的預(yù)測(cè)模型,來(lái)對(duì)被測(cè)系統(tǒng)進(jìn)行故障預(yù)測(cè);
2)動(dòng)態(tài)預(yù)測(cè)指的是對(duì)系統(tǒng)當(dāng)前的運(yùn)行狀態(tài)進(jìn)行監(jiān)控,采集系統(tǒng)重要參數(shù)的信息,根據(jù)各個(gè)參數(shù)的安全閥值來(lái)對(duì)系統(tǒng)是否出現(xiàn)故障或者是否安全進(jìn)行預(yù)測(cè)。
軟件故障是突變故障,不適宜動(dòng)態(tài)故障預(yù)測(cè)。根據(jù)軟件的歷史故障數(shù)據(jù)和質(zhì)量屬性軟件缺陷靜態(tài)預(yù)測(cè)。首先分析軟件質(zhì)量屬性特征,然后對(duì)故障數(shù)據(jù)平衡化處理,最后形成軟件缺陷靜態(tài)預(yù)測(cè)模型并對(duì)模型進(jìn)行訓(xùn)練。
基于機(jī)器深度學(xué)習(xí)的故障預(yù)測(cè)流程為:首先對(duì)裝備傳感器或試驗(yàn)的數(shù)據(jù)進(jìn)行收集與處理,然后研究機(jī)器深度學(xué)習(xí)理論形成故障模型,在此基礎(chǔ)上對(duì)基于機(jī)器深度學(xué)習(xí)故障模型進(jìn)行訓(xùn)練,對(duì)裝備故障進(jìn)行特征識(shí)別并計(jì)算故障演化規(guī)律,如圖1所示。
圖1 基于深度學(xué)習(xí)的系統(tǒng)故障動(dòng)態(tài)預(yù)測(cè)技術(shù)
裝備故障數(shù)據(jù)表達(dá)各異,形式不統(tǒng)一,不能直接用于故障機(jī)器學(xué)習(xí),研究故障數(shù)據(jù)收集與處理方法,使裝備故障數(shù)據(jù)轉(zhuǎn)換為能夠被學(xué)習(xí)算法識(shí)別的數(shù)據(jù)。由于故障的多樣性,系統(tǒng)往往需要對(duì)多種參數(shù)監(jiān)測(cè),參數(shù)的數(shù)據(jù)量是也不一樣的,所以要選取有用的參數(shù)數(shù)據(jù)。對(duì)裝備傳感器獲得以及試驗(yàn)數(shù)據(jù)收集并進(jìn)行特點(diǎn)分析。
1)數(shù)據(jù)位判斷故障分析,裝備數(shù)據(jù)中包含大量的由傳感器檢測(cè)得到的故障標(biāo)志和狀態(tài)標(biāo)志,此類型的故障信息完全由數(shù)據(jù)協(xié)議中定義好的。該類故障數(shù)據(jù)由單一量決定故障,并且故障與判據(jù)一一對(duì)應(yīng)。
2)數(shù)據(jù)量越界分析,關(guān)鍵數(shù)據(jù)有邊界限制,但是越界沒(méi)有標(biāo)志位,而取值超出上下限則是故障數(shù)據(jù),
3)綜合判斷類分析,有時(shí)單個(gè)狀態(tài)量均正常但是系統(tǒng)卻處于不良狀態(tài)的情況,該種類型的故障需要綜合判斷多個(gè)關(guān)鍵參數(shù)才能識(shí)別。
4)趨勢(shì)關(guān)系類分析。系統(tǒng)的一部分故障參數(shù)的歷史數(shù)據(jù)具有明顯的趨勢(shì);還有一部是測(cè)試參數(shù),在控制指令或處于某種狀態(tài)和事件情況下,數(shù)據(jù)會(huì)隨之發(fā)生變化。
分析裝備數(shù)據(jù)不同特點(diǎn),目的是使數(shù)據(jù)參數(shù)化。數(shù)據(jù)參數(shù)化是將不同格式的故障表達(dá)形式使用數(shù)據(jù)進(jìn)行表示,保證數(shù)據(jù)格式符合要求,確保數(shù)據(jù)集中盡量沒(méi)有無(wú)用數(shù)據(jù),并且使數(shù)據(jù)格式符合機(jī)器深度學(xué)習(xí)算法需要的數(shù)據(jù)輸入格式。
最后,對(duì)特征選擇和提取。特征選擇是數(shù)據(jù)降維的主要方法,從一個(gè)數(shù)據(jù)集的特征空間搜索到最優(yōu)子集的過(guò)程,冗余特征以及不相關(guān)特征將被從原始特征集合中去除,從而保留對(duì)數(shù)據(jù)特征起決定區(qū)分作用的特征,可以極大地降低樣本數(shù)據(jù)的維度,提高學(xué)習(xí)模型訓(xùn)練的效率。特征提取通過(guò)對(duì)原始特征集進(jìn)行組合變換獲取特征子集。
特征選擇算法的主要目標(biāo)是在原始特征空間中尋找特征子空間,常用的搜索算法分為:完全搜索算法、啟發(fā)式搜索算法、隨機(jī)搜索算法。完全搜索算法包括廣度優(yōu)先搜索、分支界定搜索、定向搜索、最優(yōu)優(yōu)先搜索。完全搜索算法需要對(duì)解空間進(jìn)行暴力搜索,時(shí)間復(fù)雜度一般比較高,在特征屬性比較多的時(shí)候一般不適用;啟發(fā)式搜索算法主要包括序列前向選擇、序列后向選擇、序列雙向選擇、序列浮動(dòng)選擇等算法,啟發(fā)式搜索算法可以省去一些多余的搜索路徑,比完全搜索算法具有更高的效率;隨機(jī)算法包括模擬退火算法、遺傳算法等,這些算法過(guò)于依賴隨機(jī)因素,有的實(shí)驗(yàn)很難進(jìn)行重現(xiàn)。在實(shí)際的應(yīng)用中,需要根據(jù)不同搜索算法以及特征空間的特點(diǎn)選擇合適的搜索算法。
故障數(shù)據(jù)收集與處理提取能表現(xiàn)故障的特征數(shù)據(jù)并形成訓(xùn)練樣本和識(shí)別樣本,刪除原始數(shù)據(jù)中的偽信息并歸一化處理,使數(shù)據(jù)滿足機(jī)器深度學(xué)習(xí)要求。
深度學(xué)習(xí)本質(zhì)是計(jì)算觀測(cè)數(shù)據(jù)的分層特征,其中高層特征由低層得到。常見(jiàn)的深度學(xué)習(xí)算法有:
1)深度信念網(wǎng)絡(luò)(Deep Belief Network,DBN):由多層隨機(jī)隱變量組成的概率生成式模型,最高的兩層之間由無(wú)向?qū)ΨQ邊連接,低層接受來(lái)自上一層的自頂向下的有向邊。
2)玻爾茲曼機(jī)(Boltzmann Machine,BM): 具有對(duì)稱型連接的網(wǎng)絡(luò),它由與神經(jīng)元相似的單元構(gòu)成,能夠控制隨機(jī)決策開(kāi)關(guān)的閉合。受限玻爾茲曼機(jī)(Restricted Boltzman Machine,RBM): 一種特殊的RBM,它由一個(gè)可見(jiàn)單元層和一個(gè)隱單元層組成,而且每條邊必須連接一個(gè)可見(jiàn)單元和一個(gè)隱單元,同層單元間無(wú)連接。
3)深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN): 一種具有多個(gè)隱層的多層感知器,其權(quán)值是全部連接的,并且經(jīng)常以無(wú)監(jiān)督或有監(jiān)督的方式初始化。
4)深度自編碼器(Deep Autoencoder,DA): 一種“判別式”DNN。它的目標(biāo)輸出是輸入數(shù)據(jù)本身,而不是類別標(biāo)簽,是無(wú)監(jiān)督學(xué)習(xí)模型。
5)分布式表征(Distributed Representation,DR): 觀測(cè)數(shù)據(jù)的內(nèi)部表達(dá),以眾多隱因子之間的相互作用來(lái)建模,從其他因子結(jié)構(gòu)學(xué)習(xí)到的某個(gè)因子可以很好地推廣到新的結(jié)構(gòu)。分布式表征經(jīng)常出現(xiàn)在“連接”神經(jīng)網(wǎng)絡(luò)中,其中,一個(gè)概念由許多單元的行為模式表示,同時(shí),同一個(gè)單元通常對(duì)許多概念都有貢獻(xiàn)。這種多對(duì)多的映射提供了數(shù)據(jù)內(nèi)部結(jié)構(gòu)表達(dá)的魯棒性,另一個(gè)重要的優(yōu)點(diǎn)是它們促進(jìn)了概念和關(guān)系的泛化。
基于深度學(xué)習(xí)的故障理論模型研究對(duì)現(xiàn)有的機(jī)器學(xué)習(xí)算法分析,對(duì)新興深度信念網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)、去噪自動(dòng)編碼器的算法進(jìn)行深入研究,為故障模型訓(xùn)練奠定基礎(chǔ)。
深度學(xué)習(xí)方法的目標(biāo)在于分層次地學(xué)習(xí)特征,在每一層學(xué)習(xí)中高層次的特征是由低層次的特征學(xué)習(xí)構(gòu)成的。在多層次的抽象過(guò)程中自動(dòng)學(xué)習(xí)特征可以使機(jī)器學(xué)習(xí)系統(tǒng)從原始數(shù)據(jù)中學(xué)習(xí)到從輸入映射到輸出的復(fù)雜函數(shù),而不再需要人類完全手工提取特征這樣一個(gè)繁重而困難的過(guò)程。
基于深度學(xué)習(xí)的故障理論模型中,卷積神經(jīng)網(wǎng)絡(luò)就是一種深度的監(jiān)督學(xué)習(xí)下的機(jī)器學(xué)習(xí)模型,而深度置信網(wǎng)、深度自編碼器就是一種無(wú)監(jiān)督學(xué)習(xí)下的機(jī)器學(xué)習(xí)模型。在故障數(shù)據(jù)收集與處理的結(jié)果和深度學(xué)習(xí)故障理論模型的基礎(chǔ)上,進(jìn)行有監(jiān)督的訓(xùn)練和無(wú)監(jiān)督的訓(xùn)練,形成基于深度學(xué)習(xí)的故障模型訓(xùn)練的可操作流程
根據(jù)訓(xùn)練好的故障模型和識(shí)別的故障特征,分析該特征的時(shí)間序列,對(duì)該特征進(jìn)行時(shí)間演化[7]。對(duì)識(shí)別的多個(gè)故障特征進(jìn)行關(guān)聯(lián)規(guī)則分析,表示為模糊Petri網(wǎng)故障傳播模型,形成故障特征單特征的時(shí)間演化規(guī)律和多特征的傳播演化規(guī)律模型。
1)單特征的時(shí)間演化規(guī)律。通過(guò)監(jiān)測(cè)系統(tǒng)的狀態(tài)參數(shù),采用時(shí)間序列法對(duì)故障特征參數(shù)進(jìn)行預(yù)測(cè),了解和掌握系統(tǒng)的運(yùn)行狀態(tài)及狀態(tài)的變化,推測(cè)其狀態(tài)的變化趨勢(shì),估計(jì)故障的傳播、發(fā)展和系統(tǒng)的劣化趨勢(shì)。主要步驟是根據(jù)歷史和實(shí)時(shí)數(shù)據(jù)對(duì)未來(lái)參數(shù)值進(jìn)行預(yù)測(cè),使用時(shí)間序列,使用基于機(jī)器深度學(xué)習(xí)的故障模型和實(shí)時(shí)遙測(cè)數(shù)據(jù)Y(k),以及歷史遙測(cè)數(shù)據(jù)Y(k-i)來(lái)計(jì)算模型的輸出O(k+1)。單特征的時(shí)間演化規(guī)律是進(jìn)行事故預(yù)防,實(shí)現(xiàn)預(yù)防性維修的主要手段。
2)多特征的傳播演化規(guī)律,以基于機(jī)器深度學(xué)習(xí)的故障識(shí)別出的特征為基礎(chǔ),研究故障特征的關(guān)聯(lián)規(guī)則和演化規(guī)律,建立故障演化動(dòng)態(tài)模型。關(guān)聯(lián)規(guī)則是對(duì)失效關(guān)系中的被影響項(xiàng)和影響項(xiàng)的確定。對(duì)于提識(shí)別的故障特征中,前項(xiàng)和后項(xiàng)存在關(guān)聯(lián)失效關(guān)系,關(guān)聯(lián)規(guī)則的前項(xiàng)目為被影響項(xiàng),后一項(xiàng)為影響項(xiàng),后項(xiàng)發(fā)生失效會(huì)引起前項(xiàng)失效。由每個(gè)故障特征的關(guān)聯(lián)關(guān)系,得到所有故障特征的失效關(guān)聯(lián)關(guān)系,就可以建立關(guān)聯(lián)失效模型。
復(fù)雜裝備其故障往往存在大量不可預(yù)測(cè)的不確定信息,例如故障的不確定性和傳播性特點(diǎn)。分析出關(guān)聯(lián)規(guī)則與Petri網(wǎng)理論的結(jié)合用于傳播演化規(guī)律表示,使得故障預(yù)測(cè)與演化表述更加準(zhǔn)確。Petri故障網(wǎng)的建模規(guī)則主要遵循方面的規(guī)則:一是根據(jù)系統(tǒng)的設(shè)備之間的關(guān)聯(lián)關(guān)系建立網(wǎng)模型,二是根據(jù)變遷發(fā)生規(guī)則來(lái)描述系統(tǒng)故障信息的傳播過(guò)程。Petri故障網(wǎng)的變遷發(fā)生規(guī)則應(yīng)該能夠反映系統(tǒng)故障信息傳播情況,在系統(tǒng)故障傳播過(guò)程中,有一因一果、一因多果、多因一果、多果多因、競(jìng)爭(zhēng)模式等多種故障傳播模式。
發(fā)掘性能參數(shù)或故障特征的變化規(guī)律,推測(cè)故障特征的變化趨勢(shì),估計(jì)故障的傳播、發(fā)展和裝備性能的變化趨勢(shì),進(jìn)行故障趨勢(shì)預(yù)測(cè)與演化分析,達(dá)到故障預(yù)防的作用。
基于機(jī)器學(xué)習(xí)的軟件故障靜態(tài)預(yù)測(cè)技術(shù),主要挖掘出具有故障傾向模塊的軟件度量信息綜合特征,盡可能多而準(zhǔn)確的發(fā)現(xiàn)軟件中潛在的缺陷,在開(kāi)發(fā)過(guò)程中及時(shí)對(duì)代碼進(jìn)行可靠性設(shè)計(jì)和優(yōu)化調(diào)整,提高可靠性和健壯性[8]。基于機(jī)器學(xué)習(xí)的軟件缺陷靜態(tài)預(yù)測(cè)技術(shù)途徑如圖2所示。
圖2 基于深度學(xué)習(xí)的軟件缺陷靜態(tài)預(yù)測(cè)技術(shù)
軟件故障靜態(tài)預(yù)測(cè)的基本原理是:如果軟件與之前已有軟件具有相似的軟件質(zhì)量屬性,則說(shuō)明當(dāng)前的軟件具有相似的故障傾向。所以可用之前開(kāi)發(fā)的軟件版本模塊的故障記錄來(lái)進(jìn)行預(yù)測(cè)。
1)軟件質(zhì)量特性分析以軟件屬性度量向量作為輸入,主要屬性度量包括軟件項(xiàng)目的過(guò)程度量和產(chǎn)品度量。產(chǎn)品度量包括方法層、類層和包層度量等;過(guò)程度量包括人員度量、需求度量、代碼變更度量等。
2)構(gòu)建訓(xùn)練數(shù)據(jù)集。計(jì)算軟件的質(zhì)量屬性,標(biāo)注其是否發(fā)生故障的信息記錄,將每一個(gè)軟件對(duì)象都轉(zhuǎn)換為特征向量的形式。對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,例如對(duì)數(shù)據(jù)缺失值的處理等。將軟件劃分成多個(gè)模塊,選擇合適的軟件質(zhì)量屬性從各個(gè)角度對(duì)模塊進(jìn)行質(zhì)量度量,得到對(duì)于每個(gè)模塊的特征向量,根據(jù)模塊的歷史故障記錄,得到的實(shí)例特征向量標(biāo)注樣本的類別標(biāo)簽即該模塊是否發(fā)生故障,并對(duì)得到的實(shí)例集合進(jìn)行歸一化、消零處理,從而得到最終的訓(xùn)練數(shù)據(jù)集。
3)利用訓(xùn)練數(shù)據(jù)集,選用部分或者全部樣本建立故障預(yù)測(cè)模型。對(duì)于不同的模型建立算法有不同的具體操作。輸入沒(méi)有標(biāo)注類別標(biāo)簽的待預(yù)測(cè)樣本屬性向量集合后,利用訓(xùn)練好的預(yù)測(cè)模型可以根據(jù)每個(gè)實(shí)例的屬性值以及構(gòu)建好的預(yù)測(cè)模型生成的預(yù)測(cè)規(guī)則來(lái)對(duì)待預(yù)測(cè)的樣本標(biāo)注樣本類別。通常將數(shù)據(jù)集分為訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集,訓(xùn)練數(shù)據(jù)集構(gòu)建預(yù)測(cè)模型,測(cè)試數(shù)據(jù)集來(lái)對(duì)預(yù)測(cè)模型的性能進(jìn)行評(píng)估,比如查準(zhǔn)率、正確率和查全率等。
基于深度學(xué)習(xí)的故障預(yù)測(cè)系統(tǒng)使用開(kāi)源的深度學(xué)習(xí)框架。常用的開(kāi)源深度學(xué)習(xí)框架有TensorFlow、Caffe、Theano、Torch、Microsoft Cognitive Toolkit等,都能支持深度神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)、深度信念網(wǎng)絡(luò)、遞歸神經(jīng)網(wǎng)絡(luò)等模型。TensorFlow是谷歌開(kāi)源通用深度學(xué)習(xí)框架,具有使用靈活、跨平臺(tái)、產(chǎn)品化、高性能特點(diǎn),系統(tǒng)的研制主要在TensorFlow基礎(chǔ)上進(jìn)行二次開(kāi)發(fā)。
4.1.1 TensorFlow安裝部署
TensorFlow提供Pip安裝、Virtualenv安裝、Anaconda安裝、docker安裝、源代碼安裝等安裝方式。開(kāi)源軟件TensorFlow更新到1.2版,已支持Windows 7、10和Server 2016安裝。TensorFlow分為CPU版和GPU版,安裝GPU版需要安裝CUDA、CuDNN兩個(gè)驅(qū)動(dòng)。
4.1.2 TensorFlow函數(shù)調(diào)用
基于深度學(xué)習(xí)的故障預(yù)測(cè)系統(tǒng)主要應(yīng)用TensorFlow的如下API:
Tf.random_uniform([1],-1.0,1.0):構(gòu)建一個(gè)tensor,shape為[1],值符合[-1,1)的均勻分布。其中[1]表示一維數(shù)組,包含1個(gè)元素。
Tf.Variable(initial_value=None):構(gòu)建新變量,并會(huì)加入到TensorFlow框架的圖集合中。
Tf.zeros([1]):構(gòu)建一個(gè)tensor,該tensor的shape為[1],里面所有元素為0。
Tf.square(x,name=None):計(jì)算tensor的平方值。
Tf.reduce_mean(input_tensor):計(jì)算input_tensor中的所有元素的均值。
Tf.train.GradientDescentOptimizer(0.4):構(gòu)建梯度下降優(yōu)化器,0.4為學(xué)習(xí)速率。學(xué)習(xí)率決定邁向(局部)最小值的每一步的步長(zhǎng),設(shè)置的太小,下降速度會(huì)很慢,設(shè)置太大則會(huì)出現(xiàn)直接越過(guò)最小值現(xiàn)象。一般調(diào)到目標(biāo)函數(shù)值減小并速度適中情況。
optimizer.minimize(loss):構(gòu)建優(yōu)化算子操作,使用梯度下降法計(jì)算損失方程的最小值。loss為需要被優(yōu)化的損失方程。
Tf.initialize_all_vatiables():初始化所有TensorFlow的變量。
Tf.Session():創(chuàng)建一個(gè)TensorFlow的session,該session運(yùn)行TensorFlow的圖計(jì)算模型。
session.run():在session中執(zhí)行圖模型的運(yùn)算操作。如果參數(shù)為tensor時(shí),可以用來(lái)求tensor的值。
Tf.train.ClusterSpec({“ps”:ps_hosts,“worker”:worker_hosts}):創(chuàng)建集群描述信息,ps、worker為作業(yè)名稱,ps_hosts、worker_hosts為作業(yè)的任務(wù)所在節(jié)點(diǎn)的地址信息。
Tf.train.Server(cluster,job_name,task_index):創(chuàng)建TensorFlow服務(wù),用于運(yùn)行相應(yīng)作業(yè)上的計(jì)算任務(wù),任務(wù)在task_index指定的機(jī)器上啟動(dòng)。
Tf.device(device_name_or_function):在指定的設(shè)備上執(zhí)行tensor運(yùn)算。
4.1.3 并行訓(xùn)練
TensorFlow能夠支持在幾百臺(tái)機(jī)器上并行訓(xùn)練。分布式TensorFlow由高性能的gRPF庫(kù)作為底層技術(shù)支持。TensorFlow集群有一系列任務(wù)組成。TensorFlow任務(wù)采用相同的訓(xùn)練模型在不同的小批量數(shù)據(jù)上進(jìn)行訓(xùn)練,然后再參數(shù)模型服務(wù)器上更新模型的共享參數(shù)。TensorFlow支持同步訓(xùn)練和異步訓(xùn)練兩種方式。異步訓(xùn)練在每個(gè)節(jié)點(diǎn)上的任務(wù)為獨(dú)立訓(xùn)練方式,不需要協(xié)調(diào)操作。同步訓(xùn)練時(shí)每個(gè)節(jié)點(diǎn)的任務(wù)需要讀入共享參數(shù),執(zhí)行并行化的梯度計(jì)算,然后將所有共享參數(shù)進(jìn)行合并。
基于深度學(xué)習(xí)的故障預(yù)測(cè)主要解決以下關(guān)鍵問(wèn)題:
1)能夠從未標(biāo)記的數(shù)據(jù)中學(xué)習(xí),裝備試驗(yàn)中大多數(shù)據(jù)都是未標(biāo)記的,未標(biāo)記的數(shù)據(jù)缺少與當(dāng)前問(wèn)題相關(guān)的明確“意義”,深度學(xué)習(xí)在數(shù)據(jù)中檢測(cè)基本模式,歸類相似條目或者識(shí)別異常值。
2)將深度學(xué)習(xí)方法引入故障預(yù)測(cè)領(lǐng)域,解決普通機(jī)器學(xué)習(xí)訓(xùn)練性能較差,預(yù)測(cè)效果不理想的現(xiàn)狀,提高故障預(yù)測(cè)準(zhǔn)確度。
3)針對(duì)常規(guī)預(yù)測(cè)方法難以分析復(fù)合故障的情況下各個(gè)故障對(duì)系統(tǒng)的交互作用,故障預(yù)測(cè)領(lǐng)域中尚未有故障演化規(guī)律研究現(xiàn)狀,在深度學(xué)習(xí)識(shí)別的故障特征基礎(chǔ)上,形成單特征的時(shí)間演化模型和多特征關(guān)聯(lián)的Petri網(wǎng)模型。
4)針對(duì)軟件故障機(jī)理具有突變性,不適宜基于深度學(xué)習(xí)的故障特征識(shí)別與故障演化方法,利用軟件歷史故障數(shù)據(jù)和軟件質(zhì)量屬性對(duì)軟件缺陷進(jìn)行靜態(tài)預(yù)測(cè)。
本文針對(duì)常規(guī)預(yù)測(cè)方法難以分析復(fù)合故障的情況下各個(gè)故障對(duì)系統(tǒng)的交互作用,難以分析裝備數(shù)據(jù)復(fù)雜特征,難以實(shí)時(shí)、準(zhǔn)確預(yù)測(cè)故障等現(xiàn)狀,利用裝備狀態(tài)監(jiān)測(cè)和試驗(yàn)驗(yàn)證獲得的海量數(shù)據(jù),將深度學(xué)習(xí)算法與裝備故障數(shù)據(jù)特點(diǎn)相結(jié)合,形成基于深度學(xué)習(xí)的動(dòng)態(tài)故障預(yù)測(cè)技術(shù);針對(duì)軟件故障突變的特點(diǎn),研究基于軟件質(zhì)量特征的機(jī)器學(xué)習(xí)方法,形成軟件缺陷靜態(tài)預(yù)測(cè)技術(shù)。利用現(xiàn)代大數(shù)據(jù)和人工智能方法,提高裝備故障預(yù)測(cè)能力。
[1] 連光耀,等.基于PHM的電子裝備故障預(yù)測(cè)系統(tǒng)實(shí)現(xiàn)關(guān)鍵技術(shù)研究[J].計(jì)算機(jī)測(cè)量與控制,2010,18(9):1959-1961.
[2] 黃 波,等.基于RBF神經(jīng)網(wǎng)絡(luò)的某復(fù)雜裝備故障預(yù)測(cè)方法[J]. 計(jì)算機(jī)仿真, 2014(01): 14-17.
[3] 嚴(yán) 蕾.基于改進(jìn)隨機(jī)森林的軟件故障預(yù)測(cè)模型研究[J].西安電子科技大學(xué),2013: 70.
[4] 周 浩.基于機(jī)器學(xué)習(xí)的E級(jí)系統(tǒng)故障預(yù)測(cè)關(guān)鍵技術(shù)研究[J]. 國(guó)防科學(xué)技術(shù)大學(xué),2011:124.
[5] 李 曼.基于機(jī)器學(xué)習(xí)的故障識(shí)別方法與系統(tǒng)研制[J].北京交通大學(xué),2015: 122.
[6] 房紅征,等.基于粒子群優(yōu)化神經(jīng)網(wǎng)絡(luò)的衛(wèi)星故障預(yù)測(cè)方法[J].計(jì)算機(jī)測(cè)量與控制, 2013(07): 1730-1733,1745.
[7] 王 亮,等.基于數(shù)據(jù)驅(qū)動(dòng)的裝備故障預(yù)測(cè)技術(shù)研究[J].計(jì)算機(jī)測(cè)量與控制, 2013(08): 2087-2089,2105.
[8] 羅云鋒,賁可榮.軟件故障靜態(tài)預(yù)測(cè)方法綜述[J].計(jì)算機(jī)科學(xué)與探索, 2009(05): 449-459.