کشف فرمولهای ریاضی از دل دادهها با ابزار یادگیری نمادین PySR — Symbolic Learning in Python and Julia
خلاصه
پروژه PySR یک ابزار متنباز قدرتمند در پایتون و جولیا برای رگرسیون نمادین است. این ابزار به توسعهدهندگان کمک میکند تا به جای مدلهای جعبهسیاه یادگیری ماشین، عبارات ریاضی قابلفهم و بهینهای را از روی دادهها کشف کنند.
معرفی پروژه PySR و حل مسئله رگرسیون نمادین
ابزار PySR یک کتابخانه متنباز است که وظیفه انجام «رگرسیون نمادین» (Symbolic Regression) را بر عهده دارد. برخلاف مدلهای سنتی یادگیری ماشین و شبکههای عصبی عمیق که مانند جعبهسیاه عمل میکنند، هدف رگرسیون نمادین پیدا کردن یک عبارت یا فرمول ریاضی صریح و قابلتفسیر است که بتواند دادههای ورودی را به خروجی مرتبط سازد.
این ابزار از سال ۲۰۲۰ توسعه یافته و هسته اصلی جستجوی آن با زبان Julia (کتابخانه SymbolicRegression.jl) پیادهسازی شده است تا بالاترین کارایی و سرعت ممکن را ارائه دهد. رابط کاربری اصلی این کتابخانه در Python قرار دارد و به شکلی طراحی شده که مهندسان داده و برنامهنویسان به راحتی بتوانند از آن استفاده کنند.
معماری و نحوه عملکرد
هسته جستجوی PySR مبتنی بر الگوریتمهای تکاملی و ژنتیک است. در واقعیت، فرآیند آموزش مدل شامل صدها هزار جهش و ارزیابی معادلات مختلف در چند نخ (multithreaded) است که بهترین ترکیب را از نظر دقت و سادگی پیدا کند.
از ویژگیهای فنی برجسته این ابزار میتوان به موارد زیر اشاره کرد:
- پشتیبانی از عملگرهای پایه و سفارشی (نوشته شده با سینتکس زبان Julia)
- امکان تعریف توابع زیان سفارشی (Custom Loss)
- خروجی گرفتن به فرمتهای مختلف از جمله SymPy، کتابخانههای مشتقپذیر JAX و PyTorch، و همچنین تابعهای ساده لامبدا
- قابلیت ذخیرهسازی وضعیت جستجو و ادامه آن (
warm_start) - امکان کاهش نویز و انتخاب ویژگیها به صورت خودکار
نحوه نصب و استفاده سریع
برای شروع کار میتوانید به راحتی کتابخانه را با pip نصب کنید:
bash
pip install pysr
یا از طریق conda اقدام نمایید:
bash
conda install -c conda-forge pysr
نکته مهم این است که وابستگیهای زبان جولیا بهصورت خودکار در اولین ایمپورت شدن کتابخانه نصب خواهند شد.
الگوی استفاده از PySR کاملاً مشابه کتابخانه محبوب scikit-learn است. نمونه کد زیر نحوه تعریف مدل و آموزش آن را نشان میدهد:
python
import numpy as np
from pysr import PySRRegressor
# تولید دادههای تستی
X = 2 * np.random.randn(100, 5)
y = 2.5382 * np.cos(X[:, 3]) + X[:, 0] ** 2 - 0.5
# تعریف مدل
model = PySRRegressor(
maxsize=20,
niterations=40,
binary_operators=["+", "*"],
unary_operators=["cos", "exp", "sin", "inv(x) = 1/x"],
)
# آموزش مدل روی دادهها
model.fit(X, y)
# چاپ معادلات پیدا شده
print(model)
پس از اتمام آموزش، مدل لیستی از معادلات را بر اساس پیچیدگی و میزان خطا (Loss) در یک دیتافریم pandas ذخیره میکند که با دستور model.equations_ قابل دسترسی است.
سیگنالهای بلوغ و وضعیت پروژه
این مخزن گیتهاب با داشتن بیش از ۴۱۰۰ ستاره و فعالیت مستمر تا سالهای اخیر، یک پروژه بالغ و فعال در حوزه هوش مصنوعی قابلتفسیر (Explainable AI) به شمار میرود. لایسنس پروژه Apache-2.0 بوده و مستندات کامل آن روی وبسایت اختصاصی pysr.ai در دسترس است.
جایگاه در هکرنیوز و مقایسه با ابزارها
در بحثهای اخیر هکرنیوز، توسعهدهندگان به ابزارهای جایگزین و روشهای قطعیتر (مانند پیادهسازیهای مبتنی بر JAX برای رگرسیون نمادین) نیز اشاره کردهاند. با این حال، PySR به لطف ترکیب قدرت زبان جولیا و سادگی اکوسیستم پایتون، یکی از انتخابهای اصلی مهندسان برای «تقطیر نمادین» (Symbolic Distillation) شبکههای عصبی و تبدیل آنها به فرمولهای تحلیلی شفاف محسوب میشود.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل