黃佳汲
(上海船舶運輸科學研究所有限公司,上海 200135)
隨著大數據、物聯網、云計算等科學技術能力的迅猛提升,智能船舶已成為海事界的重點研究對象,是全球航運界的未來發展趨勢。作為世界上的航運大國,我國對于船舶智能化的發展有著極大的重視。2015年,中國船級社發布了《智能船舶規范2015》;2020年,中國船級社在更新的《智能船舶規范2020》中增加了遠程控制船舶和自主操作船舶在設備配備、狀態監測與健康管理、設計原則與性能等方面的要求;工業與信息化部也于2017年成立了智能船舶專項,并聯合多部委編制相應的智能船舶發展的行動計劃[1]。
智能機艙是智能船舶的功能之一,依據《智能船舶規范2020》,智能機艙應具備基于狀態監測數據對設備與系統的運行狀態、健康狀況進行分析和評估的能力[2]。智能設備故障診斷與健康管理是基于狀態維修的升級發展,聚焦于復雜工程設備的健康狀態監測和管理,可通過經驗知識完成對監測設備的運行狀態(包括設備結構、故障失效機理、運動學原理、設計制造、安裝運行和后期維修等)識別預測,從而判斷運行機制,分析故障原因,確定故障程度,達到降低成本、提高效率、使設備安全可靠運行的目的。智能船舶作為航運新領域,目前正處在發展初期,還存在設備故障預測能力較弱、數字化管理水平欠缺等不足[3]。
在現有的研究中,文獻[4]提出了一種以麻雀搜索算法優化SVM作為故障分類器,以LSTM作為趨勢預測器的故障預測方法;文獻[5]提出了一種基于CNN-GRU組合神經網絡的變壓器短期故障預測方法,并在與SVM、LSTM、GRU、CNN-LSTM的對比中獲得了更好的預測精度。目前在時間序列的問題上,普遍使用循環神經網絡作為預測模型。
循環神經網絡固有的順序屬性,使得訓練樣本間無法進行并行訓練,因此這一類模型在時間性能上受到了限制。而Transformer架構的提出,很好地解決了這一問題,通過多頭注意力機制的使用,突破了循環神經網絡不能并行計算的限制。本文的目標是嘗試將主要用于自然語言處理的Transformer架構應用在趨勢預測上,并結合基于機器學習的故障診斷,提出一套比循環神經網絡更高效的故障預測方法。
本文的數據來自某液體散貨輪最近一年的實船數據,在建立故障診斷基準值時所使用的為秒級數據,在使用Transformer進行趨勢預測時所使用的為分鐘級數據。本文數據分析所用的語言為Python,主要的第三方庫為numpy、pandas、matplotlib、sklearn以及pytorch。
本文方法主要分為三步:首先是數據預處理,對歷史數據進行篩選,選出平穩運行時間段的數據,減少異常值的影響;然后是通過歷史數據對模型進行訓練,使用多項式回歸建立平穩運行狀態下設備運行的基準值模型,使用Transformer建立設備運行趨勢預測模型;最后通過預測數據與基準值的比較判斷設備運行是否處于正常狀態,總體框架如圖1所示。

圖1 總體框架
由于本文的數據集體量較大,因此對于常見的缺失值問題可以直接采用刪除該條記錄的方法進行處理。數據預處理的重點工作是篩選運行狀態平穩的數據區間,實船在航行的過程中,運行狀態并非總是保持較為平穩的狀態(如圖2所示),而在非平穩狀態下記錄的數據會存在大量異常點,影響模型的訓練,因此需要對數據進行篩選。

圖2 負荷概覽
本研究通過實踐探索了一種滑動窗口的方法,通過對按時間排列的歷史數據分段擬合并求導,對導函數依據其輸入范圍按一定的間隔求解,并設定一個上界,若所有結果均小于上界,則認為該段數據為穩定工況;若任意一個求解結果超過了上界,則認為該段數據不是穩定工況,并將之前所有相鄰的穩定工況分段連接,獲得一個穩定工況時間段的起止時間,完成判斷后將窗口前推,繼續判斷下一段數據(如圖3所示)。

圖3 滑動窗口演示
關鍵代碼示例:


故障診斷基準值方法建立在船舶設備運行時的關聯性上,如柴油機在運行時,負荷越高,往往轉速越快,排氣溫度越高,使用時一般使用負荷作為輸入。建立故障診斷基準值模型前首先要對測點進行相關性分析,相關性分析采用皮爾遜相關系數,該系數廣泛用于度量兩個變量之間的相關程度,其值介于-1與1之間。兩個變量之間的皮爾遜相關系數定義為兩個變量之間的協方差和標準差的商,如式(1)所示。
在確定了兩個測點之間的相關性之后,需要通過機器學習的方法建立測點之間的回歸模型,本文選擇多項式回歸作為故障診斷的基準值模型。
多項式回歸的公式如式(2)所示,回歸的目的是找到一組w0,w1,…,wd,使得擬合方程盡可能與實際樣本數據相符合,一般使用最小二乘法實現梯度下降,本文選擇最高次為3次的多項式回歸。
本文采用Transformer實現設備運行狀態趨勢預測,Transformer[6]是一種模型架構,它的提出改變了以往序列問題建模和循環神經網絡之間劃等號的思路。目前,Transformer已被廣泛應用于自然語言處理、計算機視覺、音頻處理等許多人工智能領域,并取得了巨大的成功。
文獻[7]中BERT模型取得了NLP領域11項任務的最佳成績,而在BERT中發揮重要作用的結構就是Transformer,之后相繼出現的XLNET、roBERT等模型擊敗了BERT,但是這些模型的核心沒有變,仍然是Transformer。
相比之前占領市場的LSTM和GRU模型,Transformer有兩個顯著的優勢:
(1)Transformer能夠利用分布式GPU進行并行訓練,提升模型訓練效率。
(2)在分析預測更長的文本時,捕捉間隔較長的語義關聯效果更好。
Transformer模型采用的是編碼器-解碼器架構,在該模型中,編碼器和解碼器不再使用循環神經網絡,而是使用連續N個具有相同結構的編碼器和解碼器所連接的網絡結構。Transformer總體架構圖如圖4所示。

圖4 Transformer總體架構圖
每一個編碼器中又包含兩個串聯的子層連接結構,其中一個為多頭注意力層,另一個為前饋全連接層。多頭注意力層的作用是分割輸出的張量,分別進行注意力計算,前饋全連接層則是考慮注意力機制可能對復雜過程的擬合程度不夠,通過增加兩層網絡來增強模型的能力,每個子網絡都具有殘差連接。在每個解碼器中,除了包含與解碼器類似的多頭注意力層和前饋全連接層外,還在兩個子網絡之間添加了另外一個注意力模塊。與編碼器類似,解碼器中的三個子網絡也均具有殘差連接,并且在每個殘差合成后都進行歸一化操作[8]。
首先使用前文提到的滑動窗口方法對時間段進行篩選,經過檢驗,這一方法可以很好地篩選出平穩時間段的數據,見表1。

表1 平穩運行時間段
本文以主機負荷、主機轉速、掃氣壓力、增壓器轉速四個測點為例,選取歷史數據,使用pandas自帶的corr函數計算相關性矩陣,并使用seaborn庫提供的heatmap展示測點之間的相關性,結果如圖5所示。

圖5 相關性分析
選取主機負荷與增壓器轉速這兩個測點,將平穩運行時間段數據合并,在其中隨機選取10000個作為測試集,其余作為訓練集,使用多項式回歸的方式建立以主機負荷作為輸入,增壓器轉速作為輸出的回歸模型。通過對篩選出的數據進行訓練,模型在測試集上的結果如圖6所示。

圖6 主機負荷與增壓器轉速擬合
可以看出,主機負荷與增壓器轉速之間的關系較好地符合連續函數的特點,多項式回歸的r2得分在0.9以上,擬合程度較高。在模型的保存和使用上,多項式回歸模型只需要存儲一組系數即可做到隨時取用,即使跨語言使用也非常便捷。
完成故障診斷基準值的建立后,需要再建立測點的趨勢預測模型,預測模型采用Transformer架構來建立。本文使用主機轉速作為樣例,通過pytorch搭建Transformer模型,嘗試通過前8個歷史數據預測后1個數據。
首先創建一個Transformer架構的模型,考慮到本文研究的并不是機器翻譯問題,而是一個短序列預測的問題,因此在構建模型時舍棄了文本嵌入層和位置編碼器。同時為了驗證此模型對于循環神經網絡的性能優勢,額外引入一個GRU模型作為對照。
代碼示例:


在參數選擇上,設置Transformer模型的詞嵌入維度為8,多頭注意力層的頭數為4,置零比率為0,編碼器和解碼器的層數都為1,并通過一個全連接層將輸出張量的特征維度轉換為1。設置GRU模型輸入張量的特征維度為2,隱層張量特征維度為4,隱含層的數量為1,同樣通過一個全連接層將輸出張量的特征維度轉換為1。
完成模型建立后,在實船數據上開始測試,隨機取某一平穩運行時間段的31個連續數據,選擇前30個作為訓練集,從頭開始每次取9個數據,前8個作為輸入,最后一個為真值,反向傳播后將起始位置前推一位,重復訓練過程,當起始位置大于21后將起始位置重新設為0。選擇均方誤差作為損失函數,選擇Adam優化器并設置學習率為0.01,設置訓練退出條件為最近22次損失函數結果均值小于0.5。
代碼示例:


根據測試結果,GRU模型和Transformer模型均可以使損失函數收斂在0.5以內,在時間消耗上,Transformer模型平均在1秒左右,而實現同樣的均方誤差GRU模型所需的時間平均在6秒以上,Transformer的性能優勢非常顯著。
完成訓練后,以第23到第30個數據為輸入,第31個數據作為真值,測試結果如圖7所示。

圖7 預測效果
可以看到,數據在測試集上的預測結果和真值基本重合,預測效果較好。至此,故障預測的全部步驟驗證完成。
本文圍繞Transformer建立一套相比循環神經網絡更高效的故障預測方法。在數據預處理上,使用一種滑動窗口的方法篩選平穩數據,取得了良好的結果;在故障診斷上,使用多項式回歸,通過對歷史數據的訓練,模型的r2得分達到0.9以上,證明模型的準確度較高;在趨勢預測上,將Transformer架構應用于船舶運行狀態的趨勢預測,并與GRU網絡進行了比較,證明Transformer的時間性能相對循環神經網絡有顯著優勢,并可以做出較為精準的預測。綜上所述,本文提出的方法有一定的實踐意義。本方法的主要缺陷在于缺少故障環境,由于故障的發生屬于小概率事件,隨機性很強,因此故障數據的收集較為困難,本文的測試數據為正常運行狀態下的數據,缺少真實故障數據的驗證,在未來的研究中,如何有效收集真實故障數據是需要關注的重點。