華一暢,黃 杰,姚衛(wèi)星,3
(1.上海機電工程研究所,上海 201109) (2.南京航空航天大學機械結(jié)構(gòu)力學及控制國家重點實驗室,江蘇 南京 210016) (3.南京航空航天大學飛行器先進設(shè)計技術(shù)國防重點學科實驗室,江蘇 南京 210016)
隨著軍事技術(shù)的不斷發(fā)展,飛行器飛行馬赫數(shù)越來越高。高超聲速飛行器由于具有遠距離巡航、高空高速等特點以及快速反應、有效攔截和打擊目標的能力,越來越受到各軍事大國的重視。高超聲速飛行器在稠密大氣層內(nèi)飛行時,空氣受到強烈壓縮和劇烈摩擦,飛行器大部分動能轉(zhuǎn)化為熱能,致使壁面溫度急劇升高[1],因此對防熱技術(shù)的要求很高。熱環(huán)境計算是結(jié)構(gòu)熱防護的出發(fā)點,因此對高超聲速飛行器進行熱環(huán)境分析具有重要意義。
高超聲速飛行器熱環(huán)境分析是一個典型的多學科問題,目前研究方法主要包括數(shù)值方法和工程方法。數(shù)值方法直接求解N-S方程或者其近似形式,對網(wǎng)格質(zhì)量、計算方法有很高要求,計算量大[2]。工程方法計算效率高,但是僅適用于簡單結(jié)構(gòu),難以拓展到復雜外形[3]。因此有必要構(gòu)建一個基于已有試驗數(shù)據(jù)的預測模型,在給定飛行參數(shù)時能對飛行器壁面熱環(huán)境進行快速評估。
本文以深度學習為基礎(chǔ)[4-5],采用tensorflow的kerasAPI構(gòu)建一個深度神經(jīng)網(wǎng)絡(luò)(deep neural networks,DNN)的回歸預測模型,提出了一種基于反向傳播算法的模型訓練方法。
深度神經(jīng)網(wǎng)絡(luò)是通過模擬信號在生物神經(jīng)元之間的傳遞構(gòu)建的,可以用來反映人腦的思維方式。按不同層的位置劃分,DNN內(nèi)部的神經(jīng)網(wǎng)絡(luò)層可以分為3類:輸入層、隱藏層和輸出層,基本結(jié)構(gòu)如圖1所示。輸入層接受輸入數(shù)據(jù)x,中間隱藏層對輸入數(shù)據(jù)進行處理,輸出層產(chǎn)生輸出數(shù)據(jù)y。神經(jīng)網(wǎng)絡(luò)的復雜程度以及表達能力取決于隱藏層的層數(shù)和每層的節(jié)點數(shù)。DNN相鄰層之間是全連接的,對于一個隱藏層總層數(shù)為L的神經(jīng)網(wǎng)絡(luò),第l層的任意一個神經(jīng)元一定與第(l-1)層的任意一個神經(jīng)元相連,用Wl表示第l層和第(l-1)層各神經(jīng)元之間的權(quán)重系數(shù)矩陣,bl表示第l層神經(jīng)元輸入對應的偏置向量,第l層神經(jīng)元的輸入zl和第(l-1)層神經(jīng)元的輸出al-1之間存在線性關(guān)系(zl=Wlal-1+bl)。第l層神經(jīng)元通過激活函數(shù)σ對該層的輸入zl和輸出al進行變換,即al=σ(zl)。激活函數(shù)向神經(jīng)網(wǎng)絡(luò)中引入非線性,提高了神經(jīng)網(wǎng)絡(luò)對于復雜問題的表達能力,激活函數(shù)的選擇一般根據(jù)實際問題的性質(zhì)確定。
圖1 深度神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)
本文選擇線性整流函數(shù)(rectified linear unit,ReLU)作為激活函數(shù),其表達式為σ(x)=max(0,x),其中的x為本層神經(jīng)網(wǎng)絡(luò)的輸入向量。相比于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)激活函數(shù),線性整流函數(shù)計算過程簡單,在訓練中梯度下降以及反向傳播更加高效,同時可以避免梯度爆炸和梯度消失的問題[6]。
對于k個訓練樣本{(x1,y1),(x2,y2),…,(xk,yk)},樣本的輸入輸出分別為x,y。通過反向傳播算法訓練DNN模型,目的是找到合適的隱藏層對應的權(quán)重系數(shù)矩陣W和偏置向量b,讓所有訓練樣本的預測值盡可能接近真實值。
損失函數(shù)用來計算模型預測值與樣本真實值之間的誤差,本文采用最常見的均方誤差來度量損失,對于一個輸出參數(shù),定義其損失函數(shù)J為:
(1)
通過反向傳播算法逐層求出損失函數(shù)對各層神經(jīng)元Wl,bl的偏導數(shù),構(gòu)成損失函數(shù)對Wl和bl的梯度,作為修改權(quán)重的依據(jù)。神經(jīng)網(wǎng)絡(luò)的學習在權(quán)重修改過程中完成。誤差達到所期望值時,神經(jīng)網(wǎng)絡(luò)學習結(jié)束。通過以下4個公式可以完整地更新每一層Wl和bl的對應梯度:
(2)
δl=(Wl+1)Tδl+1*σ′(zl)
(3)
(4)
(5)
梯度下降是迭代法的一種,可以用于求解最小二乘問題。在求解機器學習算法的模型參數(shù),即無約束優(yōu)化問題時,梯度下降(gradient descent)是最常采用的方法之一。梯度下降的本質(zhì)是逐步逼近最優(yōu),其迭代公式為:
θi=θi-1-ηJ(θi-1)
(6)
(7)
式中:θi代表第i次學習時模型系數(shù)W,b,其梯度可以通過式(2)~式(5)計算;η為學習律;Jr為第r個訓練樣本的損失函數(shù);R為訓練樣本總數(shù)。
傳統(tǒng)梯度下降方法使用所有訓練樣本計算梯度,每次學習都使用整個訓練集。使用所有訓練樣本計算梯度,其優(yōu)點是梯度下降的方向會穩(wěn)定朝著極值方向并收斂,不容易受噪聲影響。但是因為考慮了所有樣本所以收斂慢,同時容易陷入局部最優(yōu)。由于每次更新參數(shù)都需要計算所有訓練樣本的損失函數(shù),隨著輸入樣本數(shù)的增加,每次更新計算量都會大幅增加。
隨機梯度下降(stochastic gradient descent,SGD)算法每次只隨機抽取一個樣本做梯度下降,訓練后按梯度更新一次,然后再抽取一組,再更新一次,在樣本量大的情況下,不用訓練完所有樣本就可以獲得一個損失值在可接受范圍之內(nèi)的模型。在每輪迭代中隨機優(yōu)化某一條訓練數(shù)據(jù)上的損失函數(shù),參數(shù)的更新速度都會大大加快。此外,隨機梯度下降每次更新可能并不會按照極值方向進行,因此會帶來優(yōu)化波動,這個波動可能會使得損失函數(shù)從當前局部極小值點跳到另一個更優(yōu)的局部極小值點,對于非凸函數(shù),可能最終收斂于一個較優(yōu)的局部極小值點,甚至全局極小值點[7]。SGD算法更新規(guī)則如下:
θi=θi-1-ηJr(θi-1)
(8)
SGD算法的一個關(guān)鍵參數(shù)是學習率,學習率太小會導致收斂速度非常緩慢,而學習率太大會阻礙收斂,容易引起權(quán)重在最優(yōu)解附近震蕩,甚至可能引起發(fā)散[8-9]。在實際計算時,隨著迭代次數(shù)的增加,通常需逐漸降低學習率。學習率可以通過試驗來選取。
隨機梯度下降學習過程有時會很慢,使用動量方法可以加快學習速度,特別是處理高曲率、小但一致的梯度時[10]。動量方法每次學習的步長不僅取決于學習率,還取決于梯度序列的大小和順序。動量方法引入變量vi代表第i次迭代時參數(shù)在參數(shù)空間移動的方向和速率,動量參數(shù)α∈(0,1]決定前一次訓練梯度對本次訓練的影響。動量方法中,更新規(guī)則如下:
vi=αvi-1-ηJr(θi-1)
(9)
θi=θi-1+vi
(10)
本文基于Python平臺構(gòu)建一個深度神經(jīng)網(wǎng)絡(luò)的訓練和預測程序,該程序能夠?qū)σ唤M多輸入、多輸出的訓練樣本進行學習,生成預測模型。在預測程序中加載模型,接受輸入?yún)?shù)并進行預測。程序的主要流程如下:
1)讀入訓練樣本,計算各參數(shù)的最小值與極差,將訓練參數(shù)歸一化。隨機選擇80%的樣本作為訓練集,用于參數(shù)的訓練,另外20%的樣本作為測試集,不參加訓練,用于測試訓練情況。
2)建立一個具有3個隱藏層,每層32個單元的深度神經(jīng)網(wǎng)絡(luò)預測模型,模型的激活函數(shù)采用ReLU函數(shù)。
3)初始化神經(jīng)網(wǎng)絡(luò),隨機給預測模型中的權(quán)重系數(shù)矩陣W和偏置向量b賦予一組較小的非零數(shù)值。
4)構(gòu)建隨機梯度下降優(yōu)化器,學習率為0.01,學習衰減率為1×10-6,動量參數(shù)為0.9,選取均方誤差函數(shù)作為損失函數(shù)。
5)開始訓練預測模型,輸入訓練樣本,得到模型的預測值,與真實值進行比較,根據(jù)反向傳播算法,計算模型的損失函數(shù)以及隱藏層權(quán)重系數(shù)矩陣W和偏置向量b的梯度。
6)采用隨機梯度下降優(yōu)化器,修正網(wǎng)絡(luò)權(quán)重,完成一次訓練過程。
7)重復步驟5)、6),對權(quán)重系數(shù)矩陣W和偏置向量b進行反復迭代,若訓練次數(shù)或者均方誤差滿足要求,則結(jié)束訓練。
8)使用測試集檢驗模型預測精度,確保無過擬合現(xiàn)象的發(fā)生。預測程序通過調(diào)用訓練結(jié)果完成預測。
為驗證程序的有效性以及預測精度,以典型高超聲速飛行器飛行過程中時間、馬赫數(shù)、攻角、高度作為輸入?yún)?shù),對應的壁面熱流和壁面溫度峰值作為輸出參數(shù)。在3 851—6 194 s,以間隔3 s的方式選取782個樣本數(shù)據(jù)進行訓練。隨機劃分80%的樣本數(shù)據(jù)為訓練集,20%的樣本數(shù)據(jù)為測試集。測試集用于在完成神經(jīng)網(wǎng)絡(luò)訓練過程后,客觀評價模型對于新樣本的預測能力。
圖2和圖3給出了部分測試集的預測精度。圖中數(shù)據(jù)點近似分布于對角線上,測試集的預測值和真實值相對誤差很小。經(jīng)計算,測試集壁面熱流峰值和溫度峰值的平均誤差分別為3.16%和2.02%。表明該模型對于給定訓練數(shù)據(jù)之外的點泛化能力較好,無明顯的過擬合。
圖2 測試集壁面熱流峰值預測值與真實值比較
圖3 測試集壁面溫度峰值預測值與真實值比較
圖4和圖5為整個飛行過程中壁面熱流峰值1溫度峰值的預測值和真實值的對比曲線。壁面熱流峰值和溫度峰值的平均誤差分別為3.03%和1.86%。預測值和真實值在5 500 s前輸出參數(shù)變化相對平緩的區(qū)域擬合效果較好,5 500 s后壁面熱流峰值和溫度峰值變化十分劇烈,預測精度有所下降。圖4中預測值最大值比真實值小5.93%,圖5中預測值最大值比真實值大2.56%。
圖4 壁面熱流峰值預測值與真實值比較
圖5 壁面溫度峰值預測值與真實值比較
本文構(gòu)建了一個由輸入層、隱藏層和輸出層組成的深度神經(jīng)網(wǎng)絡(luò)預測模型,采用深度神經(jīng)網(wǎng)絡(luò)反向傳播算法以及隨機梯度下降方法,以損失函數(shù)最小為訓練目標,形成一種機器學習的訓練方法。對該模型進行的算例分析表明,該模型預測精度高、非線性能力強、訓練方法快速高效,達到了工程中預測熱環(huán)境參數(shù)的要求。