Powrót do strony głównej

CMA-ES w Optuna: optymalizacja hiperparametrów bez gradientów

Szczegółowa analiza techniczna działania algorytmu CMA-ES w bibliotece Optuna. Wyjaśnienie inicjalizacji, próbkowania, adaptacji macierzy kowariancji i kroku. Praktyczne rekomendacje dotyczące stosowania w zadaniach uczenia maszynowego.

Jak CMA-ES znajduje optymalne hiperparametry bez gradientów
Advertisement 728x90

# CMA-ES w Optuna: krok po kroku analiza strategii ewolucyjnej optymalizacji hiperparametrów

Algorytm CMA-ES to metoda optymalizacji bez pochodnych, efektywnie rozwiązująca zadania doboru hiperparametrów w złożonych, multimodalnych lub zaszumionych przestrzeniach. W przeciwieństwie do podejść gradientowych, nie wymaga różniczkowalności funkcji celu i jest odporny na minima lokalne. W tym artykule przeanalizujemy jego działanie na przykładzie dwuwymiarowej funkcji Rosenbrocka, aby naocznie pokazać, jak algorytm adaptuje krok i kierunek wyszukiwania.

Inicjalizacja: początkowe warunki wyszukiwania

Przed rozpoczęciem pracy CMA-ES należy ustawić trzy kluczowe parametry:

  • Średnia początkowa (m) — współrzędne punktu startowego w przestrzeni wyszukiwania. W naszym przypadku — (0, -1).
  • Macierz kowariancji (C) — określa kształt i orientację obszaru wyszukiwania. Początkowo jest to macierz jednostkowa, co tworzy symetrię kołową wokół centrum.
  • Globalny krok (σ) — skala wyszukiwania. Ustawiony na 0.8, co odpowiada promieniowi elipsy ufności ≈1.96 dla 95% prawdopodobieństwa trafienia punktów.

Te parametry tworzą początkowe rozkład normalne, z którego generowane będą kandydaci. Ważne: nawet jeśli punkt początkowy jest daleki od optimum, algorytm potrafi się dostosować dzięki mechanizmom ewolucyjnym.

Google AdInline article slot

Generowanie i ocena kandydatów

Na każdej iteracji generowanych jest λ kandydatów (w przykładzie — 15) według wzoru:

x_k ~ m + σ · N(0, C)

gdzie N(0, C) — wielowymiarowe rozkład normalne o zerowej średniej i macierzy kowariancji C. Każdy kandydat to zestaw hiperparametrów, który jest podawany do modelu w celu oceny funkcji celu (np. loss). Po obliczeniu wartości funkcji wybierane są μ najlepszych kandydatów (w przykładzie — 7), które stanowią podstawę do aktualizacji rozkładu.

Aktualizacja centrum wyszukiwania za pomocą średniej ważonej

Centrum nowego rozkładu obliczane jest jako ważona suma najlepszych punktów:

Google AdInline article slot
m_new = Σ w_i · x_i

Wagi w_i obliczane są na skali logarytmicznej:

w_i = [ln((λ+1)/2) - ln(i)] / Σ[ln((λ+1)/2) - ln(j)]

To zapewnia wykładniczo większy wkład najlepszych kandydatów. Na przykład pierwsza punkt otrzymuje wagę kilka razy wyższą niż siódmy. Takie podejście imituje „dobór naturalny”: udane rozwiązania silniej wpływają na kolejne pokolenie.

Adaptacja kształtu i skali wyszukiwania

Kluczową zaletą CMA-ES jest dynamiczna adaptacja do topologii funkcji celu. Osiąga się to za pomocą dwóch mechanizmów:

Google AdInline article slot

Aktualizacja macierzy kowariancji

Wzór aktualizacji:

C_new = (1 - c_μ) · C_old + c_μ · C_μ

gdzie C_μ — macierz kowariancji zbudowana na podstawie znormalizowanych przesunięć najlepszych punktów względem starego centrum. Parametr c_μ (learning rate, np. 0.9) kontroluje równowagę między historią a nowymi danymi. Jeśli najlepsze punkty układają się wzdłuż określonego kierunku (np. wzdłuż „doliny” funkcji Rosenbrocka), macierz C deformuje obszar wyszukiwania w elipsę wydłużoną w tym kierunku — co przyspiesza zbieżność.

Korekta globalnego kroku (σ)

Krok aktualizowany jest według wzoru:

σ_new = σ_old · exp( (c_σ / d_σ) · (||p_σ|| / E[||N(0,I)||] - 1) )

Tutaj:

  • p_σ — ścieżka ewolucyjna, akumulująca kierunek ruchu centrum przez kilka iteracji.
  • E[||N(0,I)||] — referencyjna długość losowego kroku (≈√n dla n-wymiarowej przestrzeni).
  • c_σ, d_σ — parametry szybkości uczenia i tłumienia.

Jeśli norma ||p_σ|| przekracza referencję, oznacza to ruch sekwencyjny w jednym kierunku — krok jest zwiększany. Jeśli jest niższa — ruch jest chaotyczny, krok zmniejszany dla precyzyjniejszego pozycjonowania.

Zalety i ograniczenia CMA-ES w praktyce ML

CMA-ES jest szczególnie przydatny w następujących scenariuszach:

  • Funkcja celu jest nieróżniczkowalna, zaszumiona lub ma przerwy.
  • Przestrzeń wyszukiwania zawiera wiele minimów lokalnych.
  • Hiperparametry mają różną wrażliwość (np. learning_rate vs. batch_size).

Jednak istnieją ograniczenia:

  • Złożoność obliczeniowa rośnie z wymiarowością przestrzeni (O(n²) z powodu przechowywania C).
  • Wymaga więcej iteracji w porównaniu z TPE na gładkich funkcjach.
  • Nieskuteczny przy bardzo małym budżecie ocen (< 20).

Zalecenia dotyczące użycia w Optuna:

  • Zaczynaj od CmaEsSampler dla zadań z >5 hiperparametrami lub skomplikowanym krajobrazem.
  • Ustaw restart_strategy='ipop' dla automatycznego restaru z zwiększonym σ przy utknięciu.
  • Dla parametrów dyskretnych użyj CategoricalCmaEsSampler.
  • Zawsze porównuj z TPE i RandomSearch na zbiorze kontrolnym.

Co ważne

  • CMA-ES nie używa gradientów — działa z dowolną czarną skrzynką.
  • Adaptacja macierzy kowariancji pozwala efektywnie poruszać się wzdłuż „doliny” funkcji celu.
  • Dynamiczny krok zapobiega przedwczesnej zbieżności i przyspiesza ostateczne doprecyzowanie.
  • Najlepiej sprawdza się przy średniej i dużej liczbie iteracji (>50) oraz w przestrzeniach wysokiej wymiarowości.
  • W Optuna łatwo się podłącza przez zmianę samplera — nie wymaga modyfikacji kodu modelu.

Algorytm jest szczególnie cenny w zadaniach, gdzie standardowe metody (np. grid search czy Bayesian optimization) napotykają problemy: niestabilność metryk, skomplikowane interakcje parametrów, brak gładkości. Jego ewolucyjna natura czyni go odpornym i uniwersalnym narzędziem dla badaczy pracujących z rzeczywistymi, „brudnymi” zadaniami ML.

— Editorial Team

Advertisement 728x90

Czytaj dalej