葉舒然,張 珍,宋旭東,杜特專,王一偉,*,黃晨光,陳耀松
(1.中國科學(xué)院力學(xué)研究所 流固耦合系統(tǒng)力學(xué)重點實驗室,北京 100190;2.中國科學(xué)院大學(xué) 工程科學(xué)學(xué)院,北京 100049;3.北京大學(xué) 工學(xué)院,北京 100871)
機器學(xué)習(xí)作為計算機科學(xué)領(lǐng)域中一個備受關(guān)注的研究方向,其核心主要是使用算法解析數(shù)據(jù),并利用計算機的大信息處理能力從原始數(shù)據(jù)中提取模式。近來,機器學(xué)習(xí)在許多領(lǐng)域得到蓬勃發(fā)展,例如在自然語言處理和各類圖像識別等方面已經(jīng)得到廣泛應(yīng)用[1]。機器學(xué)習(xí)在流體力學(xué)中的應(yīng)用也開始逐漸浮現(xiàn),Tracey等[2]利用神經(jīng)網(wǎng)絡(luò)擬合Spalart-Allmaras湍流模型并證明了其能夠優(yōu)化計算流體力學(xué)中得到的結(jié)果;Ling等[3]提出使用嵌入伽利略不變性的多層網(wǎng)絡(luò)預(yù)測雷諾應(yīng)力張量,并取得了更為精確的結(jié)果。至此,機器學(xué)習(xí)在流體力學(xué)中的初步嘗試主要是通過前饋神經(jīng)網(wǎng)絡(luò)構(gòu)建湍流模型。
由于流場的復(fù)雜性,除了關(guān)注于傳統(tǒng)前饋網(wǎng)絡(luò)學(xué)習(xí)算法,利用機器學(xué)習(xí)中的各種方法來探索流場識別、提取、降階也是一個非常重要的方向。以卷積神經(jīng)網(wǎng)絡(luò)為代表的深度網(wǎng)絡(luò)在流體力學(xué)中有了一些新的嘗試。Storfer等[4]使用卷積神經(jīng)網(wǎng)絡(luò)成功識別了流動特征,并且識別出的特征能夠與相似特征進行區(qū)分。Jin等[5]構(gòu)建了一個捕捉繞流圓柱表面壓力系數(shù)時空信息的卷積神經(jīng)網(wǎng)絡(luò),能夠成功捕捉壓力脈動特征并預(yù)測速度場信息。對于流場建模,除了直接尋找數(shù)據(jù)間的映射關(guān)系,基于無監(jiān)督思想下的尋找數(shù)據(jù)之間的特征提取技術(shù)也是一種建模與降階技術(shù)[6]。例如Kaiser 等[7]提出了一種無監(jiān)督學(xué)習(xí)下用以識別流場物理機制的CROM方法,這種方法在三維鈍體湍流尾跡和空間演化的不可壓混合層的速度場都進行了成功的應(yīng)用??紤]到自動編碼器作為一種典型的數(shù)據(jù)壓縮與降維方法,在圖像和自然語言處理等方面有很好的實踐,因此探索自動編碼器在流場降階中的應(yīng)用。將自動編碼器引入流場,建立流場速度場的編碼和解碼模型,能夠?qū)⒃几呔S數(shù)據(jù)進行壓縮,并且能夠?qū)α鲌鰧崿F(xiàn)一種通用的降階方法。
本文以圓柱澆流流場的速度場為輸入,建立了自動編碼器模型,對全場的速度場分量進行編碼和數(shù)據(jù)降維,最后與流場特征量構(gòu)建的網(wǎng)絡(luò)進行了誤差分析,分析了自動編碼器的數(shù)據(jù)降維和特征提取的合理性。該方法在一定范圍內(nèi)的速度入口和雷諾數(shù)條件下,能夠為流場數(shù)據(jù)的表示提供合適的編碼函數(shù)。并且,結(jié)合深度學(xué)習(xí)技術(shù),能夠得到相關(guān)的流場特征識別與提取結(jié)果。
自動編碼器是一種神經(jīng)網(wǎng)絡(luò),這種網(wǎng)絡(luò)的特點是在經(jīng)過訓(xùn)練后能夠?qū)⑤斎霃?fù)制到輸出[8]。作為無監(jiān)督的一種網(wǎng)絡(luò)模型,自動編碼器能夠從輸入數(shù)據(jù)中學(xué)習(xí)到隱含的數(shù)據(jù)特征,并且由這些特征重構(gòu)出原始數(shù)據(jù)。因此,自動編碼器在數(shù)據(jù)降維和特征學(xué)習(xí)等方面有著廣泛的應(yīng)用。
自動編碼器可以被看作是前饋網(wǎng)絡(luò)的一個特例[9]。因此,首先建立一個全連接的前饋網(wǎng)絡(luò),其網(wǎng)絡(luò)結(jié)構(gòu)如圖1(a)所示,分為輸入層、隱層、輸出層,上一層的任何神經(jīng)元與下一層的每個神經(jīng)元都有連接[10]。神經(jīng)元模型的概念來自于生物神經(jīng)中,通過電位變化傳遞信息[11]。對于神經(jīng)網(wǎng)絡(luò)模型中的神經(jīng)元模型,其權(quán)重函數(shù)和偏置向量,用方程表示為:
f(x;w;b)=xTw+b
(1)
式中,w為權(quán)重系數(shù),b為偏置向量。
神經(jīng)網(wǎng)絡(luò)將輸入層數(shù)據(jù)通過映射轉(zhuǎn)換到隱層,再逐層轉(zhuǎn)化到輸出層。網(wǎng)絡(luò)的輸出和真實值之間的差異用損失函數(shù)衡量[13],對于常見的回歸問題,一般取為網(wǎng)絡(luò)預(yù)測值和參考值之間的均方根誤差:
(a)網(wǎng)絡(luò)結(jié)構(gòu)
(b)神經(jīng)元圖1 前饋神經(jīng)網(wǎng)絡(luò)Fig.1 Feedforward neural network
(2)
前饋神經(jīng)網(wǎng)絡(luò),如果其只有一個隱藏層h,則該網(wǎng)絡(luò)可以看作為從輸入到隱層的映射函數(shù)h=f(x)和隱層到輸出的映射函數(shù)y=g(h)。由于自動編碼器的特點是能夠?qū)⑤斎霃?fù)制到輸出,所以在網(wǎng)絡(luò)中將輸出設(shè)計成與輸入相同,并將隱層的節(jié)點數(shù)設(shè)置成比輸入輸出的節(jié)點數(shù)少,通過訓(xùn)練調(diào)整權(quán)重系數(shù),得到每一層的參數(shù),便可以獲得原始數(shù)據(jù)在小維度上的表示。對于該網(wǎng)絡(luò)而言是一個編碼和解碼的過程,即將原始數(shù)據(jù)進行壓縮,再從壓縮的數(shù)據(jù)中還原。
圖2是自動編碼器的網(wǎng)絡(luò)結(jié)構(gòu),在該網(wǎng)絡(luò)中輸出與輸入相同,即y=x。自動編碼器的訓(xùn)練方式和一般前饋神經(jīng)網(wǎng)絡(luò)完全相同,即使用小批量的梯度下降算法,使輸出y逐漸貼近輸入x[15]。網(wǎng)絡(luò)訓(xùn)練完成后,能夠得到一個輸入到隱層的編碼模型和一個隱層到輸出的解碼模型,隱層的節(jié)點信息即為最后的編碼結(jié)果。考慮到編碼的稀疏性,在自動編碼器的基礎(chǔ)上加上稀疏性約束,編碼結(jié)果中只有一小部分神經(jīng)元被激活,大部分節(jié)點為0[16]。
圖2 自動編碼器網(wǎng)絡(luò)Fig.2 Autoencoder network
選取圓柱繞流的案例,構(gòu)建流場并獲取流動數(shù)據(jù)[17]。流場幾何設(shè)置如圖3(a)。考慮圓柱后41×17的速度場作為輸入。由于是二維算例,對于每個點都有U={u,v}兩個速度分量。流場的速度入口,考慮了帶有擾動的拋物速度入口條件,其中3個速度入口作為訓(xùn)練,第四個速度入口作為測試。每個速度入口考慮雷諾數(shù)從200到2000的10組雷諾數(shù),所有工況下均每隔0.005 s時間步長輸出一組數(shù)據(jù),共取300組數(shù)據(jù)。速度入口條件為基本拋物線速度入口乘以擾動因子P再歸一化,基本拋物線速度入口為:
(3)
其中um=1.5。擾動因子P見表1。
表1 圓柱繞流流場不同速度入口條件Table 1 Different inlet velocity conditions of the flow around the cylinder
(a)幾何尺寸和邊界條件
(b)圓柱后流場41×17的速度采樣點分布
(c)圓柱上32個壓力系數(shù)采樣點分布圖3 二維圓柱繞流算例Fig.3 2D cases in the flow around the cylinder
網(wǎng)絡(luò)分為自動編碼器和驗證網(wǎng)絡(luò)兩部分,自動編碼器考慮將41×17×2個速度分量通過自動編碼,壓縮為32個數(shù)據(jù)。驗證網(wǎng)絡(luò)將用編碼后的數(shù)據(jù)與流場特征典型量相聯(lián)系,討論壓縮處理后的數(shù)據(jù)是否抓住了原始數(shù)據(jù)中的主要特征。
對于圓柱繞流流場,采取上述的速度場進行描述,考慮到是二維流場,則在41×17個空間位置上共有1394個速度分量,對于其余的研究而言速度信息的維度過大,因此,尋找一種將1394維的流場速度數(shù)據(jù)進行壓縮的方法十分重要。自動編碼器結(jié)構(gòu)能夠?qū)?shù)據(jù)進行壓縮,并且能夠利用網(wǎng)絡(luò)將數(shù)據(jù)還原??紤]到自動編碼器的這個優(yōu)勢,使用自動編碼器將流場速度分量壓縮為只有32個值。因此對于網(wǎng)絡(luò),輸入和輸出選擇各為1394個節(jié)點,中間隱層選擇為32個節(jié)點,網(wǎng)絡(luò)中通過選取不同的激活函數(shù)來添加約束,使得重構(gòu)后的數(shù)據(jù)與原始數(shù)據(jù)非常接近但又有一些不同,以此強制模型考慮輸入數(shù)據(jù)中哪些量需要被優(yōu)先復(fù)制,達到增強網(wǎng)絡(luò)性能的目的。
對于自動編碼器得到的縮減結(jié)果,一個很好的驗證方式是,將經(jīng)過解碼后的數(shù)據(jù)與原始數(shù)據(jù)比較,得到兩者間的均方根誤差(Root Mean Square Error,RMSE)。由于流場信息的復(fù)雜性,想要探究縮減后的結(jié)果對于原始數(shù)據(jù)是否具有代表性,另一個驗證方法是建立編碼后數(shù)據(jù)與原始流場的對應(yīng)關(guān)系。如果編碼后的數(shù)據(jù)能夠代替原始范圍內(nèi)的速度場信息,那么可以建立函數(shù)關(guān)系Cp=F(Uencode),其中Cp是用入口平均速度無量綱化的壓力系數(shù),Uencode為編碼后的低維流場?;谶@種考慮,建立了全連接的神經(jīng)網(wǎng)絡(luò),輸入層為編碼后的流場速度,輸出層為圓柱表面壓力系數(shù)。如圖3(c)所示,圓柱表面壓力系數(shù)選取為圓柱一圈32個離散點的值進行表示。由于訓(xùn)練集和測試集選取了不同的速度入口,為了防止入口速度變化對圓柱前緣處壓力系數(shù)影響較大,在32個點中舍棄圓柱了迎著來流的6個點。圓柱表面壓力采樣點排列順序是以迎來流最前端為第一個點順時針等間距排列,因此在序號上體現(xiàn)為舍棄前后端的三個,并對剩下的26個點按照相同的順序重新編號為1~26。這些點仍能覆蓋圓柱表面大部分壓力情況,并且不會使得速度入口所產(chǎn)生的誤差對整體誤差起到了主導(dǎo)作用。驗證網(wǎng)絡(luò)選取了單隱層的128個節(jié)點的驗證網(wǎng)絡(luò)1,和隱層的數(shù)量為2層、每層30個節(jié)點的驗證網(wǎng)絡(luò)2,并加了dropout層以防止過擬合。驗證網(wǎng)絡(luò)結(jié)構(gòu)見表2。
表2 驗證網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)Table 2 Network layers of the verification network
輸入訓(xùn)練數(shù)據(jù)完成網(wǎng)絡(luò)訓(xùn)練后,需要應(yīng)用測試數(shù)據(jù)測試網(wǎng)絡(luò)的可靠性。本文的自動編碼器在流場中的應(yīng)用主要分為兩個方面,一方面關(guān)注了自動編碼器編碼解碼過程中的精度,是否能生成與原始流場精度差異較小的重構(gòu)流場,另一方面也考慮到編碼過程是否能夠?qū)υ剂鲌鲞M行成功的壓縮降階,并通過關(guān)聯(lián)流場中的某些敏感關(guān)注量考察編碼器能否代替原始流場。具體流程見圖4。
圖4 自動編碼器應(yīng)用流程圖Fig.4 Flow chart of the application of the autoencoder
上述圓柱繞流案例有10組雷諾數(shù),每組雷諾數(shù)每隔0.005s取一組數(shù)據(jù),共計算了300步數(shù)據(jù)。為了防止訓(xùn)練集對于速度入口過擬合,共考慮了4個不同的速度入口,3組進行訓(xùn)練,1組進行測試,即訓(xùn)練樣本數(shù)為9000,測試樣本數(shù)為3000。
自動編碼器的結(jié)構(gòu)采用的是2.2節(jié)中所描述的網(wǎng)絡(luò)結(jié)構(gòu)。圖5可以看出,隨著訓(xùn)練步數(shù)的增加,訓(xùn)練過程中的均方根誤差即損失函數(shù)在逐漸下降,經(jīng)過100步的迭代誤差已經(jīng)降到1.2×10-2,并有繼續(xù)下降的趨勢。
網(wǎng)絡(luò)訓(xùn)練完成后,將測試數(shù)據(jù)的速度場輸入網(wǎng)絡(luò)模型,即可得到測試數(shù)據(jù)在自動編碼后的系數(shù),其均方根誤差δRMSE為1.45×10-2。可以認為測試數(shù)據(jù)在經(jīng)過編碼和解碼之后能得到與原始數(shù)據(jù)誤差較小的結(jié)果。隨機選取Re數(shù)為700的一個速度場進行研究,從速度云圖上看,其中圖6(a)為原始速度場的速度u分量的速度云圖,圖6(b)為重構(gòu)速度場的速度u分量的速度云圖,可以看出該編碼解碼過程誤差較小,說明編碼后的數(shù)據(jù)能夠包含大部分流場信息。
同時,我們將編碼維數(shù)增加一倍,使用自動編碼器將流場速度分量壓縮為64個值,并使用64維數(shù)據(jù)重構(gòu)流場,如圖6(c)。可以看出編碼維數(shù)的增加,能夠使得重構(gòu)出的流場更好地呈現(xiàn)原始流場的流動特征,例如在核心區(qū)外圍的情況能夠?qū)⒘鲌鲂畔盐盏酶谩?/p>
圖5 網(wǎng)絡(luò)的訓(xùn)練誤差Fig.5 Training error of network
(a)原始流場
(b)重構(gòu)流場1
(c)重構(gòu)流場2圖6 速度分量u的速度場云圖Fig.6 Velocity contour of velocity component u
自動編碼器訓(xùn)練和測試完成后,進一步利用前述的壓力回歸方法對編碼器表現(xiàn)進行驗證。對于驗證網(wǎng)絡(luò),訓(xùn)練集和測試集的數(shù)據(jù)來源依舊是上述雷諾數(shù)和速度入口組合下的工況。對于每組數(shù)據(jù),輸入由原始的1394個速度分量縮減為編碼后的32個組合值,輸出則考慮到需要對原始流場信息進行表征,因此選取了圓柱表面26個點的壓力系數(shù)。分別用2.3節(jié)所述的兩種網(wǎng)絡(luò)結(jié)構(gòu)進行了驗證,其中編碼后數(shù)據(jù)在驗證網(wǎng)絡(luò)上的表現(xiàn)如表3所示。
表3 訓(xùn)練集和測試集分別在驗證網(wǎng)絡(luò)上的均方根誤差Table 3 RMSE for the train set and the test set on verification network
為了驗證自動編碼的效率,將流場的41×17×2個速度分量中隨機選取32個點作為對照組,其中隨機選取的過程保證所取點在訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)中代表的意義相同,即在固定空間位置上的相同速度分量。
通過對比2.3節(jié)所建立網(wǎng)絡(luò)與隨機取點,分別得到了單層編碼結(jié)果和隨機取點在驗證網(wǎng)絡(luò)上的均方根誤差。表4中對比了兩種網(wǎng)絡(luò)上測試集的誤差。圖7選取了某時刻預(yù)測的壓力系數(shù)與實際值的對比。自動編碼器的殘差約為隨機取點網(wǎng)絡(luò)的一半,說明了自動編碼器的壓縮算法能夠更有效表達原流場的信息。
表4 單層編碼和隨機取點在驗證網(wǎng)絡(luò)上的均方根誤差Table 4 RMSE for the encoded result and the random-sampling on verification network
圖7 單層編碼與隨機取點在驗證網(wǎng)絡(luò)上預(yù)測結(jié)果與CFD參考值結(jié)果中圓柱壓力系數(shù)分布的比較Fig.7 Comparison of pressure coefficient distributions on the cylinder between the CFD result,the model predictions of the encode result and the random sampling
前文中采用的是基本的單層編碼器和解碼器,但實際上對于復(fù)雜問題,深度的編碼器和解碼器也具有一定優(yōu)勢,能夠更好地體現(xiàn)深層網(wǎng)絡(luò)的可控性,在擬合數(shù)據(jù)過程中較大地降低訓(xùn)練的計算成本和所需的訓(xùn)練量。例如,Hinton等[18]提出在實驗中,深度自編碼器能夠比相應(yīng)淺層的編碼器擁有更好的壓縮效率。
對于速度場信息壓縮的問題,為了探究自動編碼器網(wǎng)絡(luò)對編碼效率的影響,提出了一個隱層數(shù)為5的網(wǎng)絡(luò),新的編碼器網(wǎng)絡(luò)結(jié)構(gòu)如表5。在該網(wǎng)絡(luò)中,編碼器和解碼器均為3層網(wǎng)絡(luò)。
表5 自動編碼器的網(wǎng)絡(luò)結(jié)構(gòu)Table 5 Network Layers of the autoencoder
訓(xùn)練深度編碼模型,其本質(zhì)是訓(xùn)練具有更多中間層的網(wǎng)絡(luò)。對于流場速度場數(shù)據(jù),網(wǎng)絡(luò)的輸入是1394維特征,與單層編碼不同的是,深度編碼網(wǎng)絡(luò)中三個隱含層維度分別為256、64和32,即通過逐步降低輸入數(shù)據(jù)的維度,得到最終編碼后的32維的低維數(shù)據(jù)。表6對比了單層編碼和深層編碼在編碼網(wǎng)絡(luò)(AE-Net)和驗證網(wǎng)絡(luò)(Verif-Net)上的均方根誤差,可以看到,在最終維度相同的情況下,深層編碼與單層編碼相比,重構(gòu)出的數(shù)據(jù)誤差更小,且能夠更好地捕捉數(shù)據(jù)的特征,壓力回歸測試均方根誤差小于0.1。但由于目前算例相對簡單,深度編碼器體現(xiàn)出的優(yōu)勢并不十分明顯。
表6 單層編碼和深層編碼網(wǎng)絡(luò)的均方根誤差Table 6 RMSE for the single layer encoded result and the multi-layer encoded result
本文提出了一種將自動編碼器應(yīng)用在流場中的方法。該方法通過將高維的原始速度場編碼為少量點的低維數(shù)據(jù),并對數(shù)據(jù)解碼,能夠?qū)υ剂鲌鲞M行重構(gòu)。對非均勻來流圓柱繞流算例建立的典型單層自動編碼器模型,重構(gòu)流場與原始流場速度均方根誤差小于0.02。
本文證實了通過自動編碼器將原始高維流場進行降階和數(shù)據(jù)壓縮,可以將壓縮后數(shù)據(jù)與原流場中的敏感輸出值相關(guān)聯(lián)。對此基于圓柱繞流流場自動編碼器的應(yīng)用,建立了利用降維后編碼數(shù)據(jù)來回歸圓柱表面壓力分布的神經(jīng)網(wǎng)絡(luò)測試。結(jié)果表明編碼數(shù)據(jù)能夠較好地回歸到圓柱的表面壓力系數(shù),且回歸精度明顯高于利用同等數(shù)量隨機測點進行回歸的對照模型。
最后考慮到更復(fù)雜流場的編碼需求,討論了編碼層層深對于編碼效果的影響。典型的不同結(jié)構(gòu)編碼器對比結(jié)果表明,五層結(jié)構(gòu)的深層編碼器比淺層編碼器在編碼網(wǎng)絡(luò)上的誤差更低,編碼精度更高;同時在與流場敏感輸出值相關(guān)聯(lián)時網(wǎng)絡(luò)預(yù)測誤差能夠達到0.1,對原始數(shù)據(jù)的代表性也更好。
未來,本文所建立的基于機器學(xué)習(xí)的自動編碼器方法有條件應(yīng)用于更復(fù)雜的流場結(jié)構(gòu)的識別與降階,應(yīng)用的范圍與方式值得進一步討論研究。此外,如將自動編碼器與潛變量模型理論結(jié)合,則可進一步應(yīng)用于流場生成模型的構(gòu)造,值得進一步探索。