強烈建議透過鍵入以下內容來設定新的虛擬環境
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)
此範例將在大約 10-30 分鐘內解決,具體取決於您擁有的電腦以及是否有 GPU。
這裡的「example.txt」包含要執行符號迴歸的資料表,列之間用空格、逗號或製表符分隔。其他參數控制搜尋:這裡暴力模組嘗試組合「14ops.txt」中的 14 種基本操作長達 60 秒,多項式擬合嘗試高達 3 次,並且插值神經網路被訓練最多到 500 個紀元。
此代碼是AI Feynman 的改進實現:符號回歸的物理啟發方法,Silviu-Marian Udrescu 和Max Tegmark (2019) [科學進展] 和AI Feynman 2.0:利用圖模組化的帕累托最優符號回歸,Udrescu SM等等人。 (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 - 保留並用作測試集的輸入資料的百分比
要分析的資料檔案應該是文字文件,每列包含每個(因變數和自變數)的數值。解決方案檔案將以名稱solution_{filename}保存在名為「results」的目錄中。解決方案檔案將包含幾行(對應於帕累托前緣上的每個點),每行顯示:
應用於輸入資料的已發現方程式的誤差以 2 為基數的平均對數(這可視為以位元為單位的平均誤差)
應用於輸入資料的已發現方程式的誤差以 2 為底的累積對數(這可視為以位元為單位的累積誤差)
發現的方程式的複雜度(以位元為單位)
所發現的方程式應用於輸入資料的誤差
所發現方程式的符號表達式
如果 test_percentage 不為零,則在每行的開頭加上一個數字,顯示測試集上發現的方程式的錯誤。
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 Feynman 工作的某些方面,請引用以下內容:
@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} }