Hiperparametr

Ustawienie modelu dobierane przed treningiem, np. współczynnik uczenia, liczba warstw czy głębokość drzewa. W przeciwieństwie do parametrów nie jest uczone z danych.

Hiperparametr to ustawienie modelu uczenia maszynowego, które wybierasz przed startem treningu i które nie zmienia się samo w trakcie nauki. To Ty (albo Twój skrypt do strojenia) decydujesz o jego wartości. Klasyczne przykłady to learning_rate (współczynnik uczenia), liczba warstw i neuronów w sieci, rozmiar batcha, liczba epok, siła regularyzacji czy max_depth w drzewie decyzyjnym. Kluczowa różnica: parametry (np. wagi sieci neuronowej) model sam wylicza na danych podczas treningu, a hiperparametry ustawiasz z góry i sterują tym, jak ten trening w ogóle przebiega.

Po co się tym przejmować

Hiperparametry definiują architekturę modelu i sposób optymalizacji. Za duży learning_rate i loss skacze jak szalony, nigdy nie zbiegając do minimum. Za mały i model uczy się ślimaczym tempem, a Ty palisz GPU przez weekend. Zbyt głębokie drzewo albo zbyt rozbudowana sieć przy małym zbiorze danych prowadzą do overfittingu (model wkuwa dane treningowe na pamięć i wykłada się na nowych). Dlatego dobór hiperparametrów to nie kosmetyka, tylko realna różnica między modelem, który działa, a takim, który tylko udaje.

Jak to wygląda w praktyce

Załóżmy, że trenujesz klasyfikator w scikit-learn. Zamiast zgadywać wartości ręcznie, odpalasz automatyczne przeszukiwanie siatki: GridSearchCV(RandomForestClassifier(), {'max_depth': [5, 10, 20], 'n_estimators': [100, 300]}). Narzędzie przetestuje każdą kombinację z walidacją krzyżową i zwróci najlepszy zestaw. Przy większych przestrzeniach częściej sięga się po RandomizedSearchCV albo bibliotekę Optuna, która używa sprytniejszej optymalizacji bayesowskiej zamiast brutalnego sprawdzania wszystkiego. W deep learningu w PyTorch czy TensorFlow learning_rate i rozmiar batcha podajesz zwykle przy tworzeniu optymalizatora i pętli treningowej.

Częste pułapki

  • Strojenie na zbiorze testowym. Hiperparametry dobierasz na zbiorze walidacyjnym, a test trzymasz nietknięty do samego końca, inaczej oszukujesz sam siebie i Twoje wyniki będą zawyżone.
  • Mylenie parametrów z hiperparametrami. Wagi to nie hiperparametry. Jeśli model coś sam wylicza z danych, to parametr.
  • Grid search nad wszystkim. Liczba kombinacji rośnie wykładniczo. Zacznij od najważniejszych (zwykle learning_rate), reszta poczeka.
  • Brak ziarna losowości. Bez ustawionego random_state nie powtórzysz wyniku i nie wiesz, czy poprawa to zasługa strojenia, czy fart.

Pojęcia powiązane

Warto kojarzyć: hyperparameter tuning, grid search, random search, optymalizacja bayesowska (Optuna), cross-validation, overfitting i underfitting, learning rate, regularyzacja oraz różnica parametr kontra hiperparametr.