戴衛(wèi)杰,張 文,?,徐會(huì)林,夏 贇
(1.東華理工大學(xué) 理學(xué)院,南昌 330013;2.贛南師范大學(xué) 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,江西 贛州 341000)
Helmholtz方程常常用來描述電磁散射、聲波散射和水波傳播等物理現(xiàn)象,在電磁輻射、地震學(xué)和聲學(xué)等領(lǐng)域具有廣泛應(yīng)用,如何計(jì)算Helmholtz方程的解成為眾多學(xué)者討論的熱點(diǎn)問題.Wang[1]對(duì)未知擾動(dòng)部分進(jìn)行修正,最后反演出Helmholtz方程的波數(shù).Wang[2-3]等人用了局部奇異邊界法和局部結(jié)點(diǎn)法對(duì)二維和三維Helmholtz方程正反問題進(jìn)行了求解,Marin[4]等人研究了基本解方法在二維Helmholtz型方程Cauchy問題中的應(yīng)用,并且使用了一階Tikhonov泛函進(jìn)行正則化,Liu[5]用了一種新的Trefftz方法對(duì)三維修正Helmholtz方程Cauchy反問題進(jìn)行求解.人工神經(jīng)網(wǎng)絡(luò)最早由數(shù)理邏輯學(xué)家Pitts和McCulloch于1943年提出,經(jīng)過一段時(shí)間完善之后,Lee[6]、Wang[7]、Yentis[8]將其用來求解偏微分方程,隨后Lagaris[9]等人通過訓(xùn)練網(wǎng)絡(luò)求解微分方程,其核心思路是將微分方程的初始解劃分為2部分:第1部分用來滿足邊界條件,第2部分用來搭建人工神經(jīng)網(wǎng)絡(luò).
最近,Hinton[10]基于大批量訓(xùn)練數(shù)據(jù)提出深度學(xué)習(xí)概念,在大數(shù)據(jù)領(lǐng)域取得巨大反響,為了彌補(bǔ)數(shù)據(jù)量巨大的缺陷,Karniadakis[11]等提出了深度學(xué)習(xí)算法:內(nèi)嵌物理機(jī)理神經(jīng)網(wǎng)絡(luò)(Physics-informed neural networks,縮寫為PINNs),將微分方程的初邊值條件和測量數(shù)據(jù)放在損失函數(shù)當(dāng)中去訓(xùn)練,最后得到微分方程的解和參數(shù)的識(shí)別結(jié)果.但是,對(duì)于PINNs來說,最小化損失的方法一般采用梯度下降法,但是由于損失函數(shù)一般來說都是非凸的,所以梯度下降法可能會(huì)陷入局部最小值而達(dá)不到全局最小,而Kingma[12]提出的Adam算法能夠得到全局最優(yōu)解很好的解決了這個(gè)問題.Song[13]等人利用PINNs提出了求解Helmholtz方程的通用方法,Gorbachenko[14]等人提出了求解反問題的方法.
近年來,PINNs發(fā)展出了許多版本,比如cPINNs[15]、gPINNs[16]、fPINNs[17]等,而Jagtap[18]等通過將PINNs中的激活函數(shù)修改為自適應(yīng)激活函數(shù),大大的加快了收斂速度,在理論層面,Shin[19]等針對(duì)橢圓型和拋物型偏微分方程,證明了經(jīng)過PINNs訓(xùn)練后得到的網(wǎng)絡(luò)一致收斂于偏微分方程的解.
本文的創(chuàng)新點(diǎn)在于通過PINNs方法求解出Helmholtz方程近似解U的同時(shí),根據(jù)附加信息對(duì)未知參數(shù)p和k進(jìn)行同步反演;此外,由于PINNs方法中引進(jìn)的偏微分殘差項(xiàng)起到了正則化作用,于是無需額外采用正則化方法,也能求解不適定問題.
本文首先介紹了PINNs結(jié)構(gòu),然后對(duì)Helmholtz方程正問題進(jìn)行求解,最后針對(duì)Helmholtz方程中的未知參數(shù)p和波數(shù)k進(jìn)行了反演求解.
M(σ)∶=span{σ(w.x+b)∶w∈d,b∈}
(1)
在Cm1,…,ms(d)∶=d)是稠密的.
該定理告訴我們,對(duì)于任意函數(shù),只要神經(jīng)網(wǎng)絡(luò)足夠大,神經(jīng)元數(shù)量足夠多或者層數(shù)足夠深,神經(jīng)網(wǎng)絡(luò)可在精度范圍內(nèi)逼近函數(shù)及其m階導(dǎo)函數(shù).下面我們考慮用神經(jīng)網(wǎng)絡(luò)去求解方程的解.
考慮如下Helmholtz方程
(2)
首先,我們建立深度神經(jīng)網(wǎng)絡(luò)n(x,y;θ)去逼近方程(2)的解U,定義偏微分方程的殘差F(x,y;θ)作為輸出,即:
(3)
其中,偏導(dǎo)數(shù)由自動(dòng)微分求得.定義邊界條件殘差Lub(θ)、偏微分方程殘差Lf(θ,p,k2)和數(shù)據(jù)殘差Lu(θ)分別為:
(4)
(5)
(6)
損失函數(shù)的訓(xùn)練集分為3部分,第1部分為邊界條件的采樣點(diǎn)集,第2部分為對(duì)偏微分方程殘差進(jìn)行的配置點(diǎn)集(配置點(diǎn)集一般有兩種選取方式:類網(wǎng)格點(diǎn)選取方式和偽隨機(jī)離散取點(diǎn)方式),第3部分為測量數(shù)據(jù)的采樣點(diǎn)集,該部分用于參數(shù)識(shí)別的反問題.Nb,Nf,Nu分別為邊界點(diǎn)、方程配置點(diǎn)和測量數(shù)據(jù)的訓(xùn)練集大小,則損失函數(shù)定義為:
L(θ,p,k2)=Lub(θ)+Lf(θ,p,k2)+Lu(θ).
(7)
注由損失函數(shù)的結(jié)構(gòu)可以看出,偏微分殘差項(xiàng)起到了正則化作用,增強(qiáng)了網(wǎng)絡(luò)泛化能力.另外,通過自動(dòng)微分構(gòu)建偏微分方程殘差并將其引入到損失函數(shù),實(shí)際上是將該偏微分方程表示的物理規(guī)律嵌入到深度網(wǎng)絡(luò),為PINNs方法的關(guān)鍵含義.
最后,我們用優(yōu)化算法(如梯度下降法)訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)n(x,y,θ)和方程中參數(shù)p,k2,使得損失函數(shù)L(θ,p,k2)達(dá)到最小.為避免因非凸優(yōu)化引起的達(dá)不到全局最優(yōu)問題,我們采用Adam算法更新參數(shù),具體算法如下:
其中,β1,β2分別為一階矩和二階矩的指數(shù)衰減率,α為學(xué)習(xí)率,通常取β1=0.9,β2=0.999,α=0.001.
(8)
取均方誤差的和作為損失函數(shù)
(9)
算法2: PINNS解Helmholtz方程正問題算法步驟1: 構(gòu)建一個(gè)深度神經(jīng)網(wǎng)絡(luò)n(x,y,θ)去近似真解U;步驟2: 初始化參數(shù)θ,也就是神經(jīng)網(wǎng)絡(luò)的權(quán)w和偏差b;步驟3: 選取邊界點(diǎn)訓(xùn)練集和方程配置點(diǎn)的訓(xùn)練集大小;步驟4: 利用自動(dòng)微分技術(shù)求出微分方程殘差F(x,y;θ)步驟5: 根據(jù)邊界條件和步驟3得到的方程殘差得到損失L(x,y,θ);步驟6: 利用Adam算法對(duì)神經(jīng)網(wǎng)絡(luò)參數(shù)θ進(jìn)行訓(xùn)練來最小化L(x,y,θ);步驟7: 直到損失L(x,y,θ)達(dá)到我們想要的精度或者達(dá)到最大訓(xùn)練步數(shù)停止得到最終的近似解n(x,y;θ*).
我們選取一個(gè)100×100的網(wǎng)格作為我們的訓(xùn)練點(diǎn)集,訓(xùn)練過程中損失函數(shù)L(x,y,θ)隨迭代步數(shù)的變化如圖1所示.
圖1 損失函數(shù)隨迭代步數(shù)變化圖
圖2 精確解和近似解對(duì)比圖
圖3 精確解和近似解誤差圖
由計(jì)算結(jié)果可以看出,深度神經(jīng)網(wǎng)絡(luò)求解Helmholtz方程的誤差在10-4左右,計(jì)算效果較為理想,下面介紹利用深度神經(jīng)網(wǎng)絡(luò)求于參數(shù)識(shí)別反問題的過程.
考慮Helmholtz方程(2)的參數(shù)識(shí)別反問題.取
f(x,y)=e-x(3x-2+6y+3y3),g1(y)=y3,
g2(y)=(1+y3)e-1,c1(x)=xe-x,c2(x)=(x+1)e-x.
(10)
接下來,我們用如下均方誤差的和作為損失函數(shù)
(11)
算法3: PINNs解Helmholtz方程反問題算法步驟1: 構(gòu)建深度神經(jīng)網(wǎng)絡(luò)n(x,y,θ)作為真解U(x,y)的近似值;步驟2: 初始化參數(shù)θ,p,k2,也就是神經(jīng)網(wǎng)絡(luò)的權(quán)w和偏差b還有方程未知參數(shù)p和k2;步驟3: 選取邊界點(diǎn)訓(xùn)練集,方程配置點(diǎn)訓(xùn)練集和測量數(shù)據(jù)訓(xùn)練集大小;步驟4: 利用自動(dòng)微分技術(shù)求出微分方程殘差F(x,y;θ,p,k2);步驟5: 根據(jù)邊界條件,已知的訓(xùn)練數(shù)據(jù)和第三步得到的方程殘差得到損失函數(shù)L(θ,p,k2);步驟6: 利用Adam算法對(duì)神經(jīng)網(wǎng)絡(luò)參數(shù)θ和方程參數(shù)p和k2進(jìn)行訓(xùn)練來最小化損失函數(shù)L(θ,p,k2);步驟7: 直到損失損失函數(shù)L(θ,p,k2)達(dá)到我們想要的精度或者達(dá)到最大訓(xùn)練步數(shù)停止得到最終的近似解n(x,y,θ*)和反演參數(shù)p和k2.
同樣地,我們選取一個(gè)100×100的網(wǎng)格點(diǎn),以及U(x,y)在x=1/3處的測量數(shù)據(jù)作為我們的訓(xùn)練點(diǎn)集.在固定網(wǎng)絡(luò)和方程的初始參數(shù)后同時(shí)給定:無噪聲、0.5%和1%噪聲的測量數(shù)據(jù),經(jīng)過訓(xùn)練后得出損失函數(shù)的變化如圖4所示,可以看出:測量數(shù)據(jù)的噪聲越大,損失函數(shù)收斂的精度也就越低.
圖4 損失函數(shù)隨迭代步數(shù)的變化圖
圖5 精確解和近似解對(duì)比圖
圖6 精確解和近似解誤差對(duì)比
隨后,我們也得到了訓(xùn)練后的參數(shù)p和k2的近似值,下表我們列出了參數(shù)p和k2的識(shí)別結(jié)果和相對(duì)誤差.
表1 參數(shù)p,k2識(shí)別結(jié)果與相對(duì)誤差表
本文利用PINNs對(duì)Helmholtz方程的正、反問題分別進(jìn)行了求解,該方法利用了深度神經(jīng)網(wǎng)絡(luò)逼近定理去逼近精確解U,在給定數(shù)據(jù)和偏微分方程的約束下,對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練.數(shù)值算例表明,該方法對(duì)于求解Helmholtz方程正問題以及參數(shù)識(shí)別反問題都是有效且具有較好的抗噪穩(wěn)定性.