郭皓辰,汪 含,樓 林,潘爾順
(1.上海交通大學機械與動力工程學院,上海 200030;2.中國商用飛機有限責任公司,上海 200210)
飛機的生產過程會在各個裝配環(huán)節(jié)產生質量故障,如孔位超差、表面損傷等,需要管理維護人員從大量維護手冊中尋找解決方法,增加了其工作量,降低工作效率。本文立足于優(yōu)化飛機裝配過程中質量問題處理流程,從而可以節(jié)約人力物力成本,縮短飛機生產時間。目前關于飛機故障診斷與維修的研究,大多數(shù)是通過監(jiān)測或檢測手段獲取數(shù)值型故障特征數(shù)據(jù)及故障時間序列數(shù)據(jù)進行。然而,很多裝配故障信息是以故障表單、故障記錄案例等文本形式存在。而現(xiàn)有的關于裝配故障的研究中,多是對故障進行統(tǒng)計分析與事前預防[1–2],缺乏針對性的診斷。因此,利用文本分析等技術方法,解決飛機生產裝配過程產生的故障,成為當前研究的重要方向。
近年來,故障診斷技術在理論以及故障診斷系統(tǒng)的應用和拓展上都達到新的水平。Schutte 等[3]提出了基于規(guī)則和基于模型的推理策略、操作因果、時間和定性信息,能在實時環(huán)境中檢測和診斷已知或未知類型的飛機故障。Fazlollahtabar 等[4]將故障樹分析與可靠性框圖方法相集成,并配置危害決策樹來計算每個組件實現(xiàn)故障診斷。陳瑞勛等[5]提出基于規(guī)則和故障樹的故障診斷方法,將模型與經驗知識相結合,與故障樹配合做出故障診斷。包勇等[6]采用模型化事實對系統(tǒng)知識進行編碼,并設計了故障樹動態(tài)生成和刪減規(guī)則集合,達成了深知識和淺知識的有效結合。以上的診斷模型是在擁有標準知識規(guī)則的前提下建立的,而對于系統(tǒng)互相制約所導致或產生原因復雜的故障,這些傳統(tǒng)方法不能精準地進行診斷和故障定位,使用將受到限制。
Heider[7]使用基于案例重新發(fā)現(xiàn)的數(shù)據(jù)挖掘技術,對波音737 的引擎進行故障排除。Kordestani 等[8]通過有序加權平均方法開發(fā)了一種使用人工神經網絡和離散小波變換的集成故障診斷新方法,以實現(xiàn)更高可靠性和更快的飛機擾流板診斷系統(tǒng)。李曉明等[9]基于某型航空發(fā)動機防喘控制系統(tǒng)的故障特點,運用案例推理技術,設計出案例的三級推理策略來檢索歷史相似故障的解決辦法。王銳光等[10]提出一種迭代式的故障診斷基本過程,將卷積神經網絡與隨機森林模型應用于飛機設備的故障原因判別。以上方法通過檢索歷史故障解決新的問題,處理的數(shù)據(jù)均為數(shù)值或短文本數(shù)據(jù),這些方法對非結構化長文本信息并不適用。
在自然語言處理方面,對非結構化長文本特征提取的有關研究中,典型的處理方法為詞袋模型,其通過TF–IDF 算法[11]或Textrank 算法[12]抽取文本中的關鍵詞與權重,以詞匯與對應權重的集合表示文本。但傳統(tǒng)方法的問題是詞匯的維度與稀疏性高,且忽視了各個詞匯間的語義關系。為解決這一問題,Mikolov 等[13]提出了Word2vec 算法,將詞匯以向量的形式映射到低維空間中,并通過向量的數(shù)值反映其與上下文間的聯(lián)系。之后,其又在Word2vec 的基礎上改進訓練模型,拓展為Doc2vec 算法[14],將一段文本用一個向量來代替,從而可以將一段非結構化的文本數(shù)據(jù)轉換為一個結構化向量數(shù)據(jù)。以上的文本處理方法在非結構化數(shù)據(jù)故障診斷方面有很好的適用性。
綜上,以往的故障診斷文獻缺乏對長文本數(shù)據(jù)處理的研究。因此,本文提出一種基于深度學習的飛機裝配過程故障智能診斷技術,將文本挖掘方法與知識工程方法相結合,試圖解決飛機裝配過程故障診斷時知識獲取、知識表示和知識推理的關鍵問題,以期為新發(fā)故障提供準確的參考處理建議。
知識獲取是指人們通過多種策略和技術,將知識輸入進機器當中,是將外部知識轉化為診斷系統(tǒng)知識庫中知識的過程。飛機故障表單知識獲取主要是將歷史上飛機設備的結構信息、飛機故障現(xiàn)象及原因、飛機故障處置措施及故障表單處理時間等信息進行分類,提取關鍵信息并將其轉換輸入到故障智能診斷系統(tǒng)中。
粗糙集理論是用于分析不精確、不完整數(shù)據(jù)信息的理論方法,可以在留存有效數(shù)據(jù)的情況下,對總體信息做出刪減并獲取知識的最小表達。本文基于粗糙集理論,首先從原始表單數(shù)據(jù)庫里獲得飛機故障表單信息,然后對樣本表單數(shù)據(jù)做預處理,刪除信息不完整或無法識別的表單。刪除故障完全相同但處理結果不同的表單。對表單中結構化屬性進行數(shù)據(jù)轉換,轉換為可供計算機識別的編碼。對表單做出預處理后,將通過粗糙集理論中的屬性約簡與值約簡的方法,壓縮數(shù)據(jù)維度。
屬性約簡即在維持系統(tǒng)歸類能力不變的前提下,刪去無關或不重要的屬性,提升診斷系統(tǒng)潛在知識的清晰程度[15]。假定C為條件屬性集,任一屬性a∈C-R的重要度Qx(a,R,X)可以表示為
式中,X為決策屬性集,R∈C;對于決策屬性導出的類別,Qx(a,R,X)代表屬性a影響R對X的分類效力,其取值越高,影響效力越大。根據(jù)專家知識來判別各個科目屬性的重要程度,提取與飛機故障診斷密切相關的知識,為接下來的知識表示與知識推理奠定基礎。
飛機故障表單中,飛機故障偏差描述屬性中值的數(shù)據(jù)是中文文本,即非結構化數(shù)據(jù),對于表單中文本類的非結構化數(shù)據(jù),可以通過自然語言處理等方法轉化為結構化數(shù)據(jù)。第1 步就是要將文本進行分詞處理,把一段中文文本中的詞匯區(qū)分出來,由于飛機故障表單文本專業(yè)性強,使用分詞算法直接進行分詞將造成部分飛機系統(tǒng)中的術語與文本中的偏離詞語不能被正確辨識。為了提高分詞的準確性,本文結合專家知識建立飛機故障分詞詞庫,包括飛機零件詞庫、偏離詞庫以及停用詞庫。
飛機零件詞庫通過零件名稱屬性得到,偏離詞庫包含描述飛機設備故障狀態(tài)的詞匯,由偏離描述屬性與專家知識相結合整理得到。停用詞詞庫包含標點符號和與表達內容無關的詞匯,有連詞、副詞等,例如“中”、“并且”,也包括在文本中頻繁出現(xiàn),但對區(qū)分不同故障作用不大的詞匯,例如“檢查”、“詳見”。構建飛機故障分詞詞庫時,飛機零件詞庫與偏離詞庫用于調整分詞點位置,而停用詞詞庫充當約簡文本信息的過濾詞詞庫。
圖1展示了對文本分詞后的效果。針對一份故障表單中需要分詞的一段文本,首先過濾掉標點符號與換行符等停用符號,此時一份飛機故障表單的偏差描述文本在診斷系統(tǒng)文件中對應一句。結合專家知識建立飛機故障分詞詞庫,運用基于最大逆向匹配算法的Jieba分詞算法進行分詞,可以獲得較優(yōu)的分詞結果。
圖1 文本分詞示意圖Fig.1 Text segmentation diagram
知識表示是將知識符號化與形式化表達的一個過程,將知識轉化為可供計算機分析處理的形式。由于飛機故障表單數(shù)據(jù)中偏差描述屬性是非結構化文本數(shù)據(jù),本文在對非結構化文本屬性進行分詞值約簡之后,選用深度學習算法中的Doc2vec 算法,將文本數(shù)據(jù)表示為數(shù)值化的向量數(shù)據(jù),以進行后續(xù)的知識推理運算。
深度學習首先就要將自然語言文本轉換為數(shù)字數(shù)據(jù)。其中詞匯最直觀且典型的表示方法是“0~1 表示法”(One-hot representation),即把每個詞表示為一個稀疏向量,其維度是詞匯集的大小,其中除一個維度的值為1 之外其他維度值均為0,這個維度就代表了當前的詞。例如“支架”可表示為 [0 0 1 0 0 0 … ]。而飛機故障表單的文本詞語關聯(lián)性強的特點,例如“偏離”與“偏差”表達意思相近,但用這種方法表示詞匯將忽略詞匯之間的語義關系,丟失部分信息;同時飛機故障文本專業(yè)詞匯豐富,過高的數(shù)據(jù)維度會使計算時的復雜度過高。而基于分布式表示的詞向量表達方法可以有效地適應飛機故障文本的特點。它將詞語壓縮到低維空間用密集方法表示,向量的每個維度上的數(shù)值表示各個單詞在這一維度上的關聯(lián)水平。例如此時“支架”表示為[0.422–0.154–0.125 0.089 …]。這種表示方法可以通過向量之間的距離計算詞匯之間的關聯(lián)程度,避免了高維稀疏矩陣可能產生的維數(shù)災難問題,同時近義詞匯所轉換的向量距離也相對更加靠近。
Doc2vec 算法是分布式向量表示法的一種,由Word2doc 算法演化而來。Word2doc 算法利用神經網絡模型訓練,將文本信息中的每個詞匯映射成K維向量。其訓練框架如圖2所示。
圖2 Word2doc算法訓練示意圖Fig.2 Word2doc algorithm training diagram
在模型內,輸入詞匯都被映射到向量空間中,將輸入的上下文詞匯的詞向量相加作為特征,推測文中的下一個詞匯。通常給定如下訓練單詞序列w1,w2,…,wT,目標函數(shù)是最大化平均對數(shù)概率:
預測任務通常用一個多分類器 (如Softmax)來完成,計算方法為
yi為預測出每個詞匯i的概率,計算yi的公式為
式中,U和b為Softmax 參數(shù);h是將wt–k,…,wt+k求平均得到。待訓練收斂之后,意義相似的單詞將會被映射在向量空間中的相似坐標。
而Doc2vec 算法在Word2doc 訓練模型的基礎上加以改進,其訓練框架如圖3所示。其在訓練過程中為語料庫中的句子或段落額外標注一個向量,此句向量也可以被抽象成一個詞匯,理解為為聯(lián)系前后文的記憶單元或者是該段落的宗旨。對同一條語句的各個段落訓練時,句向量維持不變,即預測語句內每個詞語時都利用了整條語句的語義特征。在預測過程中,保持各詞語的詞向量及輸出層的Softmax 參數(shù)恒定,通過梯度下降法進行反向傳播,收斂后可獲得待預測語句的句向量。
圖3 Doc2vec算法訓練示意圖Fig.3 Doc2vec algorithm training diagram
總結Doc2vec 的過程,主要有兩步:(1)首先利用歷史文本數(shù)據(jù)訓練模型,通過已知的訓練數(shù)據(jù)中得到詞向量w,Softmax 的參數(shù)U、b和句向量D;(2)推斷過程,對于新的段落,通過在矩陣D中增加新的列,在固定w、U、b的情況下,根據(jù)以上方法進行訓練,利用梯度下降的方法獲得新的D,即可得到新段落的向量表達。通過Doc2vec 算法,將故障文本中的各詞匯向量賦權累加,可以得到句子整體的特征向量,向量的每個維度是一個抽象出的語義維度,而非傳統(tǒng)方法如詞袋模型,向量維度只表示某個詞匯的有無。這種特征表示方法更有利于語義的保留。
基于飛機裝配過程故障涉及系統(tǒng)多,產生原因復雜的特點,本文將選用案例推理(CBR)方法進行知識推理過程。CBR 的核心原理是通過歷史的知識與經驗來處理新出現(xiàn)的問題。當新問題出現(xiàn)時,在知識庫中尋找類似問題,將它的解決方法作為解決新問題的起點,通過部分修改而獲得新問題的解。
進行案例檢索時,將新表單中各故障描述屬性與歷史表單的各屬性匹配,根據(jù)屬性值計算兩兩表單案例間的相似程度,并根據(jù)相似度對歷史案例排序。案例相似度計算方法中最常用的方法是K–最近相鄰策略,即KNN,其相似度計算函數(shù)為
式中,vi是第i個故障描述屬性對應的權重,是待檢索案例n的第i個屬性與歷史案例o的第i個屬性之間的相似度。對于數(shù)據(jù)為數(shù)值或結構化文本的屬性,取值相同則相似度為1,反之為0。而對向量化表示的文本屬性,采用求各向量之間余弦值的辦法來確定它們之間的相似度。對于兩個n維向量S和T,S=(s1,s2,…,sn),T=(t1,t2,…,tn),其余弦值的計算方法為
通過案例檢索得到與新案例相似度較高的歷史案例,可參考其處理方法解決新案例故障。
本文以某型號飛機的質量故障表單數(shù)據(jù)庫為例,對該診斷技術進行了驗證,并基于本文所提出方法,利用Python 進行封裝后構建了簡易的飛機故障智能診斷模擬系統(tǒng),可通過輸入表單部分信息“查詢”相似案例并提供對應Excel“詳細”內容,以證明工程上的可行性。
一份飛機質量故障表單由多個科目屬性構成,包括類型、偏離描述、FRR 編號、圖號、ATA 章節(jié)、零件名稱、架次描述、拒收數(shù)量、質保、偏差描述、關重件標識、糾正措施說明、偏離分類、處置說明和會簽意見等科目屬性。表單中含有大量無效與多余數(shù)據(jù)。對于歷史表單和每份新表單,都要進行屬性約簡和分詞操作。
首先對表單中的屬性進行約簡,將與故障診斷無關的屬性和冗余屬性去除,之后剩余提取出的數(shù)據(jù)可以分為故障描述科目屬性與處理方法科目屬性兩類。
(1)故障描述屬性:類型,偏離描述,零件名稱,偏差描述。
(2)處理方法屬性:糾正措施說明,處置說明。
各個屬性的內容數(shù)據(jù)表達方法,如用于測試的故障表單如表1所示。其中,類型、零件名稱與處置說明為結構化數(shù)據(jù),有固定的名詞集。而偏差描述與糾正措施說明為非結構化文本數(shù)據(jù)。輸入新案例后,將根據(jù)其故障描述屬性進行檢索。
對“偏差描述”屬性進行數(shù)據(jù)處理,首先根據(jù) “偏離描述”、“零件名稱”兩個屬性所含有的詞匯的集合建立自定義詞庫,其包含所有屬性詞匯。之后采用Jieba 分詞算法,使用全模式進行分詞,把文本中所有可能的詞語都掃描出來,確保正確詞匯的出現(xiàn),同時加入自定義詞庫避免專有詞匯被分割。分詞結束后,將標點符號去掉,同時提取出詞性為連詞、介詞、副詞的詞匯。對其余部分通過IF–IDF 算法對詞匯的權重進行排序,在高權重詞匯中,結合專家經驗,提取出無效詞匯。將標點符號、連詞等詞匯與無效詞匯組合為停用詞庫。之后對原“偏差描述”屬性數(shù)據(jù)進行重新分詞,分詞時加入自定義詞庫與停用詞庫。
當歷史表單均完成上述處理過程后,對將歷史表單處理后的“偏差描述”屬性數(shù)據(jù)帶入Doc2vec 算法訓練模型,采用PV–DM 模式,將各句子中各詞匯作為輸出,與該詞匯關聯(lián)的上下文詞匯作為輸入;作為輸入的詞匯首先要與輸出詞匯處于同一句子,其次與輸出詞匯的上下文距離間隔有限制。將詞匯關聯(lián)的上下文詞匯的最遠距離設置為8,將最終向量的維度設置為100,以固定次數(shù)20 作為訓練的循環(huán)迭代次數(shù)進行訓練。訓練完成后得到的訓練網絡各節(jié)點權重參數(shù)即為Doc2vec 權重矩陣,將權重矩陣進行存儲,而后將各表單“偏差描述”屬性文本代入到權重矩陣中就實現(xiàn)了屬性數(shù)據(jù)的向量化表示。之后有處理后的新表單加入,都將其代入此權重矩陣求其向量。
訓練完成后將用于測試的表單數(shù)據(jù)錄入,來檢索歷史相似案例。由于故障描述屬性有4 種,故障描述屬性在相似度計算時權重均取0.25,最終相似度在[0,1]之間。
以表1中的故障表單為例,其不參與訓練,作為測試用表單在智能診斷示范系統(tǒng)錄入故障描述信息后,檢索到的相似度前3 的歷史案例如圖4所示。點擊詳細可以進一步查看其他內容。表2和3 分別展示了案例的偏差描述與處置說明等其他內容,并將原表單由專家輸入的糾正措施說明與處置說明和系統(tǒng)推薦所得作對比??梢钥闯?,原表單與檢索出的表單處置說明均為返修,而糾正措施說明中均含有“拆除–堵孔–重裝”的關鍵步驟。從與專家處理結果的對比效果上看,該智能診斷系統(tǒng)及對應技術具有輔助飛機維護人員作判斷決策的潛在應用價值。
表1 故障表單表達形式表Table 1 Fault form representation table
表2 相似案例表Table 2 Similar case table
表3 結果對照表Table 3 Result comparison table
圖4 智能診斷系統(tǒng)示意圖Fig.4 Intelligent diagnosis system diagram
本文針對飛機裝配過程故障特點,將知識工程與深度學習的方法相結合,完成了故障智能診斷系統(tǒng)中知識獲取、知識表達與知識推理3 大關鍵步驟,并以某型號飛機的質量故障表單數(shù)據(jù)為例,對該診斷技術進行驗證,證明工程上的可行性。該研究成果有助于通過輔助維修方案決策,便于管理及維修人員對故障及時反應和修復,從而提高生產裝配階段飛機系統(tǒng)故障診斷的效率。本文暫時沒有考慮通過構建指標定量地對比不同方法準確度方面的差異,因此對案例效果做出定量分析,并解決小樣本故障問題將是未來研究的重要方向。