荊昱陽,張利強(qiáng)
(1.北京郵電大學(xué),北京 100876;2.北京機(jī)械工業(yè)自動(dòng)化研究所有限公司,北京 100120)
以大數(shù)據(jù)(Big Data)為基礎(chǔ)的機(jī)器學(xué)習(xí)(Machine Learning)、人工智能(Artificial Intelligence)和深度學(xué)習(xí)(Deep Learning)是當(dāng)前信息技術(shù)領(lǐng)域最重要的發(fā)展領(lǐng)域。隨著計(jì)算能力的提升和軟件技術(shù)的發(fā)展,2012年以后深度學(xué)習(xí)再次成為研究和應(yīng)用領(lǐng)域的熱點(diǎn),在音視頻數(shù)據(jù)處理、語音識(shí)別、高維高頻傳感器數(shù)據(jù)處理等領(lǐng)域得到了廣泛的應(yīng)用。
自2015年谷歌公司以開源形式發(fā)布深度學(xué)習(xí)框架TensorFlow以來,進(jìn)一步簡化了深度學(xué)習(xí)模型的開發(fā)和部署過程,推動(dòng)了深度學(xué)習(xí)由理論研究向?qū)嵺`應(yīng)用的發(fā)展。目前比較流行的深度學(xué)習(xí)框架主要有兩個(gè):一個(gè)是TensorFlow,另一個(gè)是Pytorch。Pytorch由Facebook于2018年5月開源發(fā)布。盡管Pytorch的發(fā)布晚于TensorFlow,但在短短的幾年內(nèi)已成為重要的深度學(xué)習(xí)開源框架,特別是在科研領(lǐng)域得到了大量的應(yīng)用[1]。
在深度學(xué)習(xí)的應(yīng)用領(lǐng)域中,時(shí)間序列數(shù)據(jù)(Time series data)是一類常見的數(shù)據(jù),其主要特征是數(shù)據(jù)存在時(shí)間上的相關(guān)性?,F(xiàn)實(shí)生活中,具有時(shí)間序列特征的數(shù)據(jù)非常多,常見的如股票交易數(shù)據(jù)、大氣相關(guān)數(shù)據(jù)、企業(yè)的銷售數(shù)據(jù)、人體的生理指標(biāo)、傳感器數(shù)據(jù)等。掌握時(shí)間序列的波動(dòng)特征、了解數(shù)據(jù)變化規(guī)律并預(yù)測未來是時(shí)間序列分析的主要目的。在深度學(xué)習(xí)得到廣泛應(yīng)用之前,人們主要采用統(tǒng)計(jì)學(xué)方法進(jìn)行時(shí)間序列分析,其中以自回歸移動(dòng)平均(Auto-regressive moving average)模型[2,3]和差分自回歸移動(dòng)平均(Auto-regressive Integrated Moving Average)模型[4,5]的應(yīng)用最為廣泛。近年來,隨著數(shù)據(jù)采集、存儲(chǔ)技術(shù)的發(fā)展,高頻高維時(shí)間序列數(shù)據(jù)已變得越來越常見,例如間隔為秒級(jí)的股票交易數(shù)據(jù)、間隔為毫秒級(jí)的傳感器數(shù)據(jù)等。由于統(tǒng)計(jì)方法在處理高頻高維時(shí)間序列數(shù)據(jù)存在的局限性,采用深度學(xué)習(xí)方法處理時(shí)間序列數(shù)據(jù)正受到越來越多的關(guān)注。本文主要關(guān)注用于時(shí)間數(shù)列分析的深度學(xué)習(xí)方法——長短期記憶(Long short-term memory,LSTM)網(wǎng)絡(luò)的基本原理,并介紹了基于Pytorch開源框架的實(shí)現(xiàn)和應(yīng)用。
LSTM是一種特殊的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent neural network,RNN)。RNN具有循環(huán)網(wǎng)絡(luò)結(jié)構(gòu),能夠處理需要記憶(歷史數(shù)據(jù)的影響)的時(shí)間序列數(shù)據(jù),RNN采用如圖1所示的結(jié)構(gòu)。圖1中表示輸入層和隱含層連接權(quán)重;表示隱含層和輸出層連接權(quán)重;和分別表示隱含層和輸出層的偏置;表示t時(shí)刻的輸入;h表示隱含層輸出;表示t時(shí)刻的輸出;表示第t-1時(shí)刻隱含層的輸出。RNN為了處理時(shí)間序列數(shù)據(jù),將隱含層節(jié)點(diǎn)之間互相連接,使得隱含層的輸入不僅包含當(dāng)前輸入數(shù)據(jù),還包含上一時(shí)刻隱含層的輸出。通過這種方式,RNN實(shí)現(xiàn)了對(duì)歷史信息的記憶。但是,當(dāng)RNN處理長度比較大的時(shí)間序列時(shí),存在梯度爆炸和梯度消失的問題,而且RNN難以保持較長時(shí)間的記憶[6]。
圖1 RNN網(wǎng)絡(luò)結(jié)構(gòu)
LSTM網(wǎng)絡(luò)是特殊的RNN網(wǎng)絡(luò),能夠?qū)W習(xí)并記憶序列長期信息的遞歸模型,其組成結(jié)構(gòu)如圖2所示。LSTM神經(jīng)元專門設(shè)計(jì)了記憶單元(memory cell)用于保存歷史信息。歷史信息通過輸入門(Input gate)、遺忘門(Forget gate)和輸出門(Output gate)的控制進(jìn)行信息更新。其中sig和tanh為表示sigmoid和tanh激活函數(shù),期作用分別是把輸入轉(zhuǎn)換為區(qū)間(0,1)和(-1,1)內(nèi)的數(shù),定義為:
圖2 LSTM網(wǎng)絡(luò)結(jié)構(gòu)
遺忘門:通過一個(gè)逐點(diǎn)相乘的操作,實(shí)現(xiàn)選擇性的信息通過,其數(shù)學(xué)表達(dá)式為:
輸入門:決定單元狀態(tài)中保存的信息哪些需要更新,通過一個(gè)sigmoid層和一個(gè)tanh層實(shí)現(xiàn),其數(shù)學(xué)表達(dá)式為:
輸出門:決定LSTM單元輸出的內(nèi)容,包括網(wǎng)絡(luò)輸出和網(wǎng)絡(luò)狀態(tài),其數(shù)學(xué)表達(dá)式為:
LSTM改善了RNN網(wǎng)絡(luò)存在的問題,在處理非線性模型方面體現(xiàn)出了很好的性能,并且適用于構(gòu)造大型深度神經(jīng)網(wǎng)絡(luò)。
Pytorch的神經(jīng)網(wǎng)絡(luò)(nn)模塊實(shí)現(xiàn)了LSTM方法,可以通過調(diào)用nn的LSTM方法構(gòu)建LSTM網(wǎng)絡(luò),下面列給出了LSTM網(wǎng)絡(luò)的python代碼。
LSTM網(wǎng)絡(luò)的定義:
以某加工過程中溫度監(jiān)控曲線為例。在一個(gè)正產(chǎn)周期內(nèi),溫度經(jīng)歷升溫、保持、降溫三個(gè)階段。由于生產(chǎn)過程存在多種因素的影響,測得的溫度有波動(dòng)。一個(gè)生產(chǎn)周期測得的數(shù)據(jù)經(jīng)標(biāo)準(zhǔn)化處理后如圖3所示。
圖3 一個(gè)生產(chǎn)周期測得的溫度數(shù)據(jù)
在這里,首先使用移動(dòng)窗口方法將時(shí)間序列數(shù)據(jù)轉(zhuǎn)換為LSTM網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù),將窗口寬度設(shè)為5。此時(shí),表示用前5個(gè)觀測數(shù)據(jù)預(yù)測第6個(gè)數(shù)據(jù)。使用上一節(jié)建立的LSTM模型,初始化參數(shù)為5,8和1,即輸入數(shù)據(jù)的長度為5,隱含層節(jié)點(diǎn)數(shù)為8,輸出數(shù)據(jù)的長度為1。經(jīng)1000次訓(xùn)練,均方誤差(Mean squared error,MSE)指標(biāo)逐步減小,顯示LSTM網(wǎng)絡(luò)對(duì)數(shù)據(jù)有了較好的擬合,過程如圖4所示,圖5給出了數(shù)據(jù)的擬合結(jié)果。
圖4 LSTM訓(xùn)練過程
圖5 數(shù)據(jù)擬合結(jié)果
圍繞某加工過程中溫度監(jiān)控曲線為例,針對(duì)一個(gè)生產(chǎn)周期測得的數(shù)據(jù),考慮到數(shù)據(jù)的特征,采用曲線擬合加平滑的方法對(duì)觀測數(shù)據(jù)進(jìn)行擬合,并將結(jié)果與與LSTM擬合進(jìn)行對(duì)比。圖6給出了兩種方法對(duì)數(shù)據(jù)的擬合結(jié)果,結(jié)果顯示LSTM模型能夠很好的擬合數(shù)據(jù)。
圖6 數(shù)據(jù)擬合對(duì)比
兩種方法的擬合效果的均方誤差,如表1所示。從表1可以看出,相比于曲線擬合方法,深度學(xué)習(xí)方法對(duì)數(shù)據(jù)的擬合更好。
表1 深度學(xué)習(xí)和曲線擬合的均方誤差
本研究建立的LSTM訓(xùn)練深度學(xué)習(xí)模型,除了具有訓(xùn)練高擬合性優(yōu)勢外,還具備滯后數(shù)據(jù)的預(yù)測能力,可提供以下應(yīng)用功能。
1)基于多個(gè)周期的觀測數(shù)據(jù)對(duì)模型進(jìn)行反復(fù)訓(xùn)練,擬合出更精確生產(chǎn)過程的溫度曲線,為后續(xù)的過程生產(chǎn)分析及狀態(tài)預(yù)判提供基礎(chǔ);
2)采用移動(dòng)窗口方式,應(yīng)用訓(xùn)練好的模型,對(duì)后期的觀測數(shù)據(jù)進(jìn)行預(yù)測;
3)基于數(shù)據(jù)預(yù)測,對(duì)生產(chǎn)過程的穩(wěn)定性進(jìn)行預(yù)判,能夠增加檢測效果并避免過程異常的發(fā)生。
本文簡要介紹RNN和LSTM基本原理,基于Pytorch開源庫開發(fā)LSTM模型,通過實(shí)例對(duì)比分析模型性能和應(yīng)用,實(shí)現(xiàn)將LSTM應(yīng)用于時(shí)間序列數(shù)據(jù)分析。結(jié)果顯示,所構(gòu)建的LSTM模型能夠很好地?cái)M合非線性時(shí)間序列數(shù)據(jù),可用于生產(chǎn)過程的狀態(tài)分析和預(yù)測。