開発プラクティス

【論文メモ】PINN(Physics-Informed Neural Networks)を読んだ

記事内に商品プロモーションを含む場合があります

どうも、コンです。

自分が個人的に気になっていた 「物理シミュレーション × 機械学習」 の元祖と言われている論文を読んでみました。

PINN(Physics-Informed Neural Networks)。物理学の知識をニューラルネットに直接組み込むという、なかなか味のある発想の手法です。

少し長くなりますが、読んでいただけると幸いです。

📖 何の論文か

2019年に Journal of Computational Physics に掲載された、Raissi・Perdikaris・Karniadakis の3氏による論文です。

ひと言でいうと、「データから学習するニューラルネットに、物理法則を組み込んで、少ないデータでも正しい予測ができるようにした」 という論文です。

物理学の支配方程式(ナビエ-ストークス、シュレディンガーなど)を損失関数の中に書き込む、というシンプルだけど効く工夫を提案しています。

🌱 PINN が生まれた背景

論文の動機はとても素直で、「自然科学・工学の現場ではデータがそもそも少ない」 という現実から出発しています。

従来のディープラーニング(データ依存)と物理学の世界(数百年積み上げた法則)の融合としてPINNが生まれたという背景図

「more often than not, in the course of analyzing complex physical, biological or engineering systems, the cost of data acquisition is prohibitive

(複雑な物理・生物・工学系を解析するときは、データ取得のコストが法外に高いことが多い)

たとえば風洞実験を 1 回回すのに数百万円かかったり、人体の血流をリアルタイムで観測するのが技術的に難しかったり。画像認識や自然言語処理のように「データを大量にかき集める」前提のディープラーニング手法は、こういう現場では力を発揮しきれません。

その一方で、自然界の現象には 何百年もかけて積み上げられた支配方程式 が既に存在しています。流体ならナビエ-ストークス、熱伝導なら熱方程式、量子力学ならシュレディンガー方程式、というように。論文の著者たちは、ここに目をつけました。

「this prior information can act as a regularization agent that constrains the space of admissible solutions to a manageable size」

(この事前知識は正則化として働き、許容される解の空間を扱える大きさに絞り込んでくれる)

つまり 「物理法則というルールをニューラルネットワークに教え込めば、少ないデータでも正しい予測ができるはず」 ——この発想から PINN が生まれた、という流れです。

🧠 PINN って何なのか

ひと言でまとめると、「データを覚える」と「物理法則を守る」を同時に学習するニューラルネットワークです。普通のニューラルネットワークと比べると、こんな違いがあります。

普通のニューラルネットワークPINN
学習で守るものデータとの一致だけデータ一致 + 物理法則の遵守
必要なデータ量大量(数千〜数百万点)少量(数百〜数千点でOK)
学習範囲外への外挿予測がガタつく(できない)物理法則に沿って延長できる
物理現象との整合性保証なし方程式を満たすよう設計

🔧 仕組み① 損失関数に物理を追加する

PINN の核心は 損失関数 にあります。普通のニューラルネットは「予測値と正解値のズレ」だけを最小化しますが、PINN はそこに「物理方程式からのズレ」も加えます。

普通のNNはMSE_dataだけを最小化、PINNはMSE_dataとMSE_physicsを同時に最小化することの比較図

普通のNNの損失 = MSE_data
                 (データとの誤差だけ)
PINNの損失     = MSE_data + MSE_physics
                 ↑           ↑
            データ誤差   +  物理法則からのズレ

たとえば 1 次元バーガース方程式(流体っぽい簡単なPDE)はこう書けます。

∂u/∂t + u·∂u/∂x − ν·∂²u/∂x² = 0

左辺を f(t, x) と置いてあげると、「f が 0 に近いほど物理法則を満たしている」という関係になります。あとは損失関数で の平均を小さくしていけば、ニューラルネットが自然と物理法則を守るように学習されていく、という仕掛けです。

⚙️ 仕組み② 自動微分で偏微分を「タダで」手に入れる

「ニューラルネットの出力を時間や空間で微分するなんて、どうやるの?」と思いたくなるところですが、ここで使われるのが 自動微分(Automatic Differentiation) です。

ニューラルネットu(t,x)を入力t,xで自動微分すると物理方程式に必要な偏微分が得られる仕組み図

もともと自動微分は、ニューラルネットの重みを誤差逆伝播で更新するために PyTorch や TensorFlow に組み込まれている機能ですが、著者たちはこれを 「入力に対する微分」 に転用しました。

ニューラルネット u(t, x) を時刻 t や位置 x で微分すると、∂u/∂t∂²u/∂x² がそのまま手に入る。それを方程式の左辺に代入してチェックするだけ、というシンプルな構造です。Python だとこんな感じです。

def f(t, x):
    u = neural_net(t, x)              # NNで u(t,x) を予測
    u_t = tf.gradients(u, t)[0]       # 時間微分(自動微分)
    u_x = tf.gradients(u, x)[0]       # 空間微分
    u_xx = tf.gradients(u_x, x)[0]    # 2階微分
    return u_t + u * u_x - 0.01 / 3.14 * u_xx
    # ↑ f が 0 に近づくよう学習させる

📍 PINN が使う3種類のデータ点

PINN のもうひとつ面白いところは、データの集め方です。入力は 「時刻 t と位置 x」という座標値だけ で、画像でもセンサー列でもありません。その上で、3種類の点を組み合わせて使います。

PINNが使う3種類のデータ点:初期データ・境界データ・コロケーション点

種類内容役割量の目安
① 初期データt=0 のときの観測値スタート状態を教える数十〜数百点
② 境界データ領域の端での値境界条件を教える数十〜数百点
③ コロケーション点領域内にランダムに撒いた座標(値は不要物理法則を満たすよう縛る数千〜数万点

特に ③のコロケーション点 が PINN らしさの象徴です。これは 観測値が存在しない場所 に「ここでも物理方程式を満たしてくれよ」という縛りをかけるためだけに撒く点で、値を持っていません。物理法則という「タダで使える制約」を最大限活用するための仕掛けですね。

🎯 どんな問題に向いているのか

PINN は、現象を支配する 微分方程式が分かっているとき に威力を発揮します。代表的な対象はこのあたり。

分野支配方程式応用例
力学・弾性体波動方程式、運動方程式振動・応力分布
熱伝導熱方程式温度分布の時間発展
流体ナビエ-ストークス方程式流速・圧力場
電磁気マクスウェル方程式電場・磁場
量子力学シュレディンガー方程式波動関数

論文で扱われているのは主に 偏微分方程式(PDE) ですが、変数が 1 つだけの 常微分方程式(ODE) も自然に扱えます。ただし ODE は古典的なルンゲ-クッタ法が十分強いので、PINN が活きるのは「ノイズだらけのデータからパラメータを逆推定したい」みたいな場面が多いようです。

論文では、PINN を以下の2タイプの問題に適用しています。

  • 順問題(Forward problem):物理法則が分かっているときに、未来や全体の解を予測する
  • 逆問題(Inverse problem):観測データから「未知の物理パラメータ」を推定する

🧪 特に衝撃的だった実験:カルマン渦の逆問題

論文では 4 つの代表的な物理方程式(シュレディンガー・アレン-カーン・ナビエ-ストークス・KdV)で PINN の威力を実証しています。

それぞれ興味深いのですが、個人的に一番衝撃を受けたのが ③ のナビエ-ストークス方程式 = カルマン渦の実験 でした。ここだけ深掘りします。

🌊 そもそもカルマン渦って何?

流れの中に円柱を置くと後ろに左右交互の渦ができる現象、それがカルマン渦

カルマン渦は、流れの中に円柱のような障害物を置くと、その後ろに左右交互に渦ができていく現象 です。身近なところだと:

  • 風で電線が「ヒューン」と鳴る音(エオリア音)
  • 川の橋脚の下流に見える渦の列
  • 旗が風でパタパタする原因

🍳 そもそも「逆問題」って何?

PINN の凄さを理解するには、「順問題」と「逆問題」 の違いをまず知っておく必要があります。料理に例えるとイメージしやすいです。

順問題(レシピから料理を作る、易しい)と逆問題(料理を食べてレシピを当てる、超難しい)の対比

  • 順問題:レシピ(方程式 + 初期条件)から料理(未来の振る舞い)を作る → 古典的な数値計算で解ける
  • 逆問題:完成した料理を一口食べて「塩何グラム? 火加減何度?」を当てる → 普通に考えるとほぼ不可能

つまり、水の流れを観測したデータだけから、「この水ってどんな性質の流体?」を当てる、というの論文の中身です。

🧪 PINN は何をやったのか

速度データ5000点(全体の1%)だけから慣性係数・粘性係数・観測されていない圧力場まで推定した実験のセットアップ

PINN に与えたデータは次のとおりです。

項目内容
流れの速度 u, v円柱の後ろの長方形領域での観測値
わずか 5,000 点(全体の 1%)
圧力データ1 点も与えない

速度 u(横方向)・v(縦方向)は普通の風洞実験などで測れる量で、これは現場の感覚にも合います。そして PINN に推定してほしいものはこちら。

推定対象真の値PINN の推定値
慣性係数 λ₁1.0000.999(誤差 0.078%)
粘性係数 λ₂0.01000.01047(誤差 4.67%)
圧力場 p(t, x, y)(与えていない)空間全体を高精度で復元

注目すべきは 圧力データを 1 点も与えていないのに、圧力場の全体を空間的に再構成してしまった ところです。普通の機械学習(LightGBM や CNN など)では、観測していない量を予測するのは原理的に不可能なので、これは本当に衝撃的でした。

🤔 なぜそんなことが可能なのか

種明かしすると、PINN は 「速度と圧力は物理法則でつながっている」 ことを知っているからです。ナビエ-ストークス方程式の中身を見ると、速度の微分と圧力の微分が同じ式の中に登場します。

∂u/∂t + λ₁(u·∂u/∂x + v·∂u/∂y) = -∂p/∂x + λ₂(∂²u/∂x² + ∂²u/∂y²)
                                    ↑
                            ここに圧力が出てくる

つまり、速度の振る舞いが分かれば、それと整合する圧力の分布はただ 1 つに定まる、という構造になっています。普通の機械学習は「データの相関」しか見ないので、速度から圧力を当てることはできません。PINN は「方程式の構造」そのものを使うので、観測していない物理量も逆算できる わけです。

🎯 3つのすごいと思った点

  1. 観測していない量を推定できる:「観測されたものから学ぶ」という機械学習の根本的な限界を、物理法則の組み込みで突破した
  2. 超少量データで足りる:5,000 点(全体の 1%)だけで、未知パラメータ + 圧力場まで復元
  3. ノイズに強い:観測データに 1% のランダムノイズを加えてもパラメータ推定誤差は λ₁ 0.17%・λ₂ 5.70%。普通の逆問題アルゴリズムはノイズに非常に弱いのに、PINN は物理法則を「絶対のルール」として使っているおかげで耐性がある

個人的にいちばん響いたのは ①「観測してない量も推定できる」です。工場のセンサーは「測れる量・測れない量」が常に分かれていて、後者は推定値で穴埋めするものだ、という感覚を普段持っていたので、「物理法則をちゃんと使うとそれが定量的にできる」 という事実は応用できそうだなって思いました。

📝 ざっくり3行でまとめると

  1. PINN は「データ誤差 + 物理方程式からのズレ」を同時に最小化するニューラルネット
  2. 自動微分で偏微分を直接計算できるので、損失関数に物理方程式そのものを書き込める
  3. 少量データ・ノイズあり・観測不能量の推定(逆問題)に強く、PDE が書ける物理現象なら広く使える

感想

正直、論文を読み始める前は「物理法則に従うように × NN を学習させるってどうやってやるんだろ」というふんわりした疑問しかなかったのですが、PINN の 「物理法則を損失関数に書く」というアイデアがあまりにシンプルで綺麗だった ので、読んでいて気持ちよかったです。

10 年くらい前、NN でシミュレーション結果を予測する話をしていた頃、「いつかは学習させていない外挿部分まで予測できるようになるんじゃないか」と同僚と話していたことがあったんですが、実はその時点ですでに、数年後(2019 年)にこういう形で実現される技術が動き始めていたわけです。気づくのに 7 年かかった、ということになりますね。

そして読み終えたあとに残った素朴な感想は、「これが2019年の論文なら、いまの2026年では実装側ではどこまで進んでいるんだろう」というものです。

次は新しい手法を順番に覗いていきたいなと思っています。

ここまで読んでいただきありがとうございました。

参考

  • Raissi M., Perdikaris P., Karniadakis G.E. (2019). 「Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations」 J. Comput. Phys., 378:686-707. DOI
  • 公式実装: maziarraissi/PINNs(GitHub)

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA