
2026/03/17
こんにちは!株式会社HIBARIの戸谷です。普段は沼津高専で流体解析の研究をしています。
突然ですが、F1マシンや飛行機がなぜあの形をしているか知っていますか?答えは「空気抵抗を減らす(あるいは揚力を得る)ため」ですが、じゃあどうやって「どの形がベストか」を調べるのか。
それが 流体シミュレーション(CFD) です。コンピュータ上で空気の流れを計算して、設計を最適化します。ただ、このCFDには大きな課題があって、準備がめちゃくちゃ大変 なんです。
今回は、その面倒な部分をAIでスキップできるかもしれない PINNs(ピンズ) (Physics-Informed Neural Networks:物理情報ニューラルネットワーク)という手法を試してみました。

左が正解(数学で求めた厳密な答え)、右がAIの予測。円柱の上下で空気が加速する(赤い部分)パターンが、ほぼ完全に一致している
どうでしょう。左右ほとんど見分けがつかないと思います。
右側はニューラルネット(AI)が出した予測です。しかもこのAIには、流れのデータを一切見せていません。 教えたのは物理法則(方程式)だけ。それなのに正解とほぼ同じ結果が出ています。
飛行機やF1の空力設計には CFD(Computational Fluid Dynamics:数値流体力学) が使われています。空間を細かいマス目(メッシュ)に切って、各マスで物理の方程式を解くことで、空気の流れを計算します。
問題はこの メッシュ生成。NASAが2014年に発表したレポート[1]では、CFDプロジェクト全体の工数のうち、メッシュ生成が大きな割合を占めていると指摘されています。複雑な形状(エンジンの吸気ポートの内部とか)だと、メッシュを作るだけで何日もかかることもあります。
「メッシュなしで流体シミュレーションできたらいいのに」
→ それを実現するのがPINNsです。
ニューラルネットに座標 (x,y)(x,y) を入力すると、その点での流れの状態を返す
ただし、損失関数(学習の指標)に 物理法則の方程式を直接入れる
方程式を満たすように学習するので、教師データもメッシュも不要
普通の機械学習は「大量のデータ → パターンを学習」ですが、PINNsは 「方程式 → 解を学習」 です。2019年にRaissiらが提案し[2]、それ以降さまざまな分野への応用が急速に広がっています[3]。
PINNsは3つの「約束」を守るように学習します。
約束①:物理法則を満たすこと
今回の場合、空気の流れを支配する方程式(ラプラス方程式)を使います。計算領域内のランダムな点で、NNの出力がこの方程式を満たしているかチェックします。
約束②:円柱の壁を空気が貫通しないこと
当たり前ですが、空気は壁を通り抜けられません。円柱の表面で、速度の壁に垂直な成分がゼロになるように制約をかけます。
約束③:遠くの空気はまっすぐ流れること
円柱から十分に離れた場所では、流れは一様(まっすぐ)に戻るはずです。
この3つの約束を全部同時に満たすようにNNのパラメータを調整する。それがPINNsの学習です。
# 3つの約束を損失関数にする
loss = loss_physics # ① 物理法則を満たしているか
+ 50 * loss_surface # ② 壁を貫通していないか(一番大事なので重み50)
+ 20 * loss_farfield # ③ 遠くでまっすぐ流れているか50とか20は「どの約束をどれだけ重視するか」の重み。壁を突き破るのは一番マズいので、重みを大きくしています。
物理法則のチェックでは、PyTorchの 自動微分 という機能を使います。これはNNの出力をxやyで微分した値を、正確に自動で計算してくれる機能です。
# PyTorchの自動微分で、出力の2階偏微分を計算
psi_x = torch.autograd.grad(psi, x, create_graph=True)[0] # ∂ψ/∂x
psi_xx = torch.autograd.grad(psi_x, x, create_graph=True)[0] # ∂²ψ/∂x²
圧力の比較。青が低圧、赤が高圧。前方は高圧(風がぶつかる)、側方は低圧(空気が加速する)
速い流れの場所は圧力が低い(ベルヌーイの定理[4])。この「速い=低圧」は、飛行機の翼が揚力を生む原理や、F1マシンがダウンフォースを得る仕組みと全く同じです。

円柱表面での圧力。青い線が正解、赤い破線がAIの予測。ほぼ重なっている
この問題には Cp=1−4sin2θCp=1−4sin2θ という数学的な厳密解が存在します[4]。PINNsの予測(赤い破線)が厳密解(青い線)にピッタリ重なっていることが分かります。

予測誤差のマップ。ほぼ全面が白(誤差ゼロ)。円柱のすぐ近くにわずかな誤差がある程度
RMSE(二乗平均平方根誤差)は0.002。最大誤差でも0.031。ほぼ全域で正解と一致しています。約8,500個のパラメータを持つニューラルネットが、5分弱の学習でこの精度に達しました。

学習中の損失の推移。物理法則(青)・壁の条件(赤)・遠方の条件(緑)すべてが順調に下がっている
現時点でPINNsが従来のCFDを完全に置き換えるわけではありません。ただ、以下の点で大きな可能性があります。
メッシュ生成が不要になる。 CFDで最も時間がかかる工程をスキップできます。ランダムに点を撒くだけでOKです。
逆問題に強い。 例えば「実験で数カ所の圧力を測ったデータから、流れ場全体を復元したい」みたいなケース。従来は全く別の手法が必要でしたが、PINNsなら損失関数にデータの項を追加するだけで対応できます[3]。
GPUでそのまま動く。 PyTorchで書いているので、特別な並列化なしにGPUの恩恵を受けられます。
一方で、複雑な形状や乱流のような難しい問題では精度がまだ足りないケースもあり、世界中で改善手法の研究が活発に行われています[5]。
PINNs で円柱まわりの流れを解き、解析解とほぼ一致する結果が得られた(RMSE 0.002)
教師データなし・メッシュなし。物理法則だけでシミュレーション可能
流体シミュレーションの「準備が大変」問題を解決する手法として、今後の発展が期待される
静岡県沼津市を拠点とする株式会社HIBARIでは、AI×専門領域の融合に取り組んでいます。
[1] Slotnick, J. et al. (2014). CFD Vision 2030 Study: A Path to Revolutionary Computational Aerosciences. NASA/CR-2014-218178. https://ntrs.nasa.gov/citations/20140003093
[2] 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. Journal of Computational Physics, 378, 686-707. https://doi.org/10.1016/j.jcp.2018.10.045
[3] Cai, S. et al. (2021). Physics-informed neural networks (PINNs) for fluid mechanics: A review. Acta Mechanica Sinica, 37, 1727-1738. https://doi.org/10.1007/s10409-021-01148-1
[4] Anderson, J. D. (2016). Fundamentals of Aerodynamics (6th ed.). McGraw-Hill Education.
[5] Wang, S., Teng, Y., & Perdikaris, P. (2021). Understanding and mitigating gradient flow pathologies in physics-informed neural networks. SIAM Journal on Scientific Computing, 43(5), A3055-A3081. https://doi.org/10.1137/20M1318043
株式会社HIBARI
株式会社HIBARIは、「”現場の抱える課題”をデジタルツイン×AIで解決する」をミッションに掲げる、沼津高専発のAIスタートアップです。静岡県を拠点に、テクノロジーを駆使しながらも現場に寄り添った「ものづくり」を発信しています。
AI開発やシステム導入に関するご相談など、お気軽にお問い合わせください。
Contact