袁冬芳, 劉文慧, 崔桂梅, 石 琳
(1.內(nèi)蒙古科技大學 理學院,內(nèi)蒙古 包頭 014010; 2.內(nèi)蒙古科技大學 信息工程學院,內(nèi)蒙古 包頭 014010)
微分方程被廣泛應(yīng)用于各個領(lǐng)域的建模過程中[1—2],尤其在工程、數(shù)學、物理學、經(jīng)濟學等領(lǐng)域,許多問題最終都可歸結(jié)為微分方程的求解.常用的數(shù)值求解方法有Runge-Kutta方法、線性多步法和預測校正法等[3—5],有限差分、有限元等相關(guān)方法[6]也為求解微分方程提供了一種思路.但傳統(tǒng)的求解方法對于高維問題和復雜區(qū)域的偏微分方程,通常表現(xiàn)出收斂性的證明過程較繁瑣、計算量大、求解時間長等缺點,因此,研究人員也在不斷嘗試求解偏微分方程的新方法和工具.
多年來,神經(jīng)網(wǎng)絡(luò)逐漸由單個感知器發(fā)展成多層的深度神經(jīng)網(wǎng)絡(luò),在圖像識別、自然語言處理、認知科學等領(lǐng)域得到了廣泛的應(yīng)用[7—9].一方面,由逼近理論[10—11]得知,足夠復雜的神經(jīng)網(wǎng)絡(luò)能夠無限逼近任意非線性函數(shù).因此,神經(jīng)網(wǎng)絡(luò)可以作為一個強有力的函數(shù)逼近器[12].鑒于微分方程的解通常是非線性函數(shù),故利用神經(jīng)網(wǎng)絡(luò)求解微分方程不失為一個新的嘗試.另一方面,由于神經(jīng)網(wǎng)絡(luò)解的偏導數(shù)可以用自動微分法以封閉性形式求出,故可以表示任何偏微分方程.
人工神經(jīng)網(wǎng)絡(luò)(ANN)的概念起源于20世紀40年代,Warren McCulloch 和 Walter Pitts提出了基于數(shù)學和算法的ANN計算模型,此模型被稱為M-P模型.經(jīng)過多年的發(fā)展,Paul Werbos[13]提出了反向傳播算法,該算法有效解決了單層神經(jīng)網(wǎng)絡(luò)只能處理異或問題的局限性,從而使得多層神經(jīng)網(wǎng)絡(luò)有一種可訓練的能力.21世紀神經(jīng)網(wǎng)絡(luò)的研究走向成熟,由最初簡單的神經(jīng)元感知器衍生出一系列的神經(jīng)網(wǎng)絡(luò),主要有BP神經(jīng)網(wǎng)絡(luò)、Hopfied神經(jīng)網(wǎng)絡(luò)、RBF神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)等.BP神經(jīng)網(wǎng)絡(luò)具有很強的非線性映射能力,用BP神經(jīng)網(wǎng)絡(luò)訓練得到微分方程的近似解,當問題維數(shù)增大時,計算量增加相對較小,克服了傳統(tǒng)方法求解微分方程的缺點.
神經(jīng)網(wǎng)絡(luò)主要由輸入層、隱藏層和輸出層3個結(jié)構(gòu)組成,其中神經(jīng)元是網(wǎng)絡(luò)的基本結(jié)構(gòu)(圖1).神經(jīng)網(wǎng)絡(luò)的隱藏層可以有多層結(jié)構(gòu),每一層由若干個神經(jīng)元組成.
一般來說,如果神經(jīng)網(wǎng)絡(luò)有足夠的隱層單元,此時多層神經(jīng)網(wǎng)絡(luò)可以逼近任何非線性函數(shù).如果神經(jīng)元的激活函數(shù)使用sigmoid函數(shù),單個神經(jīng)元的輸入和輸出滿足
y=sigmoid(wx+b),
其中:w為權(quán)值;b為閾值.
圖1 單層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
由于多層網(wǎng)絡(luò)結(jié)構(gòu)的復雜性,在實際操作中一般使用矩陣形式表達網(wǎng)絡(luò)的輸入與輸出關(guān)系.由單個神經(jīng)元的輸入與輸出關(guān)系,可推導出多層神經(jīng)網(wǎng)絡(luò)的輸入與輸出的矩陣形式(以一個兩層神經(jīng)網(wǎng)絡(luò)為例):
N(X)=sig(sig(XTW(1)+B(1))W(2)+B(2))W(3),
其中W(1),W(2),B(1),B(2),W(3)分別表示第一、第二隱藏層神經(jīng)元的權(quán)值,第一、第二隱藏層神經(jīng)元的閾值以及輸出層的權(quán)值.
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搭建成功后,用訓練集對模型進行優(yōu)化訓練.給定訓練集D={(x1,y1),(x2,y2),…,(xm,ym)},令神經(jīng)網(wǎng)絡(luò)的輸出為N=(n1,n2,…,nm).一般用均方差函數(shù)刻畫神經(jīng)網(wǎng)絡(luò)模型和訓練集的誤差,其計算公式為
其中:nk為網(wǎng)絡(luò)輸出;yk為訓練集數(shù)據(jù);Lossk(k=1,2,…,m)為誤差.
神經(jīng)網(wǎng)絡(luò)模型與真實值之間的誤差是關(guān)于W,B的函數(shù),通過調(diào)節(jié)W,B的值縮小兩者之間的差距.常用梯度下降法對神經(jīng)網(wǎng)絡(luò)進行優(yōu)化,優(yōu)化的過程實質(zhì)就是對權(quán)值和閾值沿著誤差函數(shù)下降最快的方向——負梯度方向進行調(diào)整.權(quán)值和閾值的更新公式為
wt=wt-1+Δw,
(1)
其中wt中wt-1分別代表神經(jīng)網(wǎng)絡(luò)第t次和第t-1次的學習權(quán)值,對于閾值調(diào)節(jié)和權(quán)值調(diào)節(jié)方法類似.
神經(jīng)網(wǎng)絡(luò)每次調(diào)整權(quán)值和閾值增量的方法為
(2)
(3)
其中:wjk和bjk指的是隱藏層的第j個神經(jīng)元和輸出層第k個神經(jīng)元之間的連接權(quán)值和閾值;η是學習率,需要人為設(shè)定.
n階微分方程的一般形式定義為
G(x,Ψ(x),?Ψ(x),?2Ψ(x),…,?nΨ(x))=0,其中微分方程的解還受到邊界條件B.Cs的限制.
鑒于神經(jīng)網(wǎng)絡(luò)強大的非線性映射能力,研究人員通過建立一套學習規(guī)則調(diào)節(jié)網(wǎng)絡(luò)的參數(shù)W和B,從而利用神經(jīng)網(wǎng)絡(luò)學習方程的解.早期的損失函數(shù)[14—16]主要由2項組成:①微分方程的真解和訓練模型的誤差,記為LossMSE,D;②邊界條件的誤差懲罰項,記為LossMSE,B.Cs,其構(gòu)造如下:
Loss=LossMSE,D+LossMSE,B.Cs,
其中
LossMSE,D=mean(G(x,N,?N,?2N,…,?nN)-
G(x,Ψ,?Ψ,?2Ψ,…,?nΨ))2,
LossMSE,B.Cs=mean((N(xB.Cs)-Ψ(xB.Cs))2+
(?N(xB.Cs)-?Ψ(xB.Cs))2+
(?2N(xB.Cs)-?2Ψ(xB.Cs))2+…+
(?nN(xB.Cs)-?nΨ(xB.Cs))2).
Loss函數(shù)構(gòu)造完成后,利用(1)~(3)式進行權(quán)值和閾值更新,完成對模型的學習.
算例1考察二階常微分方程
x∈[0,2].
通過網(wǎng)絡(luò)的訓練和學習可知,訓練集的誤差在10-3以內(nèi)(圖2).但僅通過訓練集的誤差對比不能充分說明神經(jīng)網(wǎng)絡(luò)模型求解的優(yōu)越性,故將方程的解析解與訓練模型的一階導數(shù)及二階導數(shù)分別進行對比(圖3),可以看到結(jié)果十分吻合.在神經(jīng)網(wǎng)絡(luò)的求解過程中可以觀察到微分方程的任意階導數(shù),這在工程領(lǐng)域研究中往往是有需要的.同時從測試集的計算結(jié)果及誤差(圖4)可以看到,利用神經(jīng)網(wǎng)絡(luò)方法求解微分方程不失為一種好的嘗試.
a訓練集結(jié)果對比
b誤差分析圖2 算例1訓練集結(jié)果對比及誤差分析
a一階導數(shù)
b二階導數(shù)圖3 算例1解析解與訓練模型一階導數(shù)及二階導數(shù)對比
a測試集結(jié)果對比
b測試集誤差分析圖4 算例1測試集結(jié)果對比及誤差分析
耦合方程常用來描述微波學、激光學和熱力學等問題.由于傳統(tǒng)的數(shù)值求解方法計算量大且精度較低,阻礙了相關(guān)問題的研究進度.受前2個算例啟發(fā),利用神經(jīng)網(wǎng)絡(luò)求解耦合方程不失為一種新思路.一階耦合的微分方程一般定義為
算例2考察耦合方程
x∈[0,2],
x∈[0,2].
方程的解析解為Ψ1(x)=sinx,Ψ2(x)=1+x2,邊界條件為Ψ1(0)=0,Ψ2(0)=1.
利用神經(jīng)網(wǎng)絡(luò)求解該方程,由訓練集計算結(jié)果及誤差分析(圖5)和測試集計算結(jié)果及誤差分析(圖6)可知,用神經(jīng)網(wǎng)絡(luò)模型逼近耦合方程的解,誤差平均在10-3以內(nèi).
邊界對流擴散方程的數(shù)值解是流體力學和氣體動力學的研究問題之一.這類方程與眾不同的特點是在邊界的數(shù)值變化十分劇烈,因此,常規(guī)的數(shù)值求解方法較難求出方程的解析解.同時,在傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型學習過程中由于邊界變化劇烈,導致求解結(jié)果與真實解相差甚遠.針對這種情況,選擇一種新的構(gòu)造訓練解的方法:
即把方程的求解模型分為邊界條件A(x)和對應(yīng)微分方程F(x)N(x).
a訓練集結(jié)果對比
b誤差分析圖5 算例2訓練集結(jié)果對比及誤差分析
a測試集結(jié)果對比
b誤差分析圖6 算例2測試集結(jié)果對比及誤差分析
算例3考察一維對流擴散方程
該問題在右邊界層具有很大的跳躍性.實際訓練模型構(gòu)造如下:
(x-0)(x-1)N(x),
最后利用梯度下降法學習模型,結(jié)果見圖7和圖8,可以看到計算結(jié)果吻合程度比較高,誤差平均值均在10-3以內(nèi).
a訓練集結(jié)果對比
b誤差分析圖7 算例3訓練集結(jié)果對比及誤差分析
a測試集結(jié)果對比
b誤差分析圖8 算例3測試集結(jié)果對比及誤差分析
算例4考察二維偏微分方程
邊界條件為ψ(0,y)=y3,ψ(1,y)=(1+y3)e-1,ψ(x,0)=xe-x,ψ(x,1)=e-x(x+1).定義區(qū)間[0,1]×[0,1],方程的解析解為ψ(x,y)=e-x(x+y3).
在定義區(qū)間內(nèi)均勻選擇20×20個網(wǎng)格點訓練模型,測試集均勻選擇45×45個網(wǎng)格點,得到測試集解析解與數(shù)值解結(jié)果(圖9~圖10),誤差分析截面數(shù)據(jù)見圖11,可以看到用神經(jīng)網(wǎng)絡(luò)求解效果非常理想.
圖9 測試集解析解
圖10 測試集神經(jīng)網(wǎng)絡(luò)實驗解
圖11 測試集截面誤差分析
神經(jīng)網(wǎng)絡(luò)方法為求解橢圓型微分方程開辟了一條有效的新途徑. 一方面,針對橢圓型微分方程,經(jīng)過神經(jīng)網(wǎng)絡(luò)訓練的模型,不僅具有較高的精度,還可以得到解的任意階導數(shù),同時計算量較小,速度較快,具有良好的泛化性. 另一方面,神經(jīng)網(wǎng)絡(luò)方法求解復雜微分方程的收斂性和計算效率尚且需要進一步提高和改進.因此,需要進一步探索神經(jīng)網(wǎng)絡(luò)方法的性能,研究出更普適、高效的求解方法.