Physics-Informed Neural Networks(PINN)とは、ニューラルネットワーク(NN)の学習に偏微分方程式(PDE)を組み込む手法です。通常のNNは大量の教師データを必要としますが、PINNは支配方程式と境界条件・初期条件の情報を損失関数に取り込むことで、観測データが少ない状況でもPDEの近似解を求めることができます。この記事では、Raissi et al.(2019)の原著論文に基づき、PINNを用いてどのように偏微分方程式の近似解を求めるかを解説します。
問題設定
偏微分方程式の一般形
PDEの一般形を次のように表します。
u t + N [ u ; λ ] = 0 , x ∈ Ω , t ∈ [ 0 , T ] (1) u_t + \mathcal{N}[u;\,\lambda] = 0, \quad x \in \Omega,\; t \in [0, T] \tag{1} u t + N [ u ; λ ] = 0 , x ∈ Ω , t ∈ [ 0 , T ] ( 1 )
各記号の意味は以下のとおりです。
記号 意味 u ( t , x ) u(t, x) u ( t , x ) 時刻 t t t 、位置 x x x における未知の物理量(速度・温度など) N [ ⋅ ; λ ] \mathcal{N}[\cdot\,;\lambda] N [ ⋅ ; λ ] λ \lambda λ をパラメータとする非線形微分演算子Ω \Omega Ω 空間領域 T T T 終端時刻
論文では、PINNを使う目的を次の2つに分類しています。
λ \lambda λ が既知のとき、u ( t , x ) u(t, x) u ( t , x ) を求めること(順問題)
観測データがあるとき、λ \lambda λ を推定すること(逆問題)
この記事では1の順問題について解説します。
Burgers方程式を例に
具体的にBurgers方程式を例に説明を進めます。
∂ u ∂ t + u ∂ u ∂ x − 0.01 π ∂ 2 u ∂ x 2 = 0 , x ∈ [ − 1 , 1 ] , t ∈ [ 0 , 1 ] (2) \frac{\partial u}{\partial t} + u\frac{\partial u}{\partial x} - \frac{0.01}{\pi}\frac{\partial^2 u}{\partial x^2} = 0, \quad x \in [-1, 1],\; t \in [0, 1] \tag{2} ∂ t ∂ u + u ∂ x ∂ u − π 0.01 ∂ x 2 ∂ 2 u = 0 , x ∈ [ − 1 , 1 ] , t ∈ [ 0 , 1 ] ( 2 )
境界条件・初期条件は次のとおりです。
u ( 0 , x ) = − sin ( π x ) u(0, x) = -\sin(\pi x) u ( 0 , x ) = − sin ( π x )
u ( t , − 1 ) = u ( t , 1 ) = 0 u(t, -1) = u(t, 1) = 0 u ( t , − 1 ) = u ( t , 1 ) = 0
式(1)との対応を確認すると、∂ ∂ x ( ⋅ ) \frac{\partial}{\partial x}(\cdot) ∂ x ∂ ( ⋅ ) と ∂ 2 ∂ x 2 ( ⋅ ) \frac{\partial^2}{\partial x^2}(\cdot) ∂ x 2 ∂ 2 ( ⋅ ) の組み合わせが非線形演算子 N \mathcal{N} N に相当し、λ = − 0.01 / π \lambda = -0.01/\pi λ = − 0.01/ π がそのパラメータに相当します。
式(2)の左辺全体を f f f と定義します。
f : = ∂ u ∂ t + u ∂ u ∂ x − 0.01 π ∂ 2 u ∂ x 2 (3) f := \frac{\partial u}{\partial t} + u\frac{\partial u}{\partial x} - \frac{0.01}{\pi}\frac{\partial^2 u}{\partial x^2} \tag{3} f := ∂ t ∂ u + u ∂ x ∂ u − π 0.01 ∂ x 2 ∂ 2 u ( 3 )
式(3)から明らかなように、f f f は偏微分方程式の残差であり、f = 0 f = 0 f = 0 はBurgers方程式を満足することを意味します。
ニューラルネットワーク u n e t u_\mathrm{net} u net の定義
u ( t , x ) u(t, x) u ( t , x ) を近似するNN u n e t u_\mathrm{net} u net を定義します。PDEの独立変数 t , x t, x t , x を入力とし、従属変数 u u u を出力とする全結合NNです。
要素 内容 入力層 ( t , x ) (t,\, x) ( t , x ) の2次元中間層 全結合層 × 複数(活性化関数:tanh \tanh tanh ) 出力層 u u u の1次元
u n e t u_\mathrm{net} u net はある時刻 t t t 、位置 x x x における u u u の近似値を出力します。PINNの鍵は、このNNをどのような損失関数で学習するかにあります。
損失関数
u n e t u_\mathrm{net} u net の学習は次の損失関数を最小化することで行います。
L = L u + L f (4) \mathcal{L} = \mathcal{L}_u + \mathcal{L}_f \tag{4} L = L u + L f ( 4 )
L u = 1 N u ∑ i = 1 N u ∣ u n e t ( t u i , x u i ) − u i ∣ 2 (5) \mathcal{L}_u = \frac{1}{N_u}\sum_{i=1}^{N_u}\left|u_\mathrm{net}(t_u^i,\, x_u^i) - u^i\right|^2 \tag{5} L u = N u 1 i = 1 ∑ N u u net ( t u i , x u i ) − u i 2 ( 5 )
L f = 1 N f ∑ i = 1 N f ∣ f ( t f i , x f i ) ∣ 2 (6) \mathcal{L}_f = \frac{1}{N_f}\sum_{i=1}^{N_f}\left|f(t_f^i,\, x_f^i)\right|^2 \tag{6} L f = N f 1 i = 1 ∑ N f f ( t f i , x f i ) 2 ( 6 )
各記号の意味は以下のとおりです。
記号 意味 N u N_u N u 境界・初期条件の観測点数 { t u i , x u i , u i } i = 1 N u \{t_u^i,\, x_u^i,\, u^i\}_{i=1}^{N_u} { t u i , x u i , u i } i = 1 N u 境界・初期条件上の点と既知の u u u の値 N f N_f N f 領域内部に配置するコロケーション点数 { t f i , x f i } i = 1 N f \{t_f^i,\, x_f^i\}_{i=1}^{N_f} { t f i , x f i } i = 1 N f 領域 Ω × [ 0 , T ] \Omega \times [0, T] Ω × [ 0 , T ] 内にランダムに配置した点
L u \mathcal{L}_u L u は境界条件・初期条件をどの程度満たしているかを評価します。L f \mathcal{L}_f L f は領域内部の各点でPDEの残差がどの程度 0 0 0 に近いかを評価します。u n e t u_\mathrm{net} u net は u u u の近似であるため f f f が完全に 0 0 0 になることはなく、その意味で f f f はPDEの残差と解釈できます。
この損失関数を最小化することで、u n e t u_\mathrm{net} u net は境界条件・初期条件とPDEを同時に満足するように学習が進みます。
偏微分方程式の残差の計算方法
残差 f f f を計算するためには ∂ u / ∂ t \partial u / \partial t ∂ u / ∂ t 、∂ u / ∂ x \partial u / \partial x ∂ u / ∂ x 、∂ 2 u / ∂ x 2 \partial^2 u / \partial x^2 ∂ 2 u / ∂ x 2 が必要です。これらを求めるために、自動微分を利用します。
自動微分とは、関数が四則演算・指数・対数・三角関数などの基本的な計算操作の組み合わせで表現できるとき、各操作の微分を連鎖律を使って自動的に求める技術です。NNは行列計算と活性化関数の組み合わせであるため、自動微分の対象となります。
通常のNN学習では損失 L \mathcal{L} L を起点として入力側に向かって誤差逆伝播を行い、重み W W W の勾配 ∂ L / ∂ W \partial \mathcal{L} / \partial W ∂ L / ∂ W を求めます。
PINNではこれに加えて、出力 u u u を起点として入力 t , x t, x t , x に向かって自動微分を進めることで ∂ u / ∂ t \partial u / \partial t ∂ u / ∂ t 、∂ u / ∂ x \partial u / \partial x ∂ u / ∂ x 、∂ 2 u / ∂ x 2 \partial^2 u / \partial x^2 ∂ 2 u / ∂ x 2 を求めます。二階微分も同様に自動微分を2回適用して得られます。
こうして得た u u u 、∂ u / ∂ t \partial u / \partial t ∂ u / ∂ t 、∂ u / ∂ x \partial u / \partial x ∂ u / ∂ x 、∂ 2 u / ∂ x 2 \partial^2 u / \partial x^2 ∂ 2 u / ∂ x 2 を式(3)に代入することで f f f を算出できます。
整理すると、「ある点 ( t , x ) (t, x) ( t , x ) を u n e t u_\mathrm{net} u net に入力して u u u を推論し、自動微分によって微分項を算出し、f f f を求める」という一連の処理全体を、論文ではPhysics-Informed Neural Networksと定義しています。
まとめ
PINNのキーポイントは2つです。
損失関数にPDEを組み込む(L f \mathcal{L}_f L f )
PDEの残差を自動微分で評価する
この2点により、境界条件・初期条件と支配方程式の情報だけで u n e t u_\mathrm{net} u net を学習できます。大量の教師データを必要とせず、観測データが少ない・取得困難な場合にも有効な手法です。
なお、今回の u n e t u_\mathrm{net} u net は式(2)の特定の境界条件・初期条件に対して学習されるため、それらが変わると学習し直す必要があります。初期条件や境界条件を入力に含めることで汎化性を高める拡張手法もありますが、それはまたの機会に解説します。
参考文献
M. Raissi, P. Perdikaris, G.E. Karniadakis, "Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations", Journal of Computational Physics , Vol. 378, pp. 686–707, 2019. DOI: 10.1016/j.jcp.2018.10.045