孫 磊,陳海松,付俊濤,王 清
(陸軍工程大學,江蘇 南京 210004)
發動機作為制造業中最關鍵的部件之一,被廣泛應用于汽車、工程機械、農業機械、船舶等各領域,擔負“心臟”作用,為其他設備提供動力。由于發動機的種類繁多,故障樣式也呈現多樣性,而傳統依賴人工經驗的診斷方法容易受到人力、技術以及地域的限制,知識共享性、重用性低,且執行成本高、勞動強度大,很難達到迅速高效的診斷與判排目的。
利用現代人工智能技術,對發動機的故障文本進行智能診斷,開展相應的分類研究,對于現代化的工程機械維修保養來說,能更為快速地定位到故障部位,減輕維護人員工作量。基于自然語言處理的深度網絡模型,對發動機故障短文本分類方法進行研究,達到快速故障定位的目的,為其他類似問題的解決提供一些參考。
目前,國內外學者開展了中文短文分類方面的相關研究,重點關注到其特征表達和分類方法的選取和優化。傳統機器學習方法是早期文本分類的主流方法之一[1],隨著文本數量增長后,目前深度學習方法效果相對較好。鄧姝娟[2]采用共詞分析法將航空發動機關鍵字分類,結合聚類分析和多維尺度分析,實現了快速檢查。許駒雄[3]將發動機故障文本構成知識圖譜,挖掘故障數據中的專家知識,提高了信息檢索和維修效率。Kougiatsos[4]提出了基于分布式模型的燃料發動機故障監測和隔離方法,主要運用異構傳感器開展數據采集,結合非線性微分代數估計和自適應閾值生成的殘差實現。Tang[5]結合生成對抗網絡模型,使用可變學習率來加速模型收斂,通過對發動機的失效模擬實驗,表明了模型具有較高的準確性,可作為診斷的輔助工具。
而Google[6]提出的基于多頭注意力的Bert 模型,則采取了全新的Transformer 的Encoder 與Decoder堆疊達到預期效果。Bert 模型具有提取信息能力強、易于使用和穩定性高等優點,能夠克服描述發動機故障記錄文本不規范、語句短等問題,能很好完成文本識別和分類等任務。
通過對圖書和網絡有關文獻資料中故障案例進行提取,根據發動機基本組成[7]形成包含曲柄連桿機構、配氣機構、燃油供給系統、潤滑系統、冷卻系統、進排氣系統等6 個子系統作為分類標簽,共計1125 條發動機故障文本數據的原始樣本集,各類別數據分布與樣本示例見表1。

表1 發動機故障數據庫構成
對采集到的數據進行簡要分析,其主要特點有:(1)從數據分布中可以看出,總體數據在各類別上分布總體上比較均勻,但數據量偏少,考慮到深度學習模型一般需要保持足夠的數據量,才能得到較好的任務效果,因此需要提前對數據集進行樣本增強;(2)數據樣本描述長度普遍不長,一般不超過150 個字符,后續研究可以主要集中于短文本分類研究上;(3)數據集中存在一定的描述不完整、錯誤等問題,必須預先處理,否則可能影響后續模型效果。
主要采取同義詞詞匯替換、回譯、隨機噪聲注入等3 種方法。
(1)同義詞替換
替換發動機故障文本中所包含的字詞,但不改變其原本意思,即從故障短文本描述中隨機提取一個詞,并用它的同義詞替代這個詞,如“風扇葉片不轉”中的“葉片”替換為“葉子”。
(2)回譯
通過對原文進行釋義,并對原文進行再翻譯等兩步實現數據增強的目的。采取將中文轉換為英語后,再翻譯到中文的方式,若無區別可更換語言。若有,則使用此新語句作為原文的數據加強樣本。
(3)隨機噪聲注入
通過向數據中加入噪聲,使所得到的數據對外界有較強的抗干擾能力,包括重新組合、隨機插字[8]、隨機調換、隨機移除等多種方法。如樣本“柴油機在運行中發出爆燃響聲”通過以上四中噪聲注入方式可以生成“柴油機在運行中發出爆燃響聲,啟動后抖動嚴重”“柴油機在運行中突然發出爆燃響聲”“在運行中柴油機發出爆燃響聲”“柴油機在運行中發出響聲”四個增強樣本。
經過數據預處理后,最終發動機故障文本數據量可達到11023 條。表2 中顯示了數據增強后的故障文本數據量和數據增強后發動機故障數據庫各類別占比。

表2 數據增強后故障文本數據量和各類別占比
Bert 為預訓練模型,在下游只需要經過簡單微調即可適應新的任務,因此在文本處理領域應用越來越廣泛。構成發動機故障短文本分類方法總體架構圖如圖1 所示。

圖1 總體方法架構圖
(1)通過網絡采集與人工錄入方式收集發動機基本樣本集,對樣本集中的發動機描述不正確、缺省、錯字、漏字等進行預處理。
(2)針對樣本劃分為曲柄連桿機構、配氣機構、燃油供給系統、潤滑系統、冷卻系統、進排氣系統等六個子系統,并制作類別標簽。
(3)進行數據增強,擴大類別數據文本庫。
(4)按照8∶1∶1 劃分訓練集、驗證集與測試集。
(5)將構建的發動機短文集作為輸入,進入到預訓練Bert 模型。
(6)確定評價指標,通過驗證集優化模型參數。
(7)完成訓練,輸出微調后的發動機文本分類模型。
整個方法主要包括模型輸入、模型構建、預訓練與微調四個內容。
Bert 輸入為每個字/詞的原始向量,該向量可隨機初始化,也可直接選擇Word2Vector 等算法預訓練后的向量[9]。Bert 模型將文字轉化成一維向量,并將其輸入到網絡結構中,為匹配句子對任務和標志句子中各字之間的位置關系。
Bert 模型還增加了分割嵌入與位置嵌入層。
分割嵌入層(segment embedding)用于刻畫文本語句的全局語義信息,并與單字/詞的語義信息相融合,其取值通過模型訓練得到,例如兩個不同句子輸入就會使用分割嵌入進行區分。由于主要任務是單個發動機短文本的分類,不存在多個語句成對輸入,因此,分割嵌入是一樣的。
位置嵌入(position embedding)位置嵌入是針對出現在文本不同位置的字/詞所攜帶的語義信息存在差異的情況設計,通過對不同位置的字/詞分別附加一個不同的向量來提高區分度,原作者采取的計算公式為:
字向量嵌入長度主要與預訓練結果保持一致即可,每個句子的pad 長度根據數據集而定,由于所采集的發動機描述數據屬于短文本,不超過150 字符,pad 長度取150 即可。
最終Bert 模型將字向量、文本嵌入向量和位置嵌入向量相加之和作為模型的輸入值,模型輸入組成如圖2 所示。

圖2 模型輸入組成
在模型輸入確定后,將被送入到Bert 的主體結構中,Bert 由多個Transformer 模塊(圖中簡稱TRM)堆疊而成,而每個Transformer 又由多個Encoder 與Decoder 堆棧形成,Encoder 將輸入input 轉換為編碼信息,而Decoder 則重新將編碼信息轉換為解碼信息,其總體結構如圖2 所示,以此實現不斷提取語句特征,包括表層特征、句法特征與語義層次的特征。Bert 內部還采取了雙向結構、注意力機制,如圖3 所示,可以較好的學習到上下文隱層關系,最終實現將語句輸入Ei轉換為模型輸出Tj。

圖3 Transformer 模塊結構

圖4 Bert 模型體系結構
Bert 模型主要進行兩個預訓練任務:Masked Language Model(MLM)和Next Sentence Prediction(NSP)。
MLM(Masked Language Model):將一個或幾個詞語進行“隱藏”,然后通過訓練進行預測,這也是分類任務的主要任務。例如,將“發動機冒黑煙”文本中的“發動機”一次隱去,然后進行網絡預測,通過不斷訓練,最終實現該詞的準確預測。
NSP(Next Sentence Prediction)[10]:把兩個句子拼接到一起并送入模型,預測其屬于同一類別的概率,可用于同義句判定或問答系統。例如將“發動機冒黑煙”“濾清器出現故障”兩個短句中間加入[SEP]標記,在頭尾再加上[CLS]與[SEP]后送入Bert 模型進行訓練,如圖5 所示,模型最終可實現句子對的預測。

圖5 NSP 示意圖
Bert 微調就是在預訓練模型的基礎上使用預處理后的發動機短文本分類數據集,調整構建的Bert分類模型參數,以適應本領域文本分類任務的過程,這樣不僅節省時間,而且提高模型精確性能,比較適合領域遷移,從而完成所研究的發動機常見故障文本分類任務。
實驗采用前述預處理有增強后的11023 條數據,其中訓練集、驗證集、測試集數量分別為8823、1100、1100 條,標簽類別編號按照曲柄連桿機構、配氣機構、燃油供給系統、潤滑系統、冷卻系統、進排氣系統順序分別記為0、1、2、3、4、5。部分數據展示見表3。

表3 發動機故障短文本示例
分類模型的有效性,一般采取查準率(Precision)、召回率(Recall)、準確率以及F1 值(F1-score)作為評估指標[11]。
為準確描述以上三個指標,使用TP、FP、TN、FN分別代表真陽(True Positive)、假陽(False Positive)、真負(True Negative)、假負四類樣本。
查準率:是指在樣本分類過程中,正例被預測為正例的樣本數與所有被預測為正例的樣本數的比值。
召回率:是指在故障文本分類過程中,所用語料中實際上預測上都是正例的語料數目與所用語料中預測正確的數目之間的比值。
F1 值:通過將查準率與召回率進行平均數處理,得到的F1 值,作為一種衡量分類模型優劣的綜合指數。
基于以上評價指標,對11023 條數據構成的樣本集進行模型驗證實驗。
實驗環境與相關參數設定為:
操作系統:ubuntu20.04
語言版本:python3.8
CPU:intel 酷睿i7
GPU:RTX 3090 24G
深度學習框架版本:pytorch1.7、keras2.6.0
迭代次數設置為100 次,損失函數選擇交叉熵分類損失,當達到最大迭代次數或者連續1000 次以上損失函數沒有降低后結束。
基于構建的發動機故障短文分類模型,其準確率以及Loss 值的改變情況分別顯示在圖6 和圖7 中(每隔5 個迭代記錄一次)。

圖6 文本分類Loss 值曲線圖

圖7 文本分類準確度曲線圖
圖6、7 中的橫坐標表示迭代次數,縱坐標表示loss 值與準確率。從圖6 中可以看到,Loss 值曲線的總體變化趨勢是逐漸下降的,而在次數達到14(即70個迭代次數)后,Loss 值已經接近于相對穩定狀態,這時的Loss 值在0.1 和0.3 之間,模型的精度也在不斷地提高,測試精度從剛開始的20%提高到了91.7%,這表明,所構建的模型能在較快的迭代后適應新的測試集,保持在較為可信的區間,驗證了Bert 模型的發動機故障短文本分類在數據集應用的有效性。
為進一步研究不同類別的分類效果,將類別的查準率、召回率以及F1 值評價指標分別列出,得到表4,為清晰觀察比較各類別之間的關系,將三者繪制為折線圖,如圖8 所示。

圖8 各類別下查準率、召回率以及F1 值對比
由圖8、表4 可發現,所有類別的指標均大約0.8,占據數據量最多的配氣機構和燃油供給系統具有相對較好的結果,也說明了數據量增大能一定程度上提高模型精度。而潤滑系統和進排氣系統的實驗結果不夠理想,分類準確率不高,可能有兩方面的原因:(1)總體數據量還是相對較少的;(2)在數據增強的過程中,樣本替換、消除相似度過高,導致增強效果一般。因此,可以針對效果不佳的類別進行數據集優化以得到更精確的分類結果。

表4 各類別下查準率、召回率以及F1 值對比數據
針對裝備發動機的故障文本,基于與訓練Bert模型對其開展了分類研究。首先對發動機常見故障的文字資料進行了數據預處理,包括錯誤故障去除、重復故障去除、故障分類,針對數據不足的現實,采用詞匯替換、回譯、隨機噪聲注入等技術對故障文本進行增強。其次基于Bert 模型,采取微調方法,構建了裝備發動機故障文本分類模型,設計了總體算法流程。通過實驗表明,模型對數據集的準確率、召回率與F1均表現較好,具備了較好的應用價值。未來將進一步考慮故障現象的多重原因分析,即復合故障診斷,進而提升模型實用性。