Keplearn — небольшой движок символической регрессии на Rust. Он получает таблицу измерений и пытается найти не просто подходящую кривую, а короткую формулу, которая связывает столбцы. Например, по массам, расстоянию и силе программа может восстановить выражение m1 × m2 / r² — примерно так Кеплер выводил законы движения планет из астрономических таблиц.
Инструмент принимает CSV или TSV через stdin и возвращает кандидатов в JSON. Для сложных поисков можно ограничить время, а одинаковый вход всегда даёт идентичный результат. Движок последовательно упрощает задачу, применяя обратимые преобразования и проверяя алгебраические формы. Кандидаты оцениваются на отложенной части данных со штрафом за сложность.
Коэффициенты дополнительно приводятся к простым дробям и выражениям с π, e и √2, но только если проверка подтверждает, что точность не пострадала. Итоговый R² считается заново уже для напечатанной формулы, а не для промежуточной внутренней модели.
В незашумлённом наборе Feynman Keplearn восстановил точные формулы в 64,7% случаев. Для сравнения, опубликованный результат AIFeynman — 55,8%, при этом Keplearn использовал меньше вычислений. На чистых задачах половина решений занимала меньше секунды, хотя трудные поиски упирались в лимит в 60 секунд. С ростом шума точность заметно падала.
Есть и важное ограничение: на 138 black-box наборах без известной аналитической формулы медианный тестовый R² оказался около нуля. Keplearn создан именно для восстановления точных законов, а не универсального машинного обучения. Проект включён в SRBench, собирается в один статический бинарник и распространяется под MIT.
На более простом наборе Strogatz без шума точность составила 42,9%, но при сильном шуме опустилась до 7,1%. На Feynman при максимальном шуме осталось лишь 8,6% точных решений.