# IBISML2023 10/29(Sun.) # 物理シミュレーションのための機械学習入門 ## 定義 - 物理シミュレーションとは、計算機上で物理現象を再現すること - 微分方程式とは、「未知の関数$u$とその導関数を含む等式」 - 未知の関数$u$は「状態」を表す - 独立変数が1つの場合ODE, 2つ以上の場合PDE - 常微分方程式(ODE) - $\dot{u} = f(t,u)$と表現される。ただし$f$はダイナミクスを表す関数 - 方程式の解は$u(t)$ - 時間モデル - 偏微分方程式(PDE) - $\dot{u} = F(t,x,u,\partial_x u, \partial_{xx} u...)$ - 方程式の解は$u(t,x)$ - 時空間モデル ## 微分方程式に関する問題 - 順問題 方程式$f$や$F$, 及び初期条件/境界条件から解$u$を求める - 解析解が求まるのはごく一部の例のみなので、微分方程式を十分細かいメッシュに離散化して数値的に解く - 逆問題(の1つ) - 解$u$の観測、及び初期条件/境界条件から方程式$f$や$F$を求める - つまり方程式に含まれる物理パラメータを推定する(機械学習的?) - 順問題は結局解く - 順問題を解いた結果$\hat{u}$と観測値$u$が一致するようにパラメータを調整 アプリケーション ユーザが指定した初期/境界条件に対して順問題を解く ### 機械学習と物理学の融合 **従来のアプローチ**  現象  →実験・観測を通してデータ/知識を得る  →理論的検討・設計で方程式を立てる  →数値シミュレーションから解を得る - 理論的検討・設計で方程式を立てるプロセス  😭専門知識が必要でコストが膨大   😭複雑な現象のモデル化は限界あり - 数値シミュレーションから解を得るプロセス  😭シミュレーションコストは膨大  😭メッシュの作成が経験による **深層学習によって従来のプロセスを代替する** 1. ダイナミクスを推定(理論的検討・設計で方程式を立てるプロセスを代替) 2. 方程式の解を推定(数値シミュレーションから解を得るプロセスを代替) 3. 解作用素を推定(両方) **機械学習と物理学の融合** 物理学の知識を深層学習のための帰納バイアスとして活用する Physics-informed machine learning[karniadais'21] * ソフト制約の場合は損失関数に導入する * ハード制約の場合はモデルクラスを絞り込む("Baked Approach") ## 1. ダイナミクスの推定 - 方程式が未知の物理現象をデータから学習できる - ダイナミクスを表すベクトル場をモデル化する **BreakThrough: Neural ODE[Chen+'18']** * ベクトル場をニューラルネットによりモデル化し、観測データに合うようにパラメータを最適化 * ResNetを連続化したもの * ODEの方程式をFFNでモデリングする潮流を生み出す **誤差逆伝播法に基づく方法(小規模)** とりあえず$f_\theta(u)$で$u_t$を予想して観測値$u'_t$との誤差を測る オイラー法を適用すると計算グラフが巨大になってしまう(100次元で時間発展が長くない場合はこちらでも実行可能) **随伴変数法に基づく方法(中規模以上)** 随伴変数を導入して、後ろ向きの積分をする * 計算グラフを保持する必要がなく省メモリ * ODEを2回解くので誤差が大きい ノイズが大きい場合やデータが少ない場合、単純にNeural ODEを使ってもあまり精度は出ない **ハミルトン力学** - ニュートン力学は力の釣り合いをもとに考える - ハミルトン力学はエネルギーを出発点に再定式化した解析力学の一形式 - 一般化座標$q$と一般化運動量$p$で決まるハミルトニアン$H:\mathbb{R}^{2n}\rightarrow\mathbb{R}^{n}$が与えられ、ハミルトンの運動方程式を通してダイナミクスを導出する - ハミルトンの運動方程式 - $\dot{q}=\frac{\partial H}{\partial p}$ - $\dot{p}=-\frac{\partial H}{\partial q}$ - ハミルトンの運動方程式に従うダイナミクスはエネルギーを保存する **HNN(Hamiltonian Neural Network)** * ODEソルバを用いてHNNを学習する * Neural ODEの学習法(誤差逆伝播法/随伴変数法)が使える。例えば * ルンゲクッタ法 * シンプレクティック数値積分法 * シンプレクティック随伴変数方 * 離散力学に基づく方法 **拡張** - 摩擦や外力を伴う場合への拡張 - ポートハミルトン系 - ハミルトニアンPDEへの拡張[DGNet] - ハミルトニアンPDEとは - ハミルトニアン密度を全空間で積分してあげると全エネルギーになる - $\dot{u}(x,t) = S\dfrac{\delta H}{ \delta u}$ - N点で空間を離散化するとN次元のODEとして解くことが可能となる - ハミルトニアン密度をニューラルネットでモデル化する。また、全空間について積分する代わりにN点でサンプリングする - 高次元データ入力への拡張[HGN] - オートエンコーダ等を用いて状態を表す潜在変数を学習 - 物理量を学習するよりも動画等の方が観測しやすい場合に有効 **まとめ** - 方程式が未知の場合でもダイナミクスを推定できることが魅力 - torchdiffeq等のライブラリがある - 順問題を解くので最終的に数値計算が必要となる ## 2. 数値シミュレーションをニューラルネットで代替する モデル化の対象はシミュレーション解$u(t,x)$ これは初期条件/境界条件が与えられた時の特殊解 #### DNNは微分器である **Physics-informed Neural Network(PINN)** - 関数$f$が$θ$でパラメタライズされている - 合成関数の微分を考えると、自動微分の利用と計算グラフの保持をすれば$f$の導関数も$θ$でパラメタライズされる - パラメタライズされた解$u_\theta$に対し$\theta$を学習することが順問題を解くことに対応 **PINNの損失** - 初期条件と境界条件の損失+任意の点での微分方程式の損失(メッシュを切る必要がない) - 損失関数の各係数はOriginalの問題だと全部1 →これはまだ決着がついていない - 任意の点のサンプリング:ラテン超方格法 Neural Conservation Law[Richter-Powell+22] 求めたい$u(x,t)$と$\rho(x,t)$が連続の方程式を満たすようにNNを作りたい $u$の観測データがあるわけではく、$u$の微分についての損失から解$u$を学習する ## 3. 解作用素を推定する 入力関数$a$から解$u$への写像をDNNでモデル化する 一般解をモデル化(PINNの場合は特殊解だった) シミュレーションはPINNに比べ超高速 クエリ点についての損失をもとに学習 クエリ点はデータごとに荒い・細かいがあってもよい **Deep Operator Network(Deep Operator Nerwork)** - 作用素に対する万能近似定理に基づきアーキテクチャを構成 - 入力関数$a$についてのネットワークとクエリ点$q$についてのネットワークの出力を用いて、解作用素を推定 - $a(q)$から$u(q)$へのマッピングを学習すると思えば良い **Neural Operator** - カーネル積分作用素による畳み込みでモデル化 - **フーリエニューラル作用素** - 周波数領域では畳み込み積分を積として表せることを利用 - 高速フーリエ変換や、低周波成分だけの利用によって計算量を大幅に落とすことが可能 cf. クープマン作用素 潜在空間において線形ダイナミクスを仮定する(?) PINNと作用素学習を加えた研究もある **まとめ** - 解の精度の面で従来の数値シミュレーションには及ばないことも - シミュレーションデータを学習に使う場合はデータの作り方も工夫できる - PINNやDeepONet/NOは高精度かつ効率的な学習法が確立できれば従来のシミュレーションを圧倒できるかも