孫 磊,陳海松,付俊濤,王 清
(陸軍工程大學(xué),江蘇 南京 210004)
發(fā)動機作為制造業(yè)中最關(guān)鍵的部件之一,被廣泛應(yīng)用于汽車、工程機械、農(nóng)業(yè)機械、船舶等各領(lǐng)域,擔(dān)負“心臟”作用,為其他設(shè)備提供動力。由于發(fā)動機的種類繁多,故障樣式也呈現(xiàn)多樣性,而傳統(tǒng)依賴人工經(jīng)驗的診斷方法容易受到人力、技術(shù)以及地域的限制,知識共享性、重用性低,且執(zhí)行成本高、勞動強度大,很難達到迅速高效的診斷與判排目的。
利用現(xiàn)代人工智能技術(shù),對發(fā)動機的故障文本進行智能診斷,開展相應(yīng)的分類研究,對于現(xiàn)代化的工程機械維修保養(yǎng)來說,能更為快速地定位到故障部位,減輕維護人員工作量?;谧匀徽Z言處理的深度網(wǎng)絡(luò)模型,對發(fā)動機故障短文本分類方法進行研究,達到快速故障定位的目的,為其他類似問題的解決提供一些參考。
目前,國內(nèi)外學(xué)者開展了中文短文分類方面的相關(guān)研究,重點關(guān)注到其特征表達和分類方法的選取和優(yōu)化。傳統(tǒng)機器學(xué)習(xí)方法是早期文本分類的主流方法之一[1],隨著文本數(shù)量增長后,目前深度學(xué)習(xí)方法效果相對較好。鄧姝娟[2]采用共詞分析法將航空發(fā)動機關(guān)鍵字分類,結(jié)合聚類分析和多維尺度分析,實現(xiàn)了快速檢查。許駒雄[3]將發(fā)動機故障文本構(gòu)成知識圖譜,挖掘故障數(shù)據(jù)中的專家知識,提高了信息檢索和維修效率。Kougiatsos[4]提出了基于分布式模型的燃料發(fā)動機故障監(jiān)測和隔離方法,主要運用異構(gòu)傳感器開展數(shù)據(jù)采集,結(jié)合非線性微分代數(shù)估計和自適應(yīng)閾值生成的殘差實現(xiàn)。Tang[5]結(jié)合生成對抗網(wǎng)絡(luò)模型,使用可變學(xué)習(xí)率來加速模型收斂,通過對發(fā)動機的失效模擬實驗,表明了模型具有較高的準確性,可作為診斷的輔助工具。
而Google[6]提出的基于多頭注意力的Bert 模型,則采取了全新的Transformer 的Encoder 與Decoder堆疊達到預(yù)期效果。Bert 模型具有提取信息能力強、易于使用和穩(wěn)定性高等優(yōu)點,能夠克服描述發(fā)動機故障記錄文本不規(guī)范、語句短等問題,能很好完成文本識別和分類等任務(wù)。
通過對圖書和網(wǎng)絡(luò)有關(guān)文獻資料中故障案例進行提取,根據(jù)發(fā)動機基本組成[7]形成包含曲柄連桿機構(gòu)、配氣機構(gòu)、燃油供給系統(tǒng)、潤滑系統(tǒng)、冷卻系統(tǒng)、進排氣系統(tǒng)等6 個子系統(tǒng)作為分類標簽,共計1125 條發(fā)動機故障文本數(shù)據(jù)的原始樣本集,各類別數(shù)據(jù)分布與樣本示例見表1。
表1 發(fā)動機故障數(shù)據(jù)庫構(gòu)成
對采集到的數(shù)據(jù)進行簡要分析,其主要特點有:(1)從數(shù)據(jù)分布中可以看出,總體數(shù)據(jù)在各類別上分布總體上比較均勻,但數(shù)據(jù)量偏少,考慮到深度學(xué)習(xí)模型一般需要保持足夠的數(shù)據(jù)量,才能得到較好的任務(wù)效果,因此需要提前對數(shù)據(jù)集進行樣本增強;(2)數(shù)據(jù)樣本描述長度普遍不長,一般不超過150 個字符,后續(xù)研究可以主要集中于短文本分類研究上;(3)數(shù)據(jù)集中存在一定的描述不完整、錯誤等問題,必須預(yù)先處理,否則可能影響后續(xù)模型效果。
主要采取同義詞詞匯替換、回譯、隨機噪聲注入等3 種方法。
(1)同義詞替換
替換發(fā)動機故障文本中所包含的字詞,但不改變其原本意思,即從故障短文本描述中隨機提取一個詞,并用它的同義詞替代這個詞,如“風(fēng)扇葉片不轉(zhuǎn)”中的“葉片”替換為“葉子”。
(2)回譯
通過對原文進行釋義,并對原文進行再翻譯等兩步實現(xiàn)數(shù)據(jù)增強的目的。采取將中文轉(zhuǎn)換為英語后,再翻譯到中文的方式,若無區(qū)別可更換語言。若有,則使用此新語句作為原文的數(shù)據(jù)加強樣本。
(3)隨機噪聲注入
通過向數(shù)據(jù)中加入噪聲,使所得到的數(shù)據(jù)對外界有較強的抗干擾能力,包括重新組合、隨機插字[8]、隨機調(diào)換、隨機移除等多種方法。如樣本“柴油機在運行中發(fā)出爆燃響聲”通過以上四中噪聲注入方式可以生成“柴油機在運行中發(fā)出爆燃響聲,啟動后抖動嚴重”“柴油機在運行中突然發(fā)出爆燃響聲”“在運行中柴油機發(fā)出爆燃響聲”“柴油機在運行中發(fā)出響聲”四個增強樣本。
經(jīng)過數(shù)據(jù)預(yù)處理后,最終發(fā)動機故障文本數(shù)據(jù)量可達到11023 條。表2 中顯示了數(shù)據(jù)增強后的故障文本數(shù)據(jù)量和數(shù)據(jù)增強后發(fā)動機故障數(shù)據(jù)庫各類別占比。
表2 數(shù)據(jù)增強后故障文本數(shù)據(jù)量和各類別占比
Bert 為預(yù)訓(xùn)練模型,在下游只需要經(jīng)過簡單微調(diào)即可適應(yīng)新的任務(wù),因此在文本處理領(lǐng)域應(yīng)用越來越廣泛。構(gòu)成發(fā)動機故障短文本分類方法總體架構(gòu)圖如圖1 所示。
圖1 總體方法架構(gòu)圖
(1)通過網(wǎng)絡(luò)采集與人工錄入方式收集發(fā)動機基本樣本集,對樣本集中的發(fā)動機描述不正確、缺省、錯字、漏字等進行預(yù)處理。
(2)針對樣本劃分為曲柄連桿機構(gòu)、配氣機構(gòu)、燃油供給系統(tǒng)、潤滑系統(tǒng)、冷卻系統(tǒng)、進排氣系統(tǒng)等六個子系統(tǒng),并制作類別標簽。
(3)進行數(shù)據(jù)增強,擴大類別數(shù)據(jù)文本庫。
(4)按照8∶1∶1 劃分訓(xùn)練集、驗證集與測試集。
(5)將構(gòu)建的發(fā)動機短文集作為輸入,進入到預(yù)訓(xùn)練Bert 模型。
(6)確定評價指標,通過驗證集優(yōu)化模型參數(shù)。
(7)完成訓(xùn)練,輸出微調(diào)后的發(fā)動機文本分類模型。
整個方法主要包括模型輸入、模型構(gòu)建、預(yù)訓(xùn)練與微調(diào)四個內(nèi)容。
Bert 輸入為每個字/詞的原始向量,該向量可隨機初始化,也可直接選擇Word2Vector 等算法預(yù)訓(xùn)練后的向量[9]。Bert 模型將文字轉(zhuǎn)化成一維向量,并將其輸入到網(wǎng)絡(luò)結(jié)構(gòu)中,為匹配句子對任務(wù)和標志句子中各字之間的位置關(guān)系。
Bert 模型還增加了分割嵌入與位置嵌入層。
分割嵌入層(segment embedding)用于刻畫文本語句的全局語義信息,并與單字/詞的語義信息相融合,其取值通過模型訓(xùn)練得到,例如兩個不同句子輸入就會使用分割嵌入進行區(qū)分。由于主要任務(wù)是單個發(fā)動機短文本的分類,不存在多個語句成對輸入,因此,分割嵌入是一樣的。
位置嵌入(position embedding)位置嵌入是針對出現(xiàn)在文本不同位置的字/詞所攜帶的語義信息存在差異的情況設(shè)計,通過對不同位置的字/詞分別附加一個不同的向量來提高區(qū)分度,原作者采取的計算公式為:
字向量嵌入長度主要與預(yù)訓(xùn)練結(jié)果保持一致即可,每個句子的pad 長度根據(jù)數(shù)據(jù)集而定,由于所采集的發(fā)動機描述數(shù)據(jù)屬于短文本,不超過150 字符,pad 長度取150 即可。
最終Bert 模型將字向量、文本嵌入向量和位置嵌入向量相加之和作為模型的輸入值,模型輸入組成如圖2 所示。
圖2 模型輸入組成
在模型輸入確定后,將被送入到Bert 的主體結(jié)構(gòu)中,Bert 由多個Transformer 模塊(圖中簡稱TRM)堆疊而成,而每個Transformer 又由多個Encoder 與Decoder 堆棧形成,Encoder 將輸入input 轉(zhuǎn)換為編碼信息,而Decoder 則重新將編碼信息轉(zhuǎn)換為解碼信息,其總體結(jié)構(gòu)如圖2 所示,以此實現(xiàn)不斷提取語句特征,包括表層特征、句法特征與語義層次的特征。Bert 內(nèi)部還采取了雙向結(jié)構(gòu)、注意力機制,如圖3 所示,可以較好的學(xué)習(xí)到上下文隱層關(guān)系,最終實現(xiàn)將語句輸入Ei轉(zhuǎn)換為模型輸出Tj。
圖3 Transformer 模塊結(jié)構(gòu)
圖4 Bert 模型體系結(jié)構(gòu)
Bert 模型主要進行兩個預(yù)訓(xùn)練任務(wù):Masked Language Model(MLM)和Next Sentence Prediction(NSP)。
MLM(Masked Language Model):將一個或幾個詞語進行“隱藏”,然后通過訓(xùn)練進行預(yù)測,這也是分類任務(wù)的主要任務(wù)。例如,將“發(fā)動機冒黑煙”文本中的“發(fā)動機”一次隱去,然后進行網(wǎng)絡(luò)預(yù)測,通過不斷訓(xùn)練,最終實現(xiàn)該詞的準確預(yù)測。
NSP(Next Sentence Prediction)[10]:把兩個句子拼接到一起并送入模型,預(yù)測其屬于同一類別的概率,可用于同義句判定或問答系統(tǒng)。例如將“發(fā)動機冒黑煙”“濾清器出現(xiàn)故障”兩個短句中間加入[SEP]標記,在頭尾再加上[CLS]與[SEP]后送入Bert 模型進行訓(xùn)練,如圖5 所示,模型最終可實現(xiàn)句子對的預(yù)測。
圖5 NSP 示意圖
Bert 微調(diào)就是在預(yù)訓(xùn)練模型的基礎(chǔ)上使用預(yù)處理后的發(fā)動機短文本分類數(shù)據(jù)集,調(diào)整構(gòu)建的Bert分類模型參數(shù),以適應(yīng)本領(lǐng)域文本分類任務(wù)的過程,這樣不僅節(jié)省時間,而且提高模型精確性能,比較適合領(lǐng)域遷移,從而完成所研究的發(fā)動機常見故障文本分類任務(wù)。
實驗采用前述預(yù)處理有增強后的11023 條數(shù)據(jù),其中訓(xùn)練集、驗證集、測試集數(shù)量分別為8823、1100、1100 條,標簽類別編號按照曲柄連桿機構(gòu)、配氣機構(gòu)、燃油供給系統(tǒng)、潤滑系統(tǒng)、冷卻系統(tǒng)、進排氣系統(tǒng)順序分別記為0、1、2、3、4、5。部分數(shù)據(jù)展示見表3。
表3 發(fā)動機故障短文本示例
分類模型的有效性,一般采取查準率(Precision)、召回率(Recall)、準確率以及F1 值(F1-score)作為評估指標[11]。
為準確描述以上三個指標,使用TP、FP、TN、FN分別代表真陽(True Positive)、假陽(False Positive)、真負(True Negative)、假負四類樣本。
查準率:是指在樣本分類過程中,正例被預(yù)測為正例的樣本數(shù)與所有被預(yù)測為正例的樣本數(shù)的比值。
召回率:是指在故障文本分類過程中,所用語料中實際上預(yù)測上都是正例的語料數(shù)目與所用語料中預(yù)測正確的數(shù)目之間的比值。
F1 值:通過將查準率與召回率進行平均數(shù)處理,得到的F1 值,作為一種衡量分類模型優(yōu)劣的綜合指數(shù)。
基于以上評價指標,對11023 條數(shù)據(jù)構(gòu)成的樣本集進行模型驗證實驗。
實驗環(huán)境與相關(guān)參數(shù)設(shè)定為:
操作系統(tǒng):ubuntu20.04
語言版本:python3.8
CPU:intel 酷睿i7
GPU:RTX 3090 24G
深度學(xué)習(xí)框架版本:pytorch1.7、keras2.6.0
迭代次數(shù)設(shè)置為100 次,損失函數(shù)選擇交叉熵分類損失,當達到最大迭代次數(shù)或者連續(xù)1000 次以上損失函數(shù)沒有降低后結(jié)束。
基于構(gòu)建的發(fā)動機故障短文分類模型,其準確率以及Loss 值的改變情況分別顯示在圖6 和圖7 中(每隔5 個迭代記錄一次)。
圖6 文本分類Loss 值曲線圖
圖7 文本分類準確度曲線圖
圖6、7 中的橫坐標表示迭代次數(shù),縱坐標表示loss 值與準確率。從圖6 中可以看到,Loss 值曲線的總體變化趨勢是逐漸下降的,而在次數(shù)達到14(即70個迭代次數(shù))后,Loss 值已經(jīng)接近于相對穩(wěn)定狀態(tài),這時的Loss 值在0.1 和0.3 之間,模型的精度也在不斷地提高,測試精度從剛開始的20%提高到了91.7%,這表明,所構(gòu)建的模型能在較快的迭代后適應(yīng)新的測試集,保持在較為可信的區(qū)間,驗證了Bert 模型的發(fā)動機故障短文本分類在數(shù)據(jù)集應(yīng)用的有效性。
為進一步研究不同類別的分類效果,將類別的查準率、召回率以及F1 值評價指標分別列出,得到表4,為清晰觀察比較各類別之間的關(guān)系,將三者繪制為折線圖,如圖8 所示。
圖8 各類別下查準率、召回率以及F1 值對比
由圖8、表4 可發(fā)現(xiàn),所有類別的指標均大約0.8,占據(jù)數(shù)據(jù)量最多的配氣機構(gòu)和燃油供給系統(tǒng)具有相對較好的結(jié)果,也說明了數(shù)據(jù)量增大能一定程度上提高模型精度。而潤滑系統(tǒng)和進排氣系統(tǒng)的實驗結(jié)果不夠理想,分類準確率不高,可能有兩方面的原因:(1)總體數(shù)據(jù)量還是相對較少的;(2)在數(shù)據(jù)增強的過程中,樣本替換、消除相似度過高,導(dǎo)致增強效果一般。因此,可以針對效果不佳的類別進行數(shù)據(jù)集優(yōu)化以得到更精確的分類結(jié)果。
表4 各類別下查準率、召回率以及F1 值對比數(shù)據(jù)
針對裝備發(fā)動機的故障文本,基于與訓(xùn)練Bert模型對其開展了分類研究。首先對發(fā)動機常見故障的文字資料進行了數(shù)據(jù)預(yù)處理,包括錯誤故障去除、重復(fù)故障去除、故障分類,針對數(shù)據(jù)不足的現(xiàn)實,采用詞匯替換、回譯、隨機噪聲注入等技術(shù)對故障文本進行增強。其次基于Bert 模型,采取微調(diào)方法,構(gòu)建了裝備發(fā)動機故障文本分類模型,設(shè)計了總體算法流程。通過實驗表明,模型對數(shù)據(jù)集的準確率、召回率與F1均表現(xiàn)較好,具備了較好的應(yīng)用價值。未來將進一步考慮故障現(xiàn)象的多重原因分析,即復(fù)合故障診斷,進而提升模型實用性。