宋鵬飛,陳永剛,王海涌
(1.蘭州交通大學(xué) 自動化與電氣工程學(xué)院,蘭州 730070;2.蘭州交通大學(xué) 電子與信息工程學(xué)院,蘭州 730070)
列車運行控制系統(tǒng)(簡稱列控系統(tǒng))是保證列車安全運行的重要設(shè)備,而車載設(shè)備更是列控系統(tǒng)的核心。車載設(shè)備的日志數(shù)據(jù)記錄了車載設(shè)備各個模塊的工作狀況,技術(shù)人員可以通過日志來對車載設(shè)備進(jìn)行故障診斷,但由于不同廠家對車載設(shè)備的運行記錄不完全相同,且發(fā)生故障的原因是多方面的,所以這種嚴(yán)重依賴經(jīng)驗知識的故障診斷方法難度大、處理效率低。因此,進(jìn)一步研究車載設(shè)備的診斷算法,實現(xiàn)車載設(shè)備故障的智能診斷,對保證列控系統(tǒng)可靠工作、列車安全運行具有重大意義。
文獻(xiàn)[1]建立故障特征詞庫,采用改進(jìn)的潛在狄利克雷發(fā)布模型(latent Dirichlet allocation,LDA)主題模型提取車載數(shù)據(jù)特征,通過粒子群優(yōu)化算法優(yōu)化的支持向量機(jī)方法實現(xiàn)故障信息的分類;文獻(xiàn)[2]通過空間向量模型(vector space model,VSM)將車載日志數(shù)據(jù)轉(zhuǎn)化為向量空間中的向量,利用主分量啟發(fā)式算法進(jìn)行特征選擇,通過遺傳算法優(yōu)化的反饋傳播(back propagation,BP)神經(jīng)網(wǎng)絡(luò)實現(xiàn)故障診斷;文獻(xiàn)[3]首先利用粗糙集理論對應(yīng)答器信息接收單元(balise transmission module,BTM)故障數(shù)據(jù)進(jìn)行處理,實現(xiàn)故障的特征提取,再通過改進(jìn)的布谷鳥算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的,最后利用優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)實現(xiàn)故障診斷分類;文獻(xiàn)[4]首先利用詞向量模型(word to vecor, word2vec)對故障文本進(jìn)行詞向量轉(zhuǎn)化,再通過卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)實現(xiàn)車載日志特征提取,采用結(jié)合代價敏感學(xué)習(xí)的隨機(jī)森林算法對故障進(jìn)行分類;文獻(xiàn)[5]采用貝葉斯正則化算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò),利用長短時記憶網(wǎng)絡(luò)學(xué)習(xí)故障特征信息,建立長短時記憶網(wǎng)絡(luò)(long short-team memory,LSTM)和優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的級聯(lián)模型,實現(xiàn)車載設(shè)備的故障診斷。
自適應(yīng)增強(qiáng)算法(adaptive boosting,Adaboost)作為一種自適應(yīng)迭代算法,在機(jī)器學(xué)習(xí)上有廣泛的應(yīng)用。通過與神經(jīng)網(wǎng)絡(luò)相結(jié)合,常用于處理分類任務(wù),其本質(zhì)為將所有基分類器按照設(shè)定的方法組合成為強(qiáng)分類器,能顯著改善弱分類器的分類性能。文獻(xiàn)[6-7]將Adaboost算法與卷積神經(jīng)網(wǎng)絡(luò)結(jié)合,用于圖像識別領(lǐng)域;文獻(xiàn)[8]利用Adaboost改進(jìn)CNN實現(xiàn)金屬電鍍領(lǐng)域的故障診斷;文獻(xiàn)[9]將代價敏感算法與卷積神經(jīng)網(wǎng)絡(luò)結(jié)合形成代價敏感卷積神經(jīng)網(wǎng)絡(luò)(cost sentsitive convolutional neural networks,CSCNN),再將CSCNN與集成學(xué)習(xí)結(jié)合,提出了一種基于Adaboost-CSCNN的分類算法;文獻(xiàn)[10]將CNN的特征提取能力與Adaboost的集成學(xué)習(xí)能力結(jié)合起來,提出了Adaboost-CNN模型,克服了訓(xùn)練CNN需要大量樣本來調(diào)整參數(shù)的問題;文獻(xiàn)[11]采用AlexNet模型作為基分類器,通過Adaboost算法更新迭代樣本數(shù)據(jù)以及卷積神經(jīng)網(wǎng)絡(luò)的權(quán)重,形成AlexNet-Adaboost強(qiáng)分類器用作軸承故障診斷。
本文采用word2vec將車載設(shè)備運行日志轉(zhuǎn)化為對應(yīng)的詞向量,用CNN卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)對故障文本數(shù)據(jù)的特征提取,將CNN作為基分類器,通過Adaboost算法迭代更新樣本及CNN的權(quán)重生成強(qiáng)分類器,利用強(qiáng)分類器實現(xiàn)故障信息的分類。
CTCS-3級列控車載設(shè)備采用分布式結(jié)構(gòu),包括應(yīng)答器接收單元(balise transmission module,BTM)、列車接口單元(train interface unit,TIU)[12]等,其總體結(jié)構(gòu)圖如圖1所示。
圖1 CTCS-300T型列控車載設(shè)備組成Fig.1 Composition of CTCS-300T train control vehicle equipment
對300T型列控車載設(shè)備進(jìn)行故障診斷的數(shù)據(jù)來源為應(yīng)用事件日志(application event log, AElog),是一種半結(jié)構(gòu)化文本,記錄了車載設(shè)備某一時刻的運行信息,每個模塊正常或故障的狀態(tài)語句包含在內(nèi),由包含時間信息的英文短句來進(jìn)行描述。共有4個模塊保存車載日志,分別為ATPCU、C2CU、SDP和TSG4。本文的研究數(shù)據(jù)來源于ATPCU模塊,根據(jù)故障案例庫以及現(xiàn)場經(jīng)驗知識[13],對每種出現(xiàn)的故障語句進(jìn)行分類,可將車載設(shè)備故障數(shù)據(jù)分為20類,如表1所示。
表11 車載設(shè)備故障類型及運行狀態(tài)語句Tab.1 On-board equipment failure types and operating status statements
模型處理流程如圖2所示,車載日志AElog文件經(jīng)過數(shù)據(jù)處理轉(zhuǎn)換為計算機(jī)可以識別的向量形式,再利用CNN對特征向量進(jìn)行提取,通過Adaboost算法對樣本及CNN迭代更新權(quán)重生成強(qiáng)分類器,最后利用強(qiáng)分類器在相應(yīng)的數(shù)據(jù)集上實現(xiàn)故障診斷。
原始車載設(shè)備應(yīng)用事件日志是一種半結(jié)構(gòu)化英文文本,需要將其轉(zhuǎn)化為向量形式,神經(jīng)網(wǎng)絡(luò)才能對其進(jìn)行特征提取。Word2vec是Mikolov等[14]提出的自然語言模型,其特點是能將文本快速轉(zhuǎn)化為詞向量,其維度與獨熱編碼(one-hot)相比明顯降低,且計算復(fù)雜度明顯減少。本文采用word2vec中的跳躍文法(skip-gram)模型。
數(shù)據(jù)處理具體步驟如下。
1)文本預(yù)處理。以某局某段的車載日志為原始數(shù)據(jù),提取運行狀態(tài)等關(guān)鍵信息,去掉停用詞和符號,建立故障信息語料庫。去掉停用詞和符號一方面可以提升分類器的分類能力,另一方面可以過濾掉無關(guān)的特征詞,使結(jié)果更加精準(zhǔn)。
圖2 模型處理流程Fig.2 Model processing flow
2)詞向量獲得。該過程為用自然語言模型訓(xùn)練生成計算機(jī)可以識別的詞向量形式。主要訓(xùn)練過程:模型掃描語料庫,統(tǒng)計每個詞出現(xiàn)的次數(shù),根據(jù)每個詞出現(xiàn)的次數(shù)建立哈夫曼樹,模型依次讀取每條語句中的詞,利用梯度下降法算出梯度,更新詞向量和非葉子節(jié)點處向量的詞,當(dāng)遍歷完整個語料庫時,訓(xùn)練終止,得到詞向量結(jié)果。
簡化目標(biāo)函數(shù)為
(1)
(1)式中:C表示語料庫;p為概率函數(shù);Context(ω)表示上下文的集合。
CNN基本結(jié)構(gòu)為輸入層、卷積層、池化層、全連接層和輸出層,作為整個神經(jīng)網(wǎng)絡(luò)的核心結(jié)構(gòu),卷積層和池化層可以交替多次使用[15]。本文所用卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Convolutional neural network architecture
輸入層是一個向量矩陣,由詞向量模型生成。為使向量長度一致,對原運行狀態(tài)語句轉(zhuǎn)化為向量時進(jìn)行補(bǔ)零操作,即長度不足的用0補(bǔ)齊。
卷積層對輸入層的詞向量矩陣進(jìn)行卷積操作,每進(jìn)行一次卷積操作相當(dāng)于提取一次相應(yīng)的特征向量。卷積操作過程為
(2)
池化層作用為降低特征數(shù)量,縮減模型大小[16]。其數(shù)學(xué)模型為
(3)
一個CNN可以有多層全連接層,將特征向量作為全連接層的輸入,連接所有的特征后輸出給softmax函數(shù),函數(shù)softmax將網(wǎng)絡(luò)的輸出轉(zhuǎn)化為輸出類別的概率,表示為
(4)
(4)式中:z是輸出向量;α0是最后一個全連接層的權(quán)重系數(shù);b0為輸出層的偏差值。
CNN本身作為特征提取器,可以將word2vec生成的詞向量矩陣進(jìn)行特征提取,然后通過激活函數(shù)輸出結(jié)果。具體流程為將由故障狀態(tài)語句轉(zhuǎn)化而來的詞向量矩陣作為CNN的輸入,通過定義卷積核大小及數(shù)量進(jìn)行卷積與池化操作來提取特征向量,經(jīng)過全連接層連接全部的特征后,通過softmax函數(shù)輸出每一類故障的診斷結(jié)果。與常見的圖像處理的區(qū)別在于,在處理圖片時,卷積核依次提取圖片的每一個像素點的特征,而在處理車載設(shè)備故障語句時,卷積核依次提取詞向量矩陣的每一個元素的特征向量。
Adaboost是一種迭代算法,本質(zhì)是通過迭代更新權(quán)重將一定數(shù)量的弱分類器集合形成強(qiáng)分類器,通過深挖弱分類器的性能從而減少誤差率[17]。雖然CNN可做到分類效果,但由于車載設(shè)備故障數(shù)據(jù)存在不平衡性,即正常數(shù)據(jù)在全部數(shù)據(jù)中占據(jù)大多數(shù),故障數(shù)據(jù)只占據(jù)少數(shù),且不同故障數(shù)據(jù)類型包含的樣本數(shù)目也存在不均衡,因此,只依靠CNN進(jìn)行分類會造成對出現(xiàn)次數(shù)較少的故障類型及數(shù)據(jù)識別率低的問題。Adaboost算法的主要思想是更新訓(xùn)練樣本權(quán)重和基分類器權(quán)重,更新樣本權(quán)重會使模型的下一次訓(xùn)練集中在分類錯誤的樣本上。基分類器權(quán)重的更新依賴于分類器在數(shù)據(jù)上的分類誤差率,使分類性能較差的分類器所占權(quán)重較小,對最終分類結(jié)果的影響較小。通過對樣本及基分類器權(quán)重的更新,能在很大程度上解決由于數(shù)據(jù)不平衡造成的漏分與錯分問題。
將CNN作為基分類器,Adaboost訓(xùn)練基分類器具體步驟如下。
步驟1權(quán)重初始化,對每一個樣本賦予相同的權(quán)重,表示為
(5)
步驟2計算分類誤差率
(6)
(6)式中:em為分類誤差率;ci為第i個樣本的類別;Tm(xi)為訓(xùn)練i次的神經(jīng)網(wǎng)絡(luò)模型。
步驟3計算權(quán)重系數(shù)
(7)
步驟4更新權(quán)重
wm+1,i=wm,i·exp(αmciTm(xi))
(8)
步驟5構(gòu)建強(qiáng)分類器。各弱分類器迭代訓(xùn)練好后組合為強(qiáng)分類器,表示為
(9)
(9)式中:M為訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)的數(shù)量。
Adaboost對由車載設(shè)備故障狀態(tài)語句轉(zhuǎn)化生成的詞向量矩陣中的每一行元素賦予相同的權(quán)重,將帶有權(quán)重的向量矩陣作為CNN的輸入,通過計算每一個CNN的分類誤差率及權(quán)重系數(shù)來更新詞向量矩陣的權(quán)重,在保留前一個CNN權(quán)重的前提下用更新權(quán)重后的詞向量矩陣作為下一個CNN的輸入,以此類推,依次更新不同CNN的權(quán)重,將各CNN作為基分類器按設(shè)定方式組合為強(qiáng)分類器,將詞向量矩陣作為強(qiáng)分類器的輸入來進(jìn)行車載設(shè)備的故障診斷。
本研究的具體步驟如下。
步驟1獲取大量的車載故障數(shù)據(jù),對其進(jìn)行數(shù)據(jù)清洗及分類,按20種故障類型和正常類型處理構(gòu)建故障語料庫;
步驟2將故障語料庫中的數(shù)據(jù)樣本按故障類別比例分為訓(xùn)練集、驗證集和測試集;
步驟3通過skip-gram模型將樣本轉(zhuǎn)化為向量;
步驟4將產(chǎn)生的向量矩陣作為CNN的輸入;
步驟6采用初始化的向量矩陣來訓(xùn)練第1個CNN;
步驟7計算基分類器在向量矩陣上的em和αm;
步驟8更新當(dāng)前基分類器的權(quán)重與向量矩陣的權(quán)重;
步驟9保存當(dāng)前基分類器,使用更新權(quán)重后的向量矩陣訓(xùn)練下一個基分類器,對于后續(xù)的基分類器,均采用之前迭代訓(xùn)練中CNN的學(xué)習(xí)參數(shù);
步驟10對新的基分類器重復(fù)步驟7—9,直至達(dá)到目標(biāo)要求;
步驟11將訓(xùn)練完成的基分類器按設(shè)定組合為新的強(qiáng)分類器;
步驟12采用強(qiáng)分類器對故障進(jìn)行分類。
實驗采用python3.6解釋器,通過使用TensorFlow框架,gensim、Keras等庫實現(xiàn) word2vec、CNN以及Adaboost,硬件配置為i5 11400H、RTX3050。
本實驗數(shù)據(jù)集采用某鐵路局電務(wù)段的車載設(shè)備故障數(shù)據(jù),通過數(shù)據(jù)預(yù)處理,產(chǎn)生6 180個數(shù)據(jù)樣本,其中,5 275組正常樣本和905組故障樣本,故障樣本分為F1—F20,其分布如圖4所示。
905組故障樣本按故障類別比例分為60%的訓(xùn)練集、20%的驗證集和20%的測試集。
本文模型的參數(shù)設(shè)置情況如表2和表3所示。
表2 word2vec模型參數(shù)設(shè)置Tab.2 Parameter settings of word2vec model
表3 CNN-Adaboost模型參數(shù)設(shè)置Tab.3 Parameter settings of CNN-Adaboost model
車載設(shè)備故障診斷本質(zhì)上是一個多分類問題,而且原始數(shù)據(jù)存在不平衡性,所以二分類指標(biāo),例如準(zhǔn)確率等,要么無法正確地評價模型的性能,要么計算較為復(fù)雜。本文選擇kappa系數(shù)作為模型性能的評價指標(biāo),kappa系數(shù)多用于多分類問題,其計算基于混淆矩陣[18],取值為[-1,1],通常為[0,1]。kappa的計算式為
(10)
(10)式中:p0為每一類正確分類的樣本數(shù)量占總樣本數(shù)的比例,即總體分類精度;pe表示為
(11)
可將kappa系數(shù)取值分為5組來表示不同級別的一致性,如表4所示。
表4 kappa系數(shù)對應(yīng)的一致性級別Tab.4 Coefficient of kappa corresponds to the consistency level
實驗采用第2節(jié)中的CNN模型作為基分類器,通過adaboost算法對訓(xùn)練數(shù)據(jù)及基分類器做迭代訓(xùn)并保存相應(yīng)的基分類器,當(dāng)達(dá)到滿足要求的基分類器數(shù)目時訓(xùn)練終止,然后將保存的各分類器按(8)式結(jié)合成強(qiáng)分類器。
模型訓(xùn)練分為2部分:①第一部分目的是確定單個基分類器在何時擁有最優(yōu)的性能。CNN迭代次數(shù)如圖5所示,由圖5可以看出,當(dāng)訓(xùn)練到120步后模型性能趨于穩(wěn)定,對訓(xùn)練集和測試集都有良好的分類能力,所以設(shè)定每個CNN迭代120次完成訓(xùn)練;②第二部分目的是確定最優(yōu)基分類器數(shù)目?;诸惼鲾?shù)目如圖6所示,由圖6可以看出,當(dāng)基分類器數(shù)目為1時,kappa系數(shù)最低,即分類性能最低。隨著迭代次數(shù)及基分類器的增加,模型的kappa系數(shù)也隨之上升。當(dāng)?shù)螖?shù)為4次時,模型已經(jīng)具有較好的診斷性能,且后續(xù)的kappa值曲線趨于平穩(wěn)。當(dāng)基分類器個數(shù)為7時,模型具有最好的性能,因為基分類器在數(shù)據(jù)上產(chǎn)生過擬合,所以當(dāng)基分類器數(shù)目大于7時,模型的分類能力有一定下降。因此,采用7個基分類器,即迭代訓(xùn)練的CNN模型數(shù)量為7。
為了證明本文提出的模型對車載設(shè)備故障診斷的有效性,分別用CNN、BP神經(jīng)網(wǎng)絡(luò)、SVM和本文提出的CNN-Adaboost模型在相同的訓(xùn)練集和測試集上實驗分析,其收斂步數(shù)及時間如表5所示,CNN完成實驗所需的收斂步數(shù)和時間是最低的。而CNN-Adaboost采用了7個CNN作為基分類器,所以其收斂步數(shù)為單個CNN的7倍,但由于后續(xù)的基分類器均采用前一個基分類器的參數(shù),并且分類錯誤的數(shù)據(jù)的權(quán)重越來越高,因此,CNN-Adaboost能夠快速收斂,完成整個實驗所用時間較少。
圖5 CNN迭代次數(shù)Fig.5 Nnumber of CNN iterations
圖6 基分類器數(shù)目Fig.6 Number of base classifiers
表5 不同模型收斂步數(shù)及時間比較
各模型實驗得到的混淆矩陣如圖7—圖10所示,可以看出,由于Adaboost算法深挖分類器性能的能力,CNN-Adaboost模型的性能是最好的,對出現(xiàn)次數(shù)較少的類別也具有良好的分類能力。CNN、SVM、BP神經(jīng)網(wǎng)絡(luò)對不平衡數(shù)據(jù)較敏感,對一些樣本數(shù)較少的故障類別識別能力欠佳,相較于本文設(shè)計的CNN模型,CNN-Adaboost模型的kappa系數(shù)提升了0.084,對不平衡數(shù)據(jù)的分類效果有一定的提升。不同模型的診斷性能如表6所示,本文提出的CNN-Adaboost模型的kappa系數(shù)高于其他模型,證明該研究的有效。
圖7 卷積神經(jīng)網(wǎng)絡(luò)混淆矩陣Fig.7 Convolutional neural network confusion matrix
圖8 BP神經(jīng)網(wǎng)絡(luò)混淆矩陣Fig.8 BP neural network confusion matrix
圖9 SVM混淆矩陣Fig.9 SVM confusion matrix
圖10 CNN-Adaboost模型混淆矩陣Fig.10 CNN-Adaboost model confusion matrix
表6 不同模型診斷性能比較
針對列控系統(tǒng)車載設(shè)備故障診斷依賴人工經(jīng)驗的問題,本文提出了一種卷積神經(jīng)網(wǎng)絡(luò)與Adaboost算法相結(jié)合的故障診斷模型。通過skip-gram模型對原始車載日志處理形成詞向量,利用CNN卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)特征向量提取,采用Adaboost算法迭代訓(xùn)練生成的CNN-Adaboost模型對提取的特征向量進(jìn)行分類輸出,達(dá)到故障診斷的目的。
本文采用某鐵路局車載日志作為原始數(shù)據(jù)進(jìn)行實驗,采用kappa系數(shù)作為模型性能的評價指標(biāo)。實驗結(jié)果表明,采用Adaboost算法訓(xùn)練的集成模型對訓(xùn)練分類錯誤的樣本有較好的表現(xiàn),能夠降低分類性能不佳的弱分類器對最終診斷結(jié)果的影響,提升了模型的故障診斷能力。
CTCS-300T的車載日志記錄在ATPCU、C2CU、SDP和TSG4個模塊中,同一個故障類別可能由不同的模塊或多個模塊引起,本文只分析實驗了ATPCU模塊的故障信息,后續(xù)可以研究多模塊數(shù)據(jù)混合的車載設(shè)備故障診斷。