يوصى بشدة بإعداد بيئة افتراضية جديدة عن طريق الكتابة
virtualenv -p python3 feyn source feyn/bin/activate
قم أولاً بتثبيت numpy باستخدام pip install 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" هنا على جدول البيانات لإجراء الانحدار الرمزي عليه، مع فصل الأعمدة بمسافات أو فواصل أو علامات جدولة. تتحكم المعلمات الأخرى في البحث: هنا تحاول وحدات القوة الغاشمة مجموعات من 14 عملية أساسية في '14ops.txt' لمدة تصل إلى 60 ثانية، ويتم تجربة الملاءمة متعددة الحدود حتى الدرجة 3، ويتم تدريب الشبكة العصبية المحرفة لمدة تصل إلى 60 ثانية. إلى 500 عصر.
هذا الكود هو تطبيق محسّن لـ AI Feynman: طريقة مستوحاة من الفيزياء للانحدار الرمزي، Silviu-Marian Udrescu وMax Tegmark (2019) [Science Advances] وAI Feynman 2.0: الانحدار الرمزي الأمثل لـ Pareto يستغل نمطية الرسم البياني، Udrescu SM et آل. (2020) [أرخايف].
يرجى مراجعة هذه المقالة المتوسطة للحصول على شرح أكثر تفصيلاً لكيفية تشغيل التعليمات البرمجية.
للبدء، قم بتشغيل Compile.sh لتجميع ملفات فورتران المستخدمة في كود القوة الغاشمة.
يحتوي ai_feynman_example.py على مثال لتشغيل التعليمات البرمجية في بعض الأمثلة (الموجودة في دليل example_data). تتوافق الأمثلة مع المعادلات I.8.14 وI.10.7 وI.50.26 في الجدول 4 في الورقة. يمكن العثور على المزيد من ملفات البيانات التي يمكن اختبار الكود عليها في قاعدة بيانات الانحدار الرمزي لـ Feynman.
تحتوي الوظيفة الرئيسية للكود، التي يستدعيها المستخدم، على المعلمات التالية:
pathdir - المسار إلى الدليل الذي يحتوي على ملف البيانات
اسم الملف - اسم الملف الذي يحتوي على البيانات
BF_try_time - الحد الزمني لكل استدعاء القوة الغاشمة (يتم ضبطه افتراضيًا على 60 ثانية)
BF_ops_file_type - ملف يحتوي على الرموز التي سيتم استخدامها في كود القوة الغاشمة (يتم تعيينه افتراضيًا على "14ops.txt")
polyfit_deg - الدرجة القصوى لكثيرة الحدود التي تمت تجربتها بواسطة روتين الملاءمة متعدد الحدود (يتم ضبطها بشكل افتراضي على 4)
NN_epochs - عدد فترات التدريب (يتم ضبطه افتراضيًا على 4000)
vars_name - اسم المتغيرات التي تظهر في المعادلة (بما في ذلك اسم متغير الإخراج). يجب أن يتم تمريرها كقائمة من السلاسل، مع ظهور أسماء المتغيرات بنفس الترتيب كما هي في الملف الذي يحتوي على البيانات
test_percentage - النسبة المئوية لبيانات الإدخال التي سيتم الاحتفاظ بها جانبًا واستخدامها كمجموعة اختبار
يجب أن يكون ملف البيانات المراد تحليله ملفًا نصيًا يحتوي كل عمود على القيم الرقمية لكل متغير (تابع ومستقل). سيتم حفظ ملف الحل في الدليل المسمى "النتائج" تحت اسم Solution_{filename}. سيحتوي ملف الحل على عدة صفوف (تتوافق مع كل نقطة على حدود باريتو)، ويظهر كل صف:
اللوغاريتم المتوسط في الأساس 2 لخطأ المعادلة المكتشفة المطبقة على بيانات الإدخال (يمكن اعتبار هذا متوسط الخطأ بالبت)
اللوغاريتم التراكمي في الأساس 2 لخطأ المعادلة المكتشفة المطبقة على بيانات الإدخال (يمكن أن يكون هذا بمثابة الخطأ التراكمي بالبت)
تعقيد المعادلة المكتشفة (بالبت)
خطأ المعادلة المكتشفة المطبقة على البيانات المدخلة
التعبير الرمزي للمعادلة المكتشفة
إذا كانت نسبة الاختبار مختلفة عن الصفر، فسيتم إضافة رقم آخر في بداية كل صف، مما يوضح خطأ المعادلة المكتشفة في مجموعة الاختبار.
يسمح 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} }