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_statenie 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.