Настоятельно рекомендуется настроить новую виртуальную среду, набрав
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 минут, в зависимости от того, какой у вас компьютер и есть ли у вас графический процессор.
Здесь «example.txt» содержит таблицу данных для выполнения символьной регрессии со столбцами, разделенными пробелами, запятыми или знаками табуляции. Остальные параметры управляют поиском: здесь модули перебора пробуют комбинации 14 основных операций в «14ops.txt» в течение 60 секунд, полиномиальные подгонки пробуются до степени 3, а интерполирующая нейронная сеть обучается до до 500 эпох.
Этот код представляет собой улучшенную реализацию AI Feynman: физический метод символической регрессии, Сильвиу-Мариан Удреску и Макс Тегмарк (2019) [Science Advances] и AI Feynman 2.0: Парето-оптимальная символическая регрессия, использующая модульность графа, Удреску С.М. и др. ал. (2020) [arXiv].
Пожалуйста, ознакомьтесь с этой статьей Medium для более подробного объяснения того, как запустить код.
Чтобы начать, запустите compile.sh, чтобы скомпилировать файлы Фортрана, используемые для кода перебора.
ai_feynman_example.py содержит пример запуска кода на некоторых примерах (находится в каталоге example_data). Примеры соответствуют уравнениям I.8.14, I.10.7 и I.50.26 в таблице 4 статьи. Дополнительные файлы данных, на которых можно протестировать код, можно найти в базе данных символической регрессии Фейнмана.
Основная функция кода, вызываемая пользователем, имеет следующие параметры:
pathdir - путь к каталогу, содержащему файл данных
имя_файла - имя файла, содержащего данные
BF_try_time — ограничение времени на каждый вызов перебора (по умолчанию установлено 60 секунд)
BF_ops_file_type — файл, содержащий символы, которые будут использоваться в коде перебора (по умолчанию установлено «14ops.txt»)
polyfit_deg — максимальная степень полинома, проверенная процедурой подгонки полинома (по умолчанию установлено значение 4)
NN_epochs — количество эпох обучения (по умолчанию установлено 4000)
vars_name — имя переменных, входящих в уравнение (включая имя выходной переменной). Его следует передать в виде списка строк, в котором имена переменных появляются в том же порядке, в котором они находятся в файле, содержащем данные.
test_percentage — процент входных данных, которые следует оставить в стороне и использовать в качестве тестового набора.
Файл данных, подлежащий анализу, должен представлять собой текстовый файл, в котором каждый столбец содержит числовые значения каждой (зависимой и независимой) переменной. Файл решения будет сохранен в каталоге «results» под именем Solution_{имя_файла}. Файл решения будет содержать несколько строк (соответствующих каждой точке границы Парето), каждая строка показывает:
средний логарифм по основанию 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, чтобы отобразить все доступные параметры, которые можно передать в функцию.
Если вы сравниваете, развиваете или используете аспекты работы ИИ Фейнмана, пожалуйста, укажите следующее:
@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} }