Подбор гиперпараметров — одна из самых трудоёмких частей обучения моделей. Библиотека Optuna решает её не полным перебором, а через сэмплеры: алгоритмы, которые выбирают следующую точку в пространстве параметров, опираясь на историю предыдущих попыток. Среди трёх встроенных сэмплеров — Random, TPE и CMA-ES — последний устроен принципиально иначе: он не просто ищет перспективные зоны, но и перестраивает геометрию поиска на каждом шаге.
CMA-ES расшифровывается как Covariance Matrix Adaptation Evolution Strategy — стратегия эволюционного поиска с адаптацией ковариационной матрицы. Алгоритм работает итерационно. На каждой итерации он генерирует облако точек-кандидатов вокруг текущего центра поиска, оценивает целевую функцию в каждой из них, отбирает лучшие и использует их, чтобы сдвинуть центр и скорректировать форму области поиска. Для наглядности удобно рассматривать функцию Розенброка — классический тест для оптимизаторов с глобальным минимумом в точке (1, 1) и характерным узким «оврагом», вдоль которого нужно двигаться.
На старте алгоритм получает начальную точку — например, (0, −1) — и задаёт три параметра: среднее распределения (координаты текущей точки), шаг поиска sigma = 0.8 и единичную ковариационную матрицу. Единичная матрица означает, что область поиска — круг: алгоритм пока не знает, в каком направлении двигаться, и исследует пространство равномерно. Из этого распределения сэмплируются 15 точек-кандидатов.
Ковариационная матрица описывает форму области поиска: из круга она превращается в вытянутый эллипс вдоль «оврага» функции.
Далее алгоритм вычисляет значение целевой функции в каждой из 15 точек и оставляет топ-7 — те, где функция минимальна. Каждой из отобранных точек присваивается вес: лучшая точка получает наибольший вес, худшая из семи — наименьший. Новый центр поиска — взвешенное среднее этих точек. Механика напоминает градиентный спуск: центр смещается туда, где функция ведёт себя лучше, но без явного вычисления градиента.
Ключевое отличие CMA-ES от более простых методов — адаптация ковариационной матрицы. После каждой итерации матрица обновляется: старая матрица комбинируется с новой, построенной по лучшим точкам. Собственные значения обновлённой матрицы показывают, насколько вытянута область поиска в каждом направлении. Если лучшие точки раз за разом оказываются вдоль одной оси — эллипс вытягивается именно туда. Это позволяет алгоритму «нащупать» узкий овраг функции и двигаться вдоль него, а не тратить попытки на поперечные направления.
Параллельно адаптируется шаг sigma. Алгоритм отслеживает эволюционный путь — накопленный вектор смещений центра за последние итерации. Если центр уверенно движется в одном направлении, sigma увеличивается: есть смысл делать более крупные шаги. Если движение хаотично или алгоритм топчется на месте, sigma уменьшается для более точного поиска. Скорость этой адаптации регулируется двумя параметрами: learning rate, определяющим «длину памяти», и демпфирующим коэффициентом, который не даёт шагу резко колебаться.
На практике CMA-ES хорошо работает там, где пространство гиперпараметров имеет выраженную структуру — например, при совместном подборе нескольких взаимосвязанных параметров XGBoost. TPE, второй популярный сэмплер Optuna, строит вероятностную модель отдельно для каждого параметра и хуже улавливает корреляции между ними. CMA-ES учитывает эти корреляции явно — через ковариационную матрицу — и поэтому эффективнее на задачах с «оврагами» и нелинейными зависимостями между параметрами.


