賈寶惠,姜番,王玉鑫,*,王杜
1.中國(guó)民航大學(xué) 交通科學(xué)與工程學(xué)院,天津 300300
2.中國(guó)民航大學(xué) 航空工程學(xué)院,天津 300300
民用飛機(jī)在運(yùn)營(yíng)中,不可避免地會(huì)發(fā)生各類意外事故和系統(tǒng)故障,開展面向民用飛機(jī)故障診斷的研究工作,是確保民機(jī)安全運(yùn)行和持續(xù)適航的重要前提。故障診斷的目標(biāo)是當(dāng)設(shè)備檢測(cè)到故障,維修人員就需要根據(jù)具體情況以及相關(guān)手冊(cè)判斷故障原因,從而提出故障修復(fù)方案[1]。而人工排故會(huì)在一定程度上受人的主觀因素影響并且浪費(fèi)維修人員的時(shí)間成本。由于對(duì)飛機(jī)系統(tǒng)進(jìn)行精準(zhǔn)建模十分困難,目前學(xué)者們廣泛應(yīng)用基于數(shù)據(jù)驅(qū)動(dòng)的方法,建立傳統(tǒng)機(jī)器學(xué)習(xí)或深度學(xué)習(xí)模型挖掘數(shù)據(jù)中的信息,以進(jìn)行故障診斷[2]。
目前大部分對(duì)復(fù)雜系統(tǒng)的故障診斷工作都是基于易于分析的結(jié)構(gòu)化數(shù)據(jù)開展的[3],然而這樣忽略了非結(jié)構(gòu)化數(shù)據(jù)中蘊(yùn)含的豐富的故障信息。在飛機(jī)日常運(yùn)營(yíng)中會(huì)積累大量的維修記錄,以文本的形式保存在數(shù)據(jù)庫中,包含了故障問題信息、故障檢修方法及故障原因等關(guān)鍵特征[4]。目前這些維修文本數(shù)據(jù)由于自身的復(fù)雜性還未被充分利用,如果從這些數(shù)據(jù)中提取知識(shí),能夠輔助維修人員依據(jù)故障現(xiàn)象快速準(zhǔn)確定位設(shè)備的故障位置及原因,大大降低了人工依賴度,有利于提高基于知識(shí)的故障診斷的自主化程度、可解釋性和診斷精度[5],對(duì)進(jìn)一步提升航空安全保障水平具有重要的意義[6]。
中文文本分析技術(shù)主要是從中文文本中抽取和挖掘高質(zhì)量的、有價(jià)值的信息。文本分析技術(shù)最早起源于1958年,Luhn[7]選擇了詞頻作為特征并融入了詞語的位置分布的信息進(jìn)行文本分析,開創(chuàng)了文本分析研究先河。經(jīng)過眾多學(xué)者的不斷探索,文本分析出現(xiàn)了一些經(jīng)典機(jī)器學(xué)習(xí)算法,如樸素貝葉斯[8]、支持向量機(jī)(Support Vector Machine,SVM)[9]等。直 到2012年,深 度 學(xué)習(xí)算法引起了學(xué)者們的廣泛關(guān)注,它可以實(shí)現(xiàn)一種端到端的直接分析過程,避免了傳統(tǒng)機(jī)器學(xué)習(xí)方法需要復(fù)雜的特征工程的問題[10]。Abedin 等[11]使用修改后的Basilisk 框架自動(dòng)增加基礎(chǔ)詞典,生成的詞典在支持向量機(jī)分類中用于識(shí)別事件原因。在Andrzejczak 等[12]研 究 中 也 使 用 了 根 據(jù) 詞 典來識(shí)別事件原因的方法,但是該方法難以捕捉文檔中存在的非常有用的潛在含義。Tulechki[13]將自然語言處理技術(shù)應(yīng)用在與航空安全相關(guān)信息處理框架中,采用SVM 算法構(gòu)造分類器來預(yù)測(cè)發(fā)生安全事件類別。Zhang 等[14]建立CNNLSTM-Attention 融合模型學(xué)習(xí)句子的語義和情感信息以及關(guān)系,實(shí)現(xiàn)對(duì)文本的情感分析。鄭煒等[15]針對(duì)軟件安全缺陷報(bào)告數(shù)量少、特征復(fù)雜等特點(diǎn),采用TextCNN-Attention-TextRNN 模型實(shí)現(xiàn)對(duì)軟件安全問題的預(yù)測(cè)。田園和馬文[16]使用引入注意力機(jī)制的雙向長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)(Bidirectional Long Short-Term Memory,BiLSTM)對(duì)電網(wǎng)領(lǐng)域運(yùn)行設(shè)備形成的故障日志進(jìn)行故障識(shí)別。李新琴等[17]使用組合權(quán)重計(jì)算方法將BiGRU 和BiLSTM 的學(xué)習(xí)結(jié)果進(jìn)行集成,實(shí)現(xiàn)對(duì)高速鐵路信號(hào)道岔設(shè)備故障數(shù)據(jù)的分類。上述研究雖然在一些領(lǐng)域上逐漸實(shí)現(xiàn)了文本的自動(dòng)分析,但仍存在以下問題:
1)基于民機(jī)維修文本數(shù)據(jù)的故障診斷還處于人工分析階段,未實(shí)現(xiàn)智能診斷。
2)文本挖掘技術(shù)與專業(yè)領(lǐng)域知識(shí)結(jié)合較為困難,在預(yù)處理操作時(shí)由于專業(yè)詞語較多很難使用分詞技術(shù)做到詞語的精確劃分,這為語義特征的學(xué)習(xí)帶來了難度。
3)當(dāng)處理的數(shù)據(jù)量較大時(shí),所建立的分析模型參數(shù)量較大,運(yùn)行時(shí)占用內(nèi)存多,因此導(dǎo)致了分析時(shí)間過長(zhǎng),處理速度慢等問題。
本文提出了一種修正迭代的基于BERTLightGBM 模型的飛機(jī)維修記錄故障原因分析流程,實(shí)現(xiàn)飛機(jī)維修文本數(shù)據(jù)端到端的智能診斷,提升了維修文本的利用率及使用價(jià)值;相比于其他文本分析模型本文所提模型在民機(jī)維修文本故障原因分析中準(zhǔn)確率較高;在診斷速度上有所優(yōu)化,提升了方法的實(shí)用性。從而能夠輔助維修人員依據(jù)故障現(xiàn)象快速準(zhǔn)確定位設(shè)備的故障位置及原因,大大降低了人工依賴度。首先,結(jié)合維修案例文本的特點(diǎn),對(duì)文本預(yù)處理、文本表示、特征提取模型和特征分類模型的構(gòu)建做了具體研究;其次,不斷增加飛機(jī)維修文本數(shù)據(jù)驗(yàn)證所提出的故障診斷流程的有效性,建立BERT 模型用于構(gòu)建全局、雙向的文本特征提取能力,解決民航維修領(lǐng)域文本分詞困難、上下文信息相關(guān)性高的問題;并將LightGBM 作為分類器,以實(shí)現(xiàn)并行分析減小模型的參數(shù)數(shù)量,在降低模型復(fù)雜度,增強(qiáng)分析效率方面達(dá)到良好的效果,提升了方法在工程上的實(shí)用性;最后,對(duì)比其他分類方法,從準(zhǔn)確率及診斷時(shí)間方面驗(yàn)證了使用BERT-LightGBM 模型進(jìn)行民機(jī)維修文本故障原因分析的可行性和優(yōu)越性。
在民航運(yùn)營(yíng)過程中會(huì)產(chǎn)生大量的維修記錄,維修人員在檢查、維修過程中的信息以文本形式保存在故障數(shù)據(jù)庫中,部分維修記錄如表1 所示。通過分析大量的飛機(jī)維修記錄,總結(jié)得出如下特點(diǎn):
表1 維修記錄Table 1 Maintenance records
1)長(zhǎng)度短,數(shù)據(jù)量大。經(jīng)分析飛機(jī)維修文本大多數(shù)在100 個(gè)字符以內(nèi),但是數(shù)量大。因此存在嚴(yán)重的數(shù)據(jù)稀疏的問題,對(duì)文本處理時(shí)形成了高維稀疏的特征空間。
2)文本數(shù)據(jù)結(jié)構(gòu)不規(guī)范。不同書寫人員習(xí)慣不同導(dǎo)致同一信息可能因?yàn)椴煌藛T書寫方式存在差異。
3)包含大量的專有名詞縮寫和代碼。例如“剎車組件”會(huì)縮寫成“剎組”,“發(fā)動(dòng)機(jī)”會(huì)縮寫成“發(fā)”。
針對(duì)以上特點(diǎn),使用對(duì)短文本分析有較好的效果的BERT 模型進(jìn)行分析,可以結(jié)合上下文進(jìn)行區(qū)分同一詞語在不同語句中的不同語義;引入多頭自注意力機(jī)制可以克服在航空這種特定領(lǐng)域內(nèi)專業(yè)詞語較多,難以全部收錄在領(lǐng)域詞典里的問題;并且還可以解決維修記錄口語化嚴(yán)重,難以使用傳統(tǒng)分詞技術(shù)進(jìn)行語義理解的問題;融合LightGBM 模型能夠充分捕捉特征與故障原因標(biāo)簽的關(guān)系,從而獲得更準(zhǔn)確的診斷結(jié)果。
基于預(yù)訓(xùn)練語言模型雙向轉(zhuǎn)換器編碼表示(Bidirectional Encoder Representations from Transformers,BERT)[18]預(yù)訓(xùn)練模型是谷歌2018年提出的大型多任務(wù)語言模型,是一種基于多層雙向Transformer 架構(gòu)[19]的深度學(xué)習(xí)語言表示模型。其模型基本結(jié)構(gòu)如圖1 所示,其中EN為字向量編碼表示,TN指輸出向量。
圖1 BERT 模型基本結(jié)構(gòu)Fig.1 Basic structure of BERT model
BERT 預(yù)訓(xùn)練模型與經(jīng)典的Word2Vec 詞向量訓(xùn)練模型不同之處在于,Word2vec 只能表現(xiàn)詞的獨(dú)立語義信息,而BERT 模型不僅在Transformer 的Encoder 中引入多頭注意力機(jī)制(Multi-head Self-Attention),并且創(chuàng)新性地提出了遮蔽語言模型(Mask Language Model,MLM)和下個(gè)句子預(yù)測(cè)任務(wù)(Next Sentence Prediction,NSP)[20],在模型訓(xùn)練時(shí)不斷根據(jù)具體任務(wù)調(diào)節(jié)參數(shù),使得其能更好地捕捉并融合全文語義。在實(shí)際預(yù)訓(xùn)練中NSP 任務(wù)和MLM 任務(wù)結(jié)合,讓模型能夠更準(zhǔn)確地理解字、詞、句子甚至全文的語義信息[21]。
1)遮蔽語言模型:MLM 任務(wù)是隨機(jī)遮蔽每個(gè)句子中的15%的詞語,用剩下的詞語來預(yù)測(cè)被遮蔽的詞。對(duì)于被遮蔽的詞語,其80% 用[MSAK]代替,10% 用一個(gè)隨機(jī)詞代替,剩下10%的被遮蔽的詞語保持原詞不變。這樣就使得當(dāng)預(yù)測(cè)一個(gè)詞語時(shí),模型并不知道輸入的是否為正確的詞語,因此就會(huì)更多的依賴上下文的信息去預(yù)測(cè)詞語,賦予了模型的一定的糾錯(cuò)能力。
2)下個(gè)句子預(yù)測(cè)任務(wù):NSP 任務(wù)是從語料庫中隨機(jī)選擇50%正確語對(duì)和50%錯(cuò)誤語對(duì)進(jìn)行訓(xùn)練,根據(jù)句子間的語義相關(guān)性,判斷句子間的正確關(guān)系。
BERT 模型實(shí)現(xiàn)過程中有預(yù)訓(xùn)練和微調(diào)兩部分:在預(yù)訓(xùn)練過程中通過動(dòng)態(tài)調(diào)整模型參數(shù),最小化損失,從而使得模型訓(xùn)練得到的特征能夠盡可能地表征出語義的本質(zhì)[22];在微調(diào)階段,根據(jù)具體的任務(wù)實(shí)現(xiàn)對(duì)訓(xùn)練好的模型參數(shù)不斷進(jìn)行微調(diào)。因此BERT 模型不僅能夠有效獲取航空領(lǐng)域詞匯的上下文信息,而且能夠充分捕捉語義特征。
輕量級(jí)梯度提升機(jī)(Light Gradient Boosting Machine, LightGBM)[23]是基于梯度提升決策樹[24](Gradient Boosting Decision Tree,GBDT)的優(yōu)化實(shí)現(xiàn)。它的原理與GBDT 相似,是將損失函數(shù)的負(fù)梯度作為當(dāng)前決策樹的殘差近似值,去擬合新的決策樹,使預(yù)測(cè)值不斷逼近真實(shí)值[25]。
相比于傳統(tǒng)的GBDT,LightGBM 算法中融合了基于梯度的單邊采樣(Gradient-based One-Side Sampling,GOSS)和互斥特征捆綁(Exclusive Feature Bundling,EFB)2 種方法,可以減少信息丟失同時(shí)節(jié)省內(nèi)存占用加快運(yùn)行速度,解決了傳統(tǒng)提升算法在樣本數(shù)據(jù)量較大的環(huán)境下非常耗時(shí)的問題,能夠有效提高模型的準(zhǔn)確率和魯棒性。因此本文使用LightGBM 模型實(shí)現(xiàn)對(duì)所提取的語義特征進(jìn)行分類。
本文基于民機(jī)歷史維修數(shù)據(jù),提出了一種基于BERT-LightGBM 模型的反復(fù)迭代的故障診斷流程,診斷模型建立過程如圖2 所示,分為4 個(gè)步驟。
圖2 民機(jī)維修文本故障診斷模型建立流程Fig.2 Process of establishing fault diagnosis model for civil aircraft maintenance texts
步驟1構(gòu)建故障數(shù)據(jù)庫和故障原因數(shù)據(jù)庫
由于已有的維修記錄缺少故障原因,因此首先需要將民機(jī)原始維修文本根據(jù)專家知識(shí)及人工經(jīng)驗(yàn)人工標(biāo)注故障原因,并將現(xiàn)有的民機(jī)維修記錄整理到故障案例數(shù)據(jù)庫和故障原因數(shù)據(jù)庫中。
步驟2故障文本預(yù)處理
由于民機(jī)維修記錄是由維修和檢查人員手工記錄的,會(huì)存在一定的不規(guī)范。因此在輸入故障診斷模型前,需要將其進(jìn)行處理使模型更好地提取語義特征。
步驟3故障診斷模型的建立
使用現(xiàn)有的維修記錄對(duì)所建的BERTLightGBM 故障診斷模型進(jìn)行訓(xùn)練,在測(cè)試時(shí)對(duì)預(yù)測(cè)結(jié)果錯(cuò)誤的記錄進(jìn)行原因修正,形成正確的故障原因;并對(duì)未標(biāo)明故障原因的維修數(shù)據(jù)做出故障原因的預(yù)測(cè)。
步驟4故障案例數(shù)據(jù)庫和故障原因數(shù)據(jù)庫的更新
將專家修正過的診斷結(jié)果更新到故障案例數(shù)據(jù)庫及故障原因數(shù)據(jù)庫中,使用不斷積累更新的數(shù)據(jù)庫進(jìn)行故障診斷模型的訓(xùn)練,提高故障診斷結(jié)果的準(zhǔn)確率。
在實(shí)際應(yīng)用過程中,將故障數(shù)據(jù)預(yù)處理環(huán)節(jié)與所建立的BERT-LightGBM 故障診斷模型進(jìn)行集成,維修人員僅需把初始的維修記錄輸入到集成模型中,即可得到故障診斷結(jié)果,以輔助維修人員做出正確的維修決策,有效提高模型的工程實(shí)用性。
本文提出的基于BERT-LightGBM 維修文本故障診斷模型主要包括兩部分:首先,建立基于BERT 模型實(shí)現(xiàn)維修文本數(shù)據(jù)的向量表示及其特征提??;其次,將BERT 模型所提取的文本特征及其對(duì)應(yīng)的故障原因同時(shí)輸入到所建立的LightGBM 模型中,以實(shí)現(xiàn)特征的分類。故障診斷模型框架如圖3 所示。
圖3 BERT-LightGBM 模型框架Fig.3 BERT-LightgGBM model framework
由于飛機(jī)維修文本數(shù)據(jù)量較大,傳統(tǒng)的BERT 模型在文本分類中有著較好的實(shí)驗(yàn)結(jié)果,但消耗資源較大、所需時(shí)間較長(zhǎng),在實(shí)際工程應(yīng)用較少。因此本文將BERT 和LightGBM 進(jìn)行融合,在BERT 模型充分提取全文語義特征的同時(shí),利用LightGBM 可以節(jié)省內(nèi)存并加快運(yùn)行速度的優(yōu)點(diǎn),解決傳統(tǒng)BERT 模型在大樣本環(huán)境下非常耗時(shí)的問題,并且在一定程度上提高了故障診斷準(zhǔn)確,增強(qiáng)了傳統(tǒng)BERT 模型在工程應(yīng)用中的實(shí)用性。
由于文本無法直接被模型識(shí)別計(jì)算,因此首先需要將其進(jìn)行向量化表示。對(duì)維修文本進(jìn)行以字為單位的分割,但由于維修文本長(zhǎng)度不等,而BERT 采用固定長(zhǎng)度序列輸入,因此需要首先設(shè)定一個(gè)最大句子長(zhǎng)度的超參數(shù),句子根據(jù)其設(shè)定進(jìn)行長(zhǎng)截短補(bǔ)。同時(shí)為了更好地融合全文語義,將字向量(Token embedding)和句向量(Segment embedding)融合為語義向量,得到向量表示E:
式中:E表示維修文本的融合語義向量;T表示維修文本的字向量;S表示維修文本的句向量。其中,字向量表示每個(gè)字的語義信息,句向量用于區(qū)分不同的句子。加入CLS 向量表示整篇文本的語義,可以用于之后的分類任務(wù);加入SEP 向量句末分割符,用于將2 個(gè)句子分割開。
為了使模型可以捕捉順序序列,無論句子結(jié)構(gòu)如何變化,該模型都會(huì)得到類似的結(jié)果。因此在輸入特征提取模型前引入位置信息的特征即位置向量(Position Embedding),使得不同位置的字向量有差異,并且這種差異蘊(yùn)含某種關(guān)系,可以從一個(gè)位置推斷出另外一個(gè)位置。編碼公式為
式中:PE 是位置編碼結(jié)果;pos 是字在句子中的位置;i是指編碼中每個(gè)值的索引,即下標(biāo),i=1,2,…,n;dmodel是編碼的維度。
最終,BERT 模型的輸入的向量為
在預(yù)訓(xùn)練階段,Transformer 模型對(duì)輸入向量進(jìn)行訓(xùn)練。其中,CLS 放在句子的首位,經(jīng)過Transformer 模型中多頭注意力機(jī)制來獲取句子級(jí)別的信息表示得到的整句的表征向量,可用于后續(xù)的分類任務(wù)。
圖4 為在做分類任務(wù)時(shí)輸入的向量表示示例,當(dāng)輸入“發(fā)現(xiàn)3 號(hào)主輪磨平”,將每個(gè)字分割得到每個(gè)字的字向量、句向量及位置向量,并在句首形成CLS 向量,且由于輸入只有一個(gè)句子,因此只有一個(gè)SEP 句末分隔符。
圖4 輸入的向量表示示例Fig.4 Examples of vector representations of inputs
在民機(jī)維修記錄文本中,包含大量的特定領(lǐng)域詞匯,為了使模型充分捕捉融合上下文的雙向語義、更加關(guān)注于重點(diǎn)詞匯,因此在模型中引入了12 個(gè)雙向Transformer 編碼層,即隱藏層,用以對(duì)文本進(jìn)行特征提取,Transformer 的編碼器也是預(yù)訓(xùn)練模型的核心部分,其編碼層內(nèi)部結(jié)構(gòu)如圖5 所示。
圖5 Transformer 編碼層內(nèi)部結(jié)構(gòu)Fig.5 Internal structure of Transformer encode layer
1)本文采用Multi-head Self-Attention 機(jī)制進(jìn)行特征提?。壕幋a向量分別與多個(gè)隨機(jī)初始化的矩陣(分別設(shè)為,其 中維度相同)相乘計(jì)算出多個(gè)新的矩陣Qi、Ki、Vi由于多頭注意力可以在不同的空間中學(xué)習(xí)到相關(guān)信息,使模型更加關(guān)注重點(diǎn)詞匯,但不同的注意力頭之間捕捉的信息存在冗余,因此頭數(shù)過多不僅會(huì)增加模型參數(shù)量,準(zhǔn)確率可能也有所降低。因此經(jīng)過查找相關(guān)文獻(xiàn),本文將向量X分別輸入到8 個(gè)自注意力機(jī)制中,再把輸出拼接得到最終的注意力向量。
計(jì)算公式為
計(jì)算每個(gè)注意力機(jī)制Attention 矩陣,計(jì)算出其他字對(duì)于該字的一個(gè)分?jǐn)?shù)值Si,即為每個(gè)詞對(duì)于當(dāng)前位置的詞的相關(guān)性大小:
式中:Dk表示向量Ki的維度。
使用softmax 函數(shù)進(jìn)行歸一化,計(jì)算注意力概率:
之后對(duì)注意力概率進(jìn)行隨機(jī)失活:
得到注意力權(quán)重:
把每一個(gè)自注意力機(jī)制的輸出向量串連拼接起來,得到最終的輸出向量R:
2)加和及歸一化層:首先使用殘差網(wǎng)絡(luò)解決梯度消失問題,并對(duì)不同的輸出相加;其次進(jìn)行層歸一化,計(jì)算公式為
式中:LN 為層歸一化后的結(jié)果;m為向量的編碼維度;n表示加和后第n個(gè)位置的字向量;μj=β=(β1,β2,…,βn) 和γ=(γ1,γ2,…,γn) 為 待 定向量。
3)使用全連接層進(jìn)行前饋神經(jīng)網(wǎng)絡(luò)的前向計(jì)算,并接一層加和及歸一化層,其輸出綜合了上下文特征的各個(gè)詞的向量表示,以防止梯度消失;最后使用Gelu 激活函數(shù)進(jìn)行非線性映射。
在模型訓(xùn)練的時(shí)候,執(zhí)行MLM 和NSP 任務(wù)讓模型盡力去理解上下文關(guān)系。預(yù)訓(xùn)練好的BERT 模型中每個(gè)詞都充分融合了上下文信息,CLS 位置包含了句子關(guān)系信息。
在最后一層編碼層之后,經(jīng)池化層和tanh 激勵(lì)函數(shù)做一定的變換,將CLS 標(biāo)記對(duì)應(yīng)的整句向量表示hi取出來,作為整個(gè)序列的表示并返回。模型輸出則是輸入各字對(duì)應(yīng)的融合全文語義信息后的向量表示,降低矩陣的維度,增加了模型的泛化能力。最終輸出特征為
式中:mi為輸入序列X的最終特征;W1和W2是權(quán)重矩陣;hi是池化層的輸入;σ是tanh 激活函數(shù)。
BERT 模型在訓(xùn)練過程中會(huì)產(chǎn)生O(L×H)個(gè)參數(shù),其中L表示詞表矩陣維度;H表示隱藏層參數(shù)矩陣維度;當(dāng)數(shù)據(jù)量較大時(shí),模型參數(shù)量多,占用內(nèi)存較大,訓(xùn)練速度緩慢。為了加快訓(xùn)練速度,在減少參數(shù)量做了如下操作[26]:
1)嵌入層參數(shù)因式分解。不將獨(dú)熱編碼向量直接映射到隱藏層,而是將一個(gè)高維詞嵌入矩陣分解成2 個(gè)低維詞嵌入矩陣,即產(chǎn)生的參數(shù)個(gè)數(shù)為O(L×E+E×H),其中E表示嵌入矩陣,當(dāng)E遠(yuǎn)小于H時(shí)參數(shù)量減小的很明顯。
2)在不同層的Transformer 編碼器之間共享多頭自注意力機(jī)制以及前饋神經(jīng)網(wǎng)絡(luò)中部分參數(shù)。
在下游微調(diào)任務(wù)中,針對(duì)本文提出的民機(jī)維修文本的故障原因分析問題,是一個(gè)多分類的問題。將預(yù)訓(xùn)練學(xué)習(xí)到的語法語義知識(shí)遷移到下游任務(wù),利用訓(xùn)練得到網(wǎng)絡(luò)參數(shù),初始化網(wǎng)絡(luò)并對(duì)其進(jìn)行微調(diào),將分類操作轉(zhuǎn)移到預(yù)訓(xùn)練字向量中,并在BERT 模型的輸出端接上分類器,以實(shí)現(xiàn)故障原因的分類。
本文使用LightGBM 模型實(shí)現(xiàn)語義特征的分類,它是基于梯度提升決策樹的優(yōu)化算法。將BERT 模型提取的維修文本特征以及故障原因標(biāo)簽作為該模型的輸入。在訓(xùn)練過程中根據(jù)梯度差異計(jì)算不同葉子節(jié)點(diǎn)不同的權(quán)重,以對(duì)應(yīng)于類別的得分,輸出得分最高的類別。相較于softmax 分類器,LightGBM 模型可以實(shí)現(xiàn)并行學(xué)習(xí)并且更加充分地學(xué)習(xí)數(shù)據(jù)與標(biāo)簽之間的真實(shí)聯(lián)系,利用數(shù)據(jù)特征擬合,以達(dá)到更加高效的分類效果。
LightGBM 算法輸入的訓(xùn)練數(shù)據(jù)集為{(m1,y1),(m2,y2),…,(mn,yn)},其 中mi(i=1,2,…,n)是提取的維修本文的特征向量,yi是對(duì)應(yīng)的故障原因。在模型訓(xùn)練添加決策樹時(shí)第t步的損失表示形式如式(16),每輪迭代的目標(biāo)為找到一個(gè)弱學(xué)習(xí)器ht(m),使得本輪損失函數(shù)L(y,ft(m))最小。
式中:ft-1(m)為上一輪強(qiáng)學(xué)習(xí)器學(xué)習(xí)的結(jié)果。
計(jì)算第t輪第i個(gè)樣本的損失函數(shù)的負(fù)梯度:
每次訓(xùn)練迭代學(xué)習(xí)rti來擬合殘差。
利用mi和rti進(jìn)行決策樹最優(yōu)節(jié)點(diǎn)分裂擬合第k棵回歸樹。對(duì)于所有葉子節(jié)點(diǎn)中的數(shù)據(jù)樣本,計(jì)算出使得損失函數(shù)最小的輸出值cti:
從而得到ht(m):
式中:Rtj(j=1,2,…,J)表示第t棵回歸樹的J個(gè)葉子節(jié)點(diǎn)的區(qū)間;I為示性函數(shù)。
則強(qiáng)學(xué)習(xí)器表示為
由于決策樹在計(jì)算分割節(jié)點(diǎn)的信息增益時(shí)會(huì)對(duì)每個(gè)特征遍歷所有數(shù)據(jù)點(diǎn),為了快速找到一個(gè)最優(yōu)特征分割點(diǎn)作為葉子節(jié)點(diǎn),使得在分割之后整棵樹的增益值最大,在上述步驟中融合了GOSS 和EFB2 種 方 法。
1)GOSS 使用梯度作為樣本權(quán)重,本文在采樣時(shí)重點(diǎn)關(guān)注梯度較大的特征,對(duì)于梯度小的特征進(jìn)行進(jìn)一步學(xué)習(xí)。之后遍歷樣本并計(jì)算信息增益,信息增益越大,樣本梯度就越大,即特征重要度就越高。在節(jié)點(diǎn)d上特征j的信息增益計(jì)算公式為[27]
式中:n為使用樣本總數(shù);gi為損失;Hl、Hr、Bl和Br為集合H和B劃分在節(jié)點(diǎn)d左邊(下標(biāo)l)、右邊(下 標(biāo)r)的 特 征 集 合,njl和njr分 別 為Hl∪Bl和Hr∪Br的集合個(gè)數(shù);按梯度對(duì)特征進(jìn)行排序,選取前a%個(gè)特征形成集合H,從剩下的小梯度特征中選取b%個(gè)特征形成集合為小梯度特征的采樣權(quán)重。
2)EFB 使用直方圖算法將特征空間中相互獨(dú)立的特征進(jìn)行合并來減少特征的數(shù)量,當(dāng)特征以獨(dú)熱編碼的形式表示時(shí),特征之間是不完全互斥的,因此設(shè)置沖突比對(duì)不互斥程度進(jìn)行衡量,當(dāng)沖突比較小時(shí)進(jìn)行特征合并,此時(shí)合并特征不會(huì)丟失信息,并且形成了低維特征空間[28]。從而既降低內(nèi)存占用以及時(shí)間復(fù)雜度,并且防止了過擬合的問題。
本文所采用的數(shù)據(jù)集來自某航空公司某型號(hào)飛機(jī)的歷史維修記錄,該數(shù)據(jù)集包含了33 562條維修記錄,其中22 000 條作為訓(xùn)練集,4 781 條作為驗(yàn)證集,4 781 條作為測(cè)試集。實(shí)驗(yàn)環(huán)境為:操作系統(tǒng)Windows10、處理器Intel(R) Xeon(R) Gold 6226R CPU @2.90GHz、Python3.6、Tensorflow1.14。由于原始訓(xùn)練數(shù)據(jù)集缺少故障原因,因此首先需要根據(jù)經(jīng)驗(yàn)對(duì)其故障原因進(jìn)行診斷標(biāo)注。故障原因及其數(shù)量如圖6 所示,將故障原因分為111 類。維修記錄中主要包括機(jī)型、機(jī)號(hào)、發(fā)生日期、ATA 章節(jié)、故障描述、故障處理及故障原因等信息,其中機(jī)型、機(jī)號(hào)、發(fā)生日期等信息與故障原因的診斷相關(guān)性不大,因此為了降低數(shù)據(jù)的維度本文把這幾列刪除。表2 為標(biāo)注故障原因后的某航空公司飛機(jī)部分維修記錄。表中故障原因則為本文分析預(yù)測(cè)的目標(biāo),它主要通過使用本文所用方法對(duì)故障描述及故障處理兩列進(jìn)行分析獲得。
表2 標(biāo)注后的某航空公司飛機(jī)維修記錄(部分)Table 2 Aircraft maintenance records of an airline after marking (part)
圖6 故障原因及數(shù)量Fig.6 Causes and numbers of faults
由于維修文本的表述與故障映射存在一定關(guān)系,對(duì)故障位置及原因表述明確的維修文本數(shù)據(jù),可直接使用文本中的關(guān)鍵字和詞與故障案例數(shù)據(jù)庫進(jìn)行比對(duì)匹配從而實(shí)現(xiàn)故障判定和維修決策的生成,使故障原因判別更為直接。如:“3#主輪見線,更換主輪后測(cè)試正?!保赏ㄟ^數(shù)據(jù)庫匹配直接診斷為:“機(jī)輪磨損、見線”,以減少資源的占用。
針對(duì)存在歧義及表述具有不確定性的維修文本,如:“空中巡航時(shí)垂直導(dǎo)航指引消失,自動(dòng)駕駛B 脫開.幾十分鐘后,PFD 上速度帶出現(xiàn)黃色SPD LIMIT 標(biāo)志.”,可根據(jù)前文總結(jié)的民機(jī)維修文本的特點(diǎn)首先文本進(jìn)行預(yù)處理操作,將其整理為規(guī)范文本,用其進(jìn)行模型的訓(xùn)練及測(cè)試,以提升模型對(duì)有用信息的關(guān)注能力,主要進(jìn)行的處理如下:
1)文本整合
在進(jìn)行飛機(jī)維修文本故障原因分析時(shí),主要使用維修記錄中故障描述及故障處理兩列,因此本文將這兩列數(shù)據(jù)合并成一列,以便進(jìn)行后續(xù)整體分析。
2)文本隨機(jī)化
在構(gòu)建維修文本數(shù)據(jù)集時(shí),如果按類別進(jìn)行數(shù)據(jù)的存儲(chǔ),在模型訓(xùn)練在過程中的一段時(shí)間內(nèi)會(huì)只關(guān)注某一類別的數(shù)據(jù),可能會(huì)造成模型過擬合,泛化能力很差,因此本文將維修文本亂序輸入。
3)文本清洗
由于民機(jī)維修文本是由維修檢查人員人工進(jìn)行記錄,常常會(huì)存在記錄不規(guī)范的問題。為了使模型更加關(guān)注于字詞本身和語句,因此對(duì)文本進(jìn)行清洗操作。主要包括去除文本中特殊的符號(hào),如:“()”“!”“…”等符號(hào),去除多余的空格及中英文符號(hào)統(tǒng)一等步驟。
4)停用詞過濾
在人工描述的維修文本中通常會(huì)存在“的”“并且”“和”等出現(xiàn)頻率高但是卻無實(shí)際含義的詞,去除這些詞可以在一定程度上降低文本的特征維度。預(yù)處理后的結(jié)果如表3 所示。
表3 部分飛機(jī)維修文本預(yù)處理結(jié)果Table 3 Partial results of aircraft maintenance text preprocessing results
將測(cè)試集數(shù)據(jù)輸入到用訓(xùn)練集訓(xùn)練好的預(yù)訓(xùn)練模型中,得到最終分類結(jié)果如表4 所示,其中故障原因這一列為診斷模型輸出結(jié)果。為了驗(yàn)證提出的不斷修正的故障診斷流程可以提高故障診斷結(jié)果的準(zhǔn)確率,逐漸遞增歷史維修記錄并將其輸入到 BERT-LightGBM 模型中,采用準(zhǔn)確率(Accuracy)、精確度(Precision)、召回率(Recall)及 F1 值作為評(píng)價(jià)指標(biāo),觀察模型輸出評(píng)價(jià)指標(biāo)的變化情況,最終實(shí)驗(yàn)情況如圖7 所示。
表4 故障診斷結(jié)果Table 4 Fault diagnosis results
由圖7 中的數(shù)據(jù)可以明顯觀察到,當(dāng)故障樣本較少時(shí),可能會(huì)使模型欠擬合模型準(zhǔn)確率很低;隨著故障樣本迭代式地增多,準(zhǔn)確率不斷增長(zhǎng),直至維修文本數(shù)據(jù)量達(dá)到20 000 時(shí),準(zhǔn)確率達(dá)到最大值98.93%,精確度、召回率和 F1 值也達(dá)到了較高的值,分別達(dá)到了99.98%、99.98%、99.98%。由此可以說明,所建立的故障診斷模型的準(zhǔn)確率隨著維修記錄數(shù)據(jù)庫中故障樣本的增加而提高,但當(dāng)維修文本達(dá)到一定數(shù)量時(shí),若繼續(xù)增加樣本數(shù)量準(zhǔn)確率基本保持不變,并且還可能會(huì)造成計(jì)算資源的浪費(fèi),因此本文選用數(shù)據(jù)量為20 000 的維修文本數(shù)據(jù)進(jìn)行后續(xù)研究。
圖7 迭代訓(xùn)練結(jié)果Fig.7 Iterative training results
基于BERT-LightGBM 的故障診斷模型在訓(xùn)練時(shí),選擇的批處理大?。˙atch Size)即一次訓(xùn)練所選取的樣本數(shù)和遍歷次數(shù)(Epoch)都會(huì)影響故障診斷的準(zhǔn)確率。因此不斷調(diào)整這2 個(gè)參數(shù)以實(shí)現(xiàn)最優(yōu)的準(zhǔn)確率,實(shí)驗(yàn)結(jié)果如圖8所示。
由圖8 可知,在Batch Size 相同時(shí),準(zhǔn)確率隨著遍歷次數(shù)的增大而增大;由于在遍歷次數(shù)相同時(shí),Batch Size=16 時(shí)準(zhǔn)確率最大。當(dāng)Batch Size=8時(shí),由于模型欠擬合導(dǎo)致模型的準(zhǔn)確率無法隨著遍歷次數(shù)的增大而持續(xù)升高;當(dāng)Batch Size=32時(shí),由于一次訓(xùn)練所選取的樣本數(shù)過大,可能會(huì)導(dǎo)致模型過擬合,使其在局部形成最優(yōu)值,因此無法得到最優(yōu)的準(zhǔn)確率。因此本文選擇Epoch=5,Batch Size=16 進(jìn)行后續(xù)研究。
圖8 不同Epoch 和Batch Size 的準(zhǔn)確率Fig.8 Accuracy of different Epochs and Batch Sizes
為了研究本文所提出的基于BERTLightGBM 方法在民機(jī)維修文本故障原因分析的有效性和優(yōu)越性,選擇了文本分類常用模型TextCNN、LSTM 以及BiLSTM 作為對(duì)照實(shí)驗(yàn)?;贐ERT-LightGBM 模型的訓(xùn)練參數(shù)如表5所示。BERT-LightGBM 模型訓(xùn)練損失如圖9 所示。由圖9 可知,BERT-LightGBM 模型在迭代超過4 500 輪后,訓(xùn)練集上的損失波動(dòng)幅度變小,逐漸趨于穩(wěn)定,訓(xùn)練集的準(zhǔn)確率基本保持不變,說明模型訓(xùn)練擬合效果已達(dá)最優(yōu)。
圖9 BERT-LightGBM 模型訓(xùn)練損失Fig.9 BERT-LightGBM model training loss
表5 BERT-LightGBM 模型訓(xùn)練參數(shù)Table 5 BERT-LightGBM model training parameters
幾種文本分類模型的對(duì)比實(shí)驗(yàn)結(jié)果如表6 所示。BERT-LightGBM 模型(隱藏層維度為768)最后在測(cè)試集上進(jìn)行10 次測(cè)試實(shí)驗(yàn),取其平均值作為模型在測(cè)試集上的平均準(zhǔn)確率,約為 98.03%,相較于本文的所采用的對(duì)比模型TextCNN 準(zhǔn)確率提高了38.99%,比LSTM 模型(隱藏層維度為768)準(zhǔn)確率提高了22.98%,比BiLSTM 模型(隱藏層維度為768)準(zhǔn)確率提高了18.16%,比BERT 模型(隱藏層維度為768)準(zhǔn)確率提高了0.91%;并且原BERT 模型在表5 的參數(shù)設(shè)置下訓(xùn)練20 000 數(shù)據(jù)集需要12 h,而BERT-LightGBM 模型訓(xùn)練只需要9.8 h,說明BERT-LightGBM 模型對(duì)于提高飛機(jī)維修文本故障診斷的效果更好,并且訓(xùn)練速度有了很大的提升,因此本文所建立的BERT-LightGBM 模型能夠在一定程度上提高對(duì)飛機(jī)維修文本故障診斷的效率。
從 表6 可 知,BERT-LightGBM 模 型 與TextCNN、LSTM 和BiLSTM 相比,平均準(zhǔn)確率相差較大,這是因?yàn)門extCNN 利用局部卷積的思想只能捕獲相鄰詞之間的語義關(guān)系,缺乏對(duì)全局信息的捕獲能力;LSTM 模型只可以融合單向的上下文信息得到特征信息并且會(huì)存在記憶退化;BiLSTM 模型在雙向提取語義特征時(shí),能關(guān)注一部分句子的前后信息,然而這些信息是遞歸而來的,可能會(huì)丟失某個(gè)位置的局部信息,只是在一定程度上解決了長(zhǎng)程依賴問題。而本文所建立的BERT-LightGBM 模型可以結(jié)合上下文進(jìn)行區(qū)分同一詞語在不同語句中的不同語義,直接捕捉上下文信息,使模型充分融合全文的雙向語義、更加關(guān)注于重點(diǎn)詞匯,擁有強(qiáng)大的語義表征能力,因此在飛機(jī)維修文本故障原因分析中的表現(xiàn)更優(yōu)。
表6 不同模型的對(duì)比實(shí)驗(yàn)結(jié)果Table 6 Comparison of experimental results of different models
在大數(shù)據(jù)背景下,針對(duì)目前飛機(jī)維修文本中蘊(yùn)含的豐富的信息但無法充分被利用的問題,本文以真實(shí)的民機(jī)維修文本數(shù)據(jù)為例,提出了一種不斷修正迭代的故障診斷方法,建立了基于飛機(jī)維修文本數(shù)據(jù)的BERT-LightGBM 故障診斷模型。在建立故障診斷模型時(shí),針對(duì)飛機(jī)維修文本的數(shù)據(jù)特點(diǎn),提出了以字和整句為單位的理解方式,為了更好地融合理解維修文本的全文語義,在模型中引入了多頭注意力機(jī)制,并且針對(duì)當(dāng)數(shù)據(jù)量較大時(shí)診斷速度慢的問題,采用參數(shù)因式分解及共享的方法減小參數(shù)量。實(shí)驗(yàn)結(jié)果表明:①將不斷遞增的維修文本數(shù)據(jù)輸入到BERTLightGBM 診斷模型并修正,可以提高所提出故障診斷方法的準(zhǔn)確率;②將本文所建立的BERT-LightGBM 模 型 與 原 BERT 模 型、TextCNN 模 型、LSTM 模 型 和BiLSTM 模 型 在相同數(shù)據(jù)集上進(jìn)行準(zhǔn)確率對(duì)比,可以看出本文所建立的模型在維修文本數(shù)據(jù)集上有很好的表現(xiàn);③將改進(jìn)的BERT-LightGBM 模型與原BERT模型的診斷速度相比,所提出的故障診斷模型可以在一定程度上提高診斷速度。因此本文所提出的方法可以實(shí)現(xiàn)飛機(jī)維修文本故障原因的智能診斷,輔助維修人員定位故障,便于更快做出正確的維修決策。