(PINN) 物理情報ニューラル ネットワークの簡単な理解

物理学に基づいた深層学習

(I.はじめに

        物理情報ニューラル ネットワークの作者には、Maziar Raissi、  Paris Perdikaris、  George Em Karniadakisが含まれます。このネットワークは主に偏微分方程式の解法に使用されます。利用可能なデータの性質と配置に応じて、2 つの異なるタイプのアルゴリズムがあります。設計されたもの、つまり連続時間モデルと離散時間モデル。Burgers 方程式、Shrödinger 方程式、Allen-Cahn 方程式など、いくつかの方程式が設計されています。すべてのコードは github 公式 Web サイトで入手できます。この記事は主に PINN コードの調整と簡単な理解について説明します。

(2) コード調整

        コンピューターの急速な発展に伴い、多くのプログラミング言語、エディター、フレームワークなどが急速に更新されており、github から取得した PINN コードには 2019 以前のバージョンが必要です。この記事で使用されている主なアーキテクチャは次のとおりです: Python 3.7.0 + tensorflow 1.15.4.   他のパッケージは手動でダウンロードできます。

        発生した問題の一部:

1. 描画パッケージがダウンロードできない

        「プロットパッケージのインストール」をクリックして何度ダウンロードしても反応がなく、最終的にこのプロットは自分で書いた Python モジュールであることがわかりました。気にしなければ、実行してもエラーは発生しません。コンパイル時にエラーが表示されるだけですが、これは動的パス調整の問題です。今すぐ:

         エラーの報告を回避したい場合は、[ファイル] -> [設定] -> [プロジェクト: プロジェクト名] -> [プロジェクト構造] のソース パスに PINNs-master を追加できます。次に、「適用」をクリックしてコンパイルエラーを解決します。

2.tensorflow 2.0 以降には互換性がありません

        import tensorflow.compat.v1 as tf を使用しても、tf.contrib というエラーが発生します。上位のバージョンはすべて contrib を非推奨にしているため、tensorflow のバージョンを下げることしかできません。conda を使用して仮想環境を再度作成すると、Python 3.7 と tensorflow 1.15.4 のインストール時に実行できるようになります。

3. Savefig は絵を描くことができません

         コードの最後の行 savefig() は、Figure ファイルに保存された画像があるためコメント化されています。画像を再描画したい場合は、コメント # を削除できますが、コンピュータはエラーを報告するため、texlive をインストールする必要があります。インストール パッケージを conda ではなくオンラインでダウンロードする必要があるので、そこから直接ダウンロードしてください。圧縮ファイルをダウンロードしたので解凍すると、

        texlive を開き、ダブルクリックして install-tl-windows ファイルを開きます

         [詳細設定] をクリックし、必要に応じて情報を選択し、[インストール] をクリックします。待ち時間は約 30 分かかります。

         これで、コードを実行する準備がほぼ整いました。実行プロセスを次の図に示します。

(3) コード解析

 1. ニューラル ネットワーク層の層と関数 u(t,x)

         ニューラルネットワークは全部で9層あり、各層の入力と出力(入力、出力)の形と大きさ(形状)は順番になっており、1層目は(2,20)、2層目から8層目まではすべて( 20, 20)、最後の層は (20, 20)、層は (20,1) です。簡単に理解すると、x と t という 2 種類のデータを入力し、u という 1 種類のデータを出力します。方程式では、u は x と t の関数、つまり u(t,x) です。

 2.鉄道模型

         X_u_train の形状は (2000, 2) で、データの 2 列はそれぞれ x と t です。u_train の形状は (2000, 1) で、データの 1 列が u です。レイヤー 上記と同じ。lb は 2 つの列の 2 つの最小値 [-1, 0] です。ub は 2 つの列の 2 つの最大値 [1, 0.99] です。

3.f(t,x)関数 

        公式のバーガーの方程式の関数 f(t, x) は次のように定義されます。  

 

         このうち、u_t は関数 u(t,x) の t 上の勾配、u_x は関数 u(t,x) の x 上の勾配、u_xx は関数 u(t,x) の x 2 上の勾配です。

         上式は f、つまり関数 f(t,x) の値は一般的に 0 であるため、深層学習では損失値が存在し、その pre 値は一般的に 0 付近になります。

4.平均二乗誤差MSE

        この物理情報ニューラル ネットワークは一般的なニューラル ネットワークとは異なり、損失に使用される MSE は次の 2 つの部分で構成されます。

 

         1 つは関数 u(t,x) の平均分散を求めることであり、もう 1 つは関数 f(t,x) の平均分散を求め、その後 2 つを加算することです。これがPINNと一般的なニューラルネットワークの最大の違いであり、物理的特性を導入し、損失関数を追加しています。

5. PINN についての簡単な説明

        PINN は偏微分方程式を解くのに優れた結果をもたらし、より高い精度を得るために使用するトレーニング セットを少なくすることができます。これは欠点でもあります。データが大きい場合、データの次元が 1 つ追加されるため、トレーニング速度が非常に遅くなります。実行速度が向上します。ほぼ指数関数的に。

おすすめ

転載: blog.csdn.net/GuoTianLiang00/article/details/129250807