黃佳汲
(上海船舶運(yùn)輸科學(xué)研究所有限公司,上海 200135)
隨著大數(shù)據(jù)、物聯(lián)網(wǎng)、云計(jì)算等科學(xué)技術(shù)能力的迅猛提升,智能船舶已成為海事界的重點(diǎn)研究對(duì)象,是全球航運(yùn)界的未來(lái)發(fā)展趨勢(shì)。作為世界上的航運(yùn)大國(guó),我國(guó)對(duì)于船舶智能化的發(fā)展有著極大的重視。2015年,中國(guó)船級(jí)社發(fā)布了《智能船舶規(guī)范2015》;2020年,中國(guó)船級(jí)社在更新的《智能船舶規(guī)范2020》中增加了遠(yuǎn)程控制船舶和自主操作船舶在設(shè)備配備、狀態(tài)監(jiān)測(cè)與健康管理、設(shè)計(jì)原則與性能等方面的要求;工業(yè)與信息化部也于2017年成立了智能船舶專(zhuān)項(xiàng),并聯(lián)合多部委編制相應(yīng)的智能船舶發(fā)展的行動(dòng)計(jì)劃[1]。
智能機(jī)艙是智能船舶的功能之一,依據(jù)《智能船舶規(guī)范2020》,智能機(jī)艙應(yīng)具備基于狀態(tài)監(jiān)測(cè)數(shù)據(jù)對(duì)設(shè)備與系統(tǒng)的運(yùn)行狀態(tài)、健康狀況進(jìn)行分析和評(píng)估的能力[2]。智能設(shè)備故障診斷與健康管理是基于狀態(tài)維修的升級(jí)發(fā)展,聚焦于復(fù)雜工程設(shè)備的健康狀態(tài)監(jiān)測(cè)和管理,可通過(guò)經(jīng)驗(yàn)知識(shí)完成對(duì)監(jiān)測(cè)設(shè)備的運(yùn)行狀態(tài)(包括設(shè)備結(jié)構(gòu)、故障失效機(jī)理、運(yùn)動(dòng)學(xué)原理、設(shè)計(jì)制造、安裝運(yùn)行和后期維修等)識(shí)別預(yù)測(cè),從而判斷運(yùn)行機(jī)制,分析故障原因,確定故障程度,達(dá)到降低成本、提高效率、使設(shè)備安全可靠運(yùn)行的目的。智能船舶作為航運(yùn)新領(lǐng)域,目前正處在發(fā)展初期,還存在設(shè)備故障預(yù)測(cè)能力較弱、數(shù)字化管理水平欠缺等不足[3]。
在現(xiàn)有的研究中,文獻(xiàn)[4]提出了一種以麻雀搜索算法優(yōu)化SVM作為故障分類(lèi)器,以LSTM作為趨勢(shì)預(yù)測(cè)器的故障預(yù)測(cè)方法;文獻(xiàn)[5]提出了一種基于CNN-GRU組合神經(jīng)網(wǎng)絡(luò)的變壓器短期故障預(yù)測(cè)方法,并在與SVM、LSTM、GRU、CNN-LSTM的對(duì)比中獲得了更好的預(yù)測(cè)精度。目前在時(shí)間序列的問(wèn)題上,普遍使用循環(huán)神經(jīng)網(wǎng)絡(luò)作為預(yù)測(cè)模型。
循環(huán)神經(jīng)網(wǎng)絡(luò)固有的順序?qū)傩?,使得?xùn)練樣本間無(wú)法進(jìn)行并行訓(xùn)練,因此這一類(lèi)模型在時(shí)間性能上受到了限制。而Transformer架構(gòu)的提出,很好地解決了這一問(wèn)題,通過(guò)多頭注意力機(jī)制的使用,突破了循環(huán)神經(jīng)網(wǎng)絡(luò)不能并行計(jì)算的限制。本文的目標(biāo)是嘗試將主要用于自然語(yǔ)言處理的Transformer架構(gòu)應(yīng)用在趨勢(shì)預(yù)測(cè)上,并結(jié)合基于機(jī)器學(xué)習(xí)的故障診斷,提出一套比循環(huán)神經(jīng)網(wǎng)絡(luò)更高效的故障預(yù)測(cè)方法。
本文的數(shù)據(jù)來(lái)自某液體散貨輪最近一年的實(shí)船數(shù)據(jù),在建立故障診斷基準(zhǔn)值時(shí)所使用的為秒級(jí)數(shù)據(jù),在使用Transformer進(jìn)行趨勢(shì)預(yù)測(cè)時(shí)所使用的為分鐘級(jí)數(shù)據(jù)。本文數(shù)據(jù)分析所用的語(yǔ)言為Python,主要的第三方庫(kù)為numpy、pandas、matplotlib、sklearn以及pytorch。
本文方法主要分為三步:首先是數(shù)據(jù)預(yù)處理,對(duì)歷史數(shù)據(jù)進(jìn)行篩選,選出平穩(wěn)運(yùn)行時(shí)間段的數(shù)據(jù),減少異常值的影響;然后是通過(guò)歷史數(shù)據(jù)對(duì)模型進(jìn)行訓(xùn)練,使用多項(xiàng)式回歸建立平穩(wěn)運(yùn)行狀態(tài)下設(shè)備運(yùn)行的基準(zhǔn)值模型,使用Transformer建立設(shè)備運(yùn)行趨勢(shì)預(yù)測(cè)模型;最后通過(guò)預(yù)測(cè)數(shù)據(jù)與基準(zhǔn)值的比較判斷設(shè)備運(yùn)行是否處于正常狀態(tài),總體框架如圖1所示。
圖1 總體框架
由于本文的數(shù)據(jù)集體量較大,因此對(duì)于常見(jiàn)的缺失值問(wèn)題可以直接采用刪除該條記錄的方法進(jìn)行處理。數(shù)據(jù)預(yù)處理的重點(diǎn)工作是篩選運(yùn)行狀態(tài)平穩(wěn)的數(shù)據(jù)區(qū)間,實(shí)船在航行的過(guò)程中,運(yùn)行狀態(tài)并非總是保持較為平穩(wěn)的狀態(tài)(如圖2所示),而在非平穩(wěn)狀態(tài)下記錄的數(shù)據(jù)會(huì)存在大量異常點(diǎn),影響模型的訓(xùn)練,因此需要對(duì)數(shù)據(jù)進(jìn)行篩選。
圖2 負(fù)荷概覽
本研究通過(guò)實(shí)踐探索了一種滑動(dòng)窗口的方法,通過(guò)對(duì)按時(shí)間排列的歷史數(shù)據(jù)分段擬合并求導(dǎo),對(duì)導(dǎo)函數(shù)依據(jù)其輸入范圍按一定的間隔求解,并設(shè)定一個(gè)上界,若所有結(jié)果均小于上界,則認(rèn)為該段數(shù)據(jù)為穩(wěn)定工況;若任意一個(gè)求解結(jié)果超過(guò)了上界,則認(rèn)為該段數(shù)據(jù)不是穩(wěn)定工況,并將之前所有相鄰的穩(wěn)定工況分段連接,獲得一個(gè)穩(wěn)定工況時(shí)間段的起止時(shí)間,完成判斷后將窗口前推,繼續(xù)判斷下一段數(shù)據(jù)(如圖3所示)。
圖3 滑動(dòng)窗口演示
關(guān)鍵代碼示例:
故障診斷基準(zhǔn)值方法建立在船舶設(shè)備運(yùn)行時(shí)的關(guān)聯(lián)性上,如柴油機(jī)在運(yùn)行時(shí),負(fù)荷越高,往往轉(zhuǎn)速越快,排氣溫度越高,使用時(shí)一般使用負(fù)荷作為輸入。建立故障診斷基準(zhǔn)值模型前首先要對(duì)測(cè)點(diǎn)進(jìn)行相關(guān)性分析,相關(guān)性分析采用皮爾遜相關(guān)系數(shù),該系數(shù)廣泛用于度量?jī)蓚€(gè)變量之間的相關(guān)程度,其值介于-1與1之間。兩個(gè)變量之間的皮爾遜相關(guān)系數(shù)定義為兩個(gè)變量之間的協(xié)方差和標(biāo)準(zhǔn)差的商,如式(1)所示。
在確定了兩個(gè)測(cè)點(diǎn)之間的相關(guān)性之后,需要通過(guò)機(jī)器學(xué)習(xí)的方法建立測(cè)點(diǎn)之間的回歸模型,本文選擇多項(xiàng)式回歸作為故障診斷的基準(zhǔn)值模型。
多項(xiàng)式回歸的公式如式(2)所示,回歸的目的是找到一組w0,w1,…,wd,使得擬合方程盡可能與實(shí)際樣本數(shù)據(jù)相符合,一般使用最小二乘法實(shí)現(xiàn)梯度下降,本文選擇最高次為3次的多項(xiàng)式回歸。
本文采用Transformer實(shí)現(xiàn)設(shè)備運(yùn)行狀態(tài)趨勢(shì)預(yù)測(cè),Transformer[6]是一種模型架構(gòu),它的提出改變了以往序列問(wèn)題建模和循環(huán)神經(jīng)網(wǎng)絡(luò)之間劃等號(hào)的思路。目前,Transformer已被廣泛應(yīng)用于自然語(yǔ)言處理、計(jì)算機(jī)視覺(jué)、音頻處理等許多人工智能領(lǐng)域,并取得了巨大的成功。
文獻(xiàn)[7]中BERT模型取得了NLP領(lǐng)域11項(xiàng)任務(wù)的最佳成績(jī),而在BERT中發(fā)揮重要作用的結(jié)構(gòu)就是Transformer,之后相繼出現(xiàn)的XLNET、roBERT等模型擊敗了BERT,但是這些模型的核心沒(méi)有變,仍然是Transformer。
相比之前占領(lǐng)市場(chǎng)的LSTM和GRU模型,Transformer有兩個(gè)顯著的優(yōu)勢(shì):
(1)Transformer能夠利用分布式GPU進(jìn)行并行訓(xùn)練,提升模型訓(xùn)練效率。
(2)在分析預(yù)測(cè)更長(zhǎng)的文本時(shí),捕捉間隔較長(zhǎng)的語(yǔ)義關(guān)聯(lián)效果更好。
Transformer模型采用的是編碼器-解碼器架構(gòu),在該模型中,編碼器和解碼器不再使用循環(huán)神經(jīng)網(wǎng)絡(luò),而是使用連續(xù)N個(gè)具有相同結(jié)構(gòu)的編碼器和解碼器所連接的網(wǎng)絡(luò)結(jié)構(gòu)。Transformer總體架構(gòu)圖如圖4所示。
圖4 Transformer總體架構(gòu)圖
每一個(gè)編碼器中又包含兩個(gè)串聯(lián)的子層連接結(jié)構(gòu),其中一個(gè)為多頭注意力層,另一個(gè)為前饋全連接層。多頭注意力層的作用是分割輸出的張量,分別進(jìn)行注意力計(jì)算,前饋全連接層則是考慮注意力機(jī)制可能對(duì)復(fù)雜過(guò)程的擬合程度不夠,通過(guò)增加兩層網(wǎng)絡(luò)來(lái)增強(qiáng)模型的能力,每個(gè)子網(wǎng)絡(luò)都具有殘差連接。在每個(gè)解碼器中,除了包含與解碼器類(lèi)似的多頭注意力層和前饋全連接層外,還在兩個(gè)子網(wǎng)絡(luò)之間添加了另外一個(gè)注意力模塊。與編碼器類(lèi)似,解碼器中的三個(gè)子網(wǎng)絡(luò)也均具有殘差連接,并且在每個(gè)殘差合成后都進(jìn)行歸一化操作[8]。
首先使用前文提到的滑動(dòng)窗口方法對(duì)時(shí)間段進(jìn)行篩選,經(jīng)過(guò)檢驗(yàn),這一方法可以很好地篩選出平穩(wěn)時(shí)間段的數(shù)據(jù),見(jiàn)表1。
表1 平穩(wěn)運(yùn)行時(shí)間段
本文以主機(jī)負(fù)荷、主機(jī)轉(zhuǎn)速、掃氣壓力、增壓器轉(zhuǎn)速四個(gè)測(cè)點(diǎn)為例,選取歷史數(shù)據(jù),使用pandas自帶的corr函數(shù)計(jì)算相關(guān)性矩陣,并使用seaborn庫(kù)提供的heatmap展示測(cè)點(diǎn)之間的相關(guān)性,結(jié)果如圖5所示。
圖5 相關(guān)性分析
選取主機(jī)負(fù)荷與增壓器轉(zhuǎn)速這兩個(gè)測(cè)點(diǎn),將平穩(wěn)運(yùn)行時(shí)間段數(shù)據(jù)合并,在其中隨機(jī)選取10000個(gè)作為測(cè)試集,其余作為訓(xùn)練集,使用多項(xiàng)式回歸的方式建立以主機(jī)負(fù)荷作為輸入,增壓器轉(zhuǎn)速作為輸出的回歸模型。通過(guò)對(duì)篩選出的數(shù)據(jù)進(jìn)行訓(xùn)練,模型在測(cè)試集上的結(jié)果如圖6所示。
圖6 主機(jī)負(fù)荷與增壓器轉(zhuǎn)速擬合
可以看出,主機(jī)負(fù)荷與增壓器轉(zhuǎn)速之間的關(guān)系較好地符合連續(xù)函數(shù)的特點(diǎn),多項(xiàng)式回歸的r2得分在0.9以上,擬合程度較高。在模型的保存和使用上,多項(xiàng)式回歸模型只需要存儲(chǔ)一組系數(shù)即可做到隨時(shí)取用,即使跨語(yǔ)言使用也非常便捷。
完成故障診斷基準(zhǔn)值的建立后,需要再建立測(cè)點(diǎn)的趨勢(shì)預(yù)測(cè)模型,預(yù)測(cè)模型采用Transformer架構(gòu)來(lái)建立。本文使用主機(jī)轉(zhuǎn)速作為樣例,通過(guò)pytorch搭建Transformer模型,嘗試通過(guò)前8個(gè)歷史數(shù)據(jù)預(yù)測(cè)后1個(gè)數(shù)據(jù)。
首先創(chuàng)建一個(gè)Transformer架構(gòu)的模型,考慮到本文研究的并不是機(jī)器翻譯問(wèn)題,而是一個(gè)短序列預(yù)測(cè)的問(wèn)題,因此在構(gòu)建模型時(shí)舍棄了文本嵌入層和位置編碼器。同時(shí)為了驗(yàn)證此模型對(duì)于循環(huán)神經(jīng)網(wǎng)絡(luò)的性能優(yōu)勢(shì),額外引入一個(gè)GRU模型作為對(duì)照。
代碼示例:
在參數(shù)選擇上,設(shè)置Transformer模型的詞嵌入維度為8,多頭注意力層的頭數(shù)為4,置零比率為0,編碼器和解碼器的層數(shù)都為1,并通過(guò)一個(gè)全連接層將輸出張量的特征維度轉(zhuǎn)換為1。設(shè)置GRU模型輸入張量的特征維度為2,隱層張量特征維度為4,隱含層的數(shù)量為1,同樣通過(guò)一個(gè)全連接層將輸出張量的特征維度轉(zhuǎn)換為1。
完成模型建立后,在實(shí)船數(shù)據(jù)上開(kāi)始測(cè)試,隨機(jī)取某一平穩(wěn)運(yùn)行時(shí)間段的31個(gè)連續(xù)數(shù)據(jù),選擇前30個(gè)作為訓(xùn)練集,從頭開(kāi)始每次取9個(gè)數(shù)據(jù),前8個(gè)作為輸入,最后一個(gè)為真值,反向傳播后將起始位置前推一位,重復(fù)訓(xùn)練過(guò)程,當(dāng)起始位置大于21后將起始位置重新設(shè)為0。選擇均方誤差作為損失函數(shù),選擇Adam優(yōu)化器并設(shè)置學(xué)習(xí)率為0.01,設(shè)置訓(xùn)練退出條件為最近22次損失函數(shù)結(jié)果均值小于0.5。
代碼示例:
根據(jù)測(cè)試結(jié)果,GRU模型和Transformer模型均可以使損失函數(shù)收斂在0.5以內(nèi),在時(shí)間消耗上,Transformer模型平均在1秒左右,而實(shí)現(xiàn)同樣的均方誤差GRU模型所需的時(shí)間平均在6秒以上,Transformer的性能優(yōu)勢(shì)非常顯著。
完成訓(xùn)練后,以第23到第30個(gè)數(shù)據(jù)為輸入,第31個(gè)數(shù)據(jù)作為真值,測(cè)試結(jié)果如圖7所示。
圖7 預(yù)測(cè)效果
可以看到,數(shù)據(jù)在測(cè)試集上的預(yù)測(cè)結(jié)果和真值基本重合,預(yù)測(cè)效果較好。至此,故障預(yù)測(cè)的全部步驟驗(yàn)證完成。
本文圍繞Transformer建立一套相比循環(huán)神經(jīng)網(wǎng)絡(luò)更高效的故障預(yù)測(cè)方法。在數(shù)據(jù)預(yù)處理上,使用一種滑動(dòng)窗口的方法篩選平穩(wěn)數(shù)據(jù),取得了良好的結(jié)果;在故障診斷上,使用多項(xiàng)式回歸,通過(guò)對(duì)歷史數(shù)據(jù)的訓(xùn)練,模型的r2得分達(dá)到0.9以上,證明模型的準(zhǔn)確度較高;在趨勢(shì)預(yù)測(cè)上,將Transformer架構(gòu)應(yīng)用于船舶運(yùn)行狀態(tài)的趨勢(shì)預(yù)測(cè),并與GRU網(wǎng)絡(luò)進(jìn)行了比較,證明Transformer的時(shí)間性能相對(duì)循環(huán)神經(jīng)網(wǎng)絡(luò)有顯著優(yōu)勢(shì),并可以做出較為精準(zhǔn)的預(yù)測(cè)。綜上所述,本文提出的方法有一定的實(shí)踐意義。本方法的主要缺陷在于缺少故障環(huán)境,由于故障的發(fā)生屬于小概率事件,隨機(jī)性很強(qiáng),因此故障數(shù)據(jù)的收集較為困難,本文的測(cè)試數(shù)據(jù)為正常運(yùn)行狀態(tài)下的數(shù)據(jù),缺少真實(shí)故障數(shù)據(jù)的驗(yàn)證,在未來(lái)的研究中,如何有效收集真實(shí)故障數(shù)據(jù)是需要關(guān)注的重點(diǎn)。