次のように入力して、新しい仮想環境をセットアップすることを強くお勧めします。
virtualenv -p python3 feyn source feyn/bin/activate
まずpip install numpy
で numpy をインストールします。 「aifeynman」パッケージは PyPI で入手でき、 pip install aifeynman
でインストールできます。
現時点では、AI Feynman は Linux および Mac 環境でのみサポートされていることに注意してください。
クリーンなディレクトリに移動し、次の Python コマンドを実行します。
import aifeynman aifeynman.get_demos("example_data") # Download examples from server aifeynman.run_aifeynman("./example_data/", "example1.txt", 60, "14ops.txt", polyfit_deg=3, NN_epochs=500)
この例は、使用しているコンピューターと GPU の有無に応じて、約 10 ~ 30 分で解決されます。
ここで、「example.txt」には、シンボリック回帰を実行するデータ テーブルが含まれており、列はスペース、カンマ、またはタブで区切られています。他のパラメーターは検索を制御します。ここでは、ブルート フォース モジュールが「14ops.txt」内の 14 の基本操作の組み合わせを最大 60 秒間試行し、多項式近似が次数 3 まで試行され、補間ニューラル ネットワークが次数までにトレーニングされます。 500エポックまで。
このコードは、「AI Feynman: a Physics-Inspired Method for Symbolic Regression」(Silviu-Marian Udrescu および Max Tegmark (2019) [Science Advances]) および「AI Feynman 2.0: Pareto-optimal symbolic regression Exploitinggraph Modularity」(Udrescu SM et) の改良された実装です。アル。 (2020) [arXiv]。
コードを実行する方法の詳細については、この Medium の記事を参照してください。
まず、compile.sh を実行して、ブルート フォース コードに使用される fortran ファイルをコンパイルします。
ai_feynman_example.py には、いくつかのサンプル (example_data ディレクトリにある) でコードを実行するサンプルが含まれています。例は、論文の表 4 にある式 I.8.14、I.10.7、および I.50.26 に対応します。コードをテストできるその他のデータ ファイルは、ファインマン記号回帰データベースにあります。
ユーザーによって呼び出されるコードの main 関数には、次のパラメータがあります。
pathdir - データファイルを含むディレクトリへのパス
filename - データを含むファイルの名前
BF_try_time - 各ブルート フォース コールの時間制限 (デフォルトでは 60 秒に設定)
BF_ops_file_type - ブルート フォース コードで使用されるシンボルを含むファイル (デフォルトでは「14ops.txt」に設定)
Polyfit_deg - 多項式フィット ルーチンによって試行される多項式の最大次数 (デフォルトは 4 に設定されます)
NN_epochs - トレーニングのエポック数 (デフォルトでは 4000 に設定)
vars_name - 方程式に現れる変数の名前 (出力変数の名前を含む)。これは、データを含むファイル内と同じ順序で変数名が表示される文字列のリストとして渡す必要があります。
test_percentage - 保存しておいてテストセットとして使用する入力データの割合
分析するデータ ファイルは、各列に各 (従属および独立) 変数の数値が含まれるテキスト ファイルである必要があります。ソリューション ファイルは、「results」というディレクトリに solution_{filename} という名前で保存されます。ソリューション ファイルには複数の行 (パレート フロンティアの各点に対応) が含まれており、各行には次の内容が表示されます。
入力データに適用された発見された方程式の誤差の 2 を底とする平均対数 (これはビット単位の平均誤差と考えることができます)
入力データに適用された発見された方程式の誤差の底 2 の累積対数 (これはビット単位の累積誤差と考えることができます)
発見された方程式の複雑さ (ビット単位)
入力データに適用された発見された方程式の誤差
発見された方程式の記号式
test_percentage がゼロ以外の場合、各行の先頭に数値が 1 つ追加され、テスト セットで検出された方程式の誤差が示されます。
ai_feynman_terminal_example.py を使用すると、コマンド ラインから aiFeynman 関数を呼び出すことができます。 (例: python ai_feynman_terminal_example.py --pathdir=../example_data/ --filename=example1.txt)。 python ai_feynman_terminal_example.py --help を使用して、関数に渡すことができるすべての使用可能なパラメーターを表示します。
AI ファインマンの作品と比較したり、その作品に基づいて構築したり、その側面を使用したりする場合は、次の点を引用してください。
@article{udrescu2020ai, title={AI Feynman: A physics-inspired method for symbolic regression}, author={Udrescu, Silviu-Marian and Tegmark, Max}, journal={Science Advances}, volume={6}, number={16}, pages={eaay2631}, year={2020}, publisher={American Association for the Advancement of Science} }
@article{udrescu2020ai, title={AI Feynman 2.0: Pareto-optimal symbolic regression exploiting graph modularity}, author={Udrescu, Silviu-Marian and Tan, Andrew and Feng, Jiahai and Neto, Orisvaldo and Wu, Tailin and Tegmark, Max}, journal={arXiv preprint arXiv:2006.10782}, year={2020} }