Sangat disarankan untuk menyiapkan lingkungan virtual baru dengan mengetik
virtualenv -p python3 feyn source feyn/bin/activate
Pertama instal numpy dengan pip install numpy
. Paket 'aifeynman' tersedia di PyPI dan dapat diinstal dengan pip install aifeynman
.
Perlu diperhatikan bahwa untuk saat ini, AI Feynman hanya didukung untuk lingkungan Linux dan Mac.
Pindah ke direktori bersih dan jalankan perintah Python berikut:
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)
Contoh ini akan diselesaikan dalam waktu sekitar 10-30 menit tergantung pada komputer apa yang Anda miliki dan apakah Anda memiliki GPU.
Di sini 'example.txt' berisi tabel data untuk melakukan regresi simbolis, dengan kolom dipisahkan dengan spasi, koma, atau tab. Parameter lain mengontrol pencarian: di sini modul brute force mencoba kombinasi dari 14 operasi dasar di '14ops.txt' hingga 60 detik, kecocokan polinomial dicoba hingga derajat 3, dan jaringan saraf interpolasi dilatih hingga tingkat 3. hingga 500 zaman.
Kode ini merupakan implementasi yang ditingkatkan dari AI Feynman: Metode Terinspirasi Fisika untuk Regresi Simbolik, Silviu-Marian Udrescu dan Max Tegmark (2019) [Science Advances] dan AI Feynman 2.0: Regresi simbolik optimal pareto yang memanfaatkan modularitas grafik, Udrescu SM et al. (2020) [arXiv].
Silakan periksa artikel Medium ini untuk penjelasan lebih rinci tentang cara menjalankan kode.
Untuk memulai, jalankan kompilasi.sh untuk mengkompilasi file fortran yang digunakan untuk kode brute force.
ai_feynman_example.py berisi contoh menjalankan kode pada beberapa contoh (ditemukan di direktori example_data). Contohnya sesuai dengan persamaan I.8.14, I.10.7 dan I.50.26 pada Tabel 4 di makalah. File data lainnya yang dapat digunakan untuk menguji kode dapat ditemukan di Database Regresi Simbolik Feynman.
Fungsi utama kode yang dipanggil oleh pengguna memiliki parameter berikut:
pathdir - jalur ke direktori yang berisi file data
nama file - nama file yang berisi data
BF_try_time - batas waktu untuk setiap panggilan brute force (ditetapkan secara default ke 60 detik)
BF_ops_file_type - file yang berisi simbol yang akan digunakan dalam kode brute force (diatur secara default ke "14ops.txt")
polyfit_deg - derajat maksimum polinomial yang dicoba oleh rutinitas kecocokan polinomial (ditetapkan secara default ke 4)
NN_epochs - jumlah epoch untuk pelatihan (ditetapkan secara default ke 4000)
vars_name - nama variabel yang muncul dalam persamaan (termasuk nama variabel keluaran). Ini harus diteruskan sebagai daftar string, dengan nama variabel muncul dalam urutan yang sama seperti di file yang berisi data
test_percentage - persentase data masukan yang akan disimpan dan digunakan sebagai set pengujian
File data yang akan dianalisis harus berupa file teks dengan setiap kolom berisi nilai numerik dari setiap variabel (dependen dan independen). File solusi akan disimpan dalam direktori bernama "hasil" dengan nama solution_{nama file}. File solusi akan berisi beberapa baris (sesuai dengan setiap titik di perbatasan Pareto), setiap baris menunjukkan:
logaritma rata-rata berdasarkan 2 kesalahan persamaan yang ditemukan yang diterapkan pada data masukan (ini dapat dianggap sebagai kesalahan rata-rata dalam bit)
logaritma kumulatif berdasarkan 2 kesalahan persamaan yang ditemukan diterapkan pada data masukan (ini dapat dianggap sebagai kesalahan kumulatif dalam bit)
kompleksitas persamaan yang ditemukan (dalam bit)
kesalahan persamaan yang ditemukan diterapkan pada data masukan
ekspresi simbolis dari persamaan yang ditemukan
Jika test_percentage berbeda dari nol, satu angka lagi ditambahkan di awal setiap baris, menunjukkan kesalahan persamaan yang ditemukan pada set pengujian.
ai_feynman_terminal_example.py memungkinkan pemanggilan fungsi aiFeynman dari baris perintah. (misalnya python ai_feynman_terminal_example.py --pathdir=../example_data/ --filename=example1.txt). Gunakan python ai_feynman_terminal_example.py --help untuk menampilkan semua parameter yang tersedia yang dapat diteruskan ke fungsi.
Jika Anda membandingkan, mengembangkan, atau menggunakan aspek karya AI Feynman, harap kutip hal berikut:
@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} }