Hyperparameter
Čo je hyperparameter?
Hyperparameter je konfiguračný parameter, ktorého hodnotu nastavuje vývojár pred začiatkom trénovania modelu strojového učenia. Na rozdiel od bežných parametrov modelu, ktoré sa učia z dát počas trénovania, hyperparametre zostávajú fixné a určujú, ako bude proces učenia prebiehať. Voľba hyperparametrov výrazne ovplyvňuje výkon, rýchlosť trénovania a schopnosť modelu generalizovať na nové dáta.
Rozdiel medzi parametrami a hyperparametrami
Parametre modelu sú hodnoty, ktoré sa automaticky upravujú počas trénovania na základe vstupných dát. Patria sem napríklad váhy neurónov v neurónových sieťach. Hyperparametre naopak nastavuje človek ešte pred spustením trénovania a počas neho sa nemenia.
Medzi typické hyperparametre patrí learning rate (rýchlosť učenia), počet epoch, veľkosť batch, počet vrstiev v neurónovej sieti alebo regularizačné koeficienty. Každý z týchto parametrov ovplyvňuje iné hľadisko trénovacieho procesu.
Ako prebieha ladenie hyperparametrov?
Ladenie modelu prostredníctvom hyperparametrov je iteratívny proces. Vývojár nastaví počiatočné hodnoty, spustí trénovanie, vyhodnotí výsledky a na základe nich upraví hyperparametre pre ďalší pokus. Tento postup sa opakuje, kým model nedosiahne požadovaný výkon.
Pre systematické hľadanie optimálnych hodnôt existuje niekoľko prístupov:
- Grid search prehľadáva všetky kombinácie z preddefinovanej mriežky hodnôt.
- Random search náhodne vzorkuje z priestoru možných hodnôt a často dosahuje lepšie výsledky s menším počtom pokusov.
- Bayesian optimization využíva predchádzajúce výsledky na inteligentnejší výber ďalších kombinácií.
…nesprávne nastavený learning rate môže spôsobiť, že model buď konverguje príliš pomaly, alebo úplne preskočí optimálne riešenie?
Príklady hyperparametrov v praxi
Hyperparametre majú priamy dopad na výkon, rýchlosť aj robustnosť modelu, preto sa nimi v praxi cielene „točí“ podľa cieľa úlohy.
Učenie a stabilita modelu
- Learning rate riadi, ako agresívne model mení váhy pri učení: vyšší zrýchľuje tréning, ale ľahko spôsobí rozkmitanie alebo rozpad učenia, nižší je stabilnejší, no model sa môže učiť extrémne pomaly.
- Batch size ovplyvňuje kompromis medzi rýchlosťou a kvalitou aktualizácií: veľké batchy lepšie využijú GPU a dávajú stabilnejší gradient, malé pridávajú „šum“, ktorý niekedy pomôže dostať sa z lokálnych miním a zlepšiť generalizáciu.
Generalizácia a štruktúra modelu
- Počet epoch určuje, koľkokrát model „uvidí“ celé tréningové dáta; príliš málo znamená podučenie, príliš veľa často vedie k preučeniu, ak nie je použitý early stopping.
- Regularizačné hyperparametre (napr. sila L1/L2 penalizácie) sa prakticky používajú na držanie váh „pri zemi“, aby model nebol príliš komplexný a lepšie zvládal nové dáta.
- Pri rozhodovacích stromoch sa bežne ladí maximálna hĺbka, minimálny počet vzoriek na rozdelenie či minimálny počet vzoriek v liste, čím sa priamo ovláda, či strom bude jednoduchý (lepšia generalizácia) alebo veľmi detailný (riziko preučenia).
Limitácie a výzvy pri optimalizácii
Hľadanie optimálnych hyperparametrov je výpočtovo náročné. Pri veľkom počte hyperparametrov exponenciálne rastie počet možných kombinácií. Optimálne hodnoty sa môžu líšiť pre rôzne datasety, čo komplikuje prenos nastavení medzi projektmi.
Automatizované metódy ako AutoML čiastočne riešia tento problém, no vyžadujú značné výpočtové zdroje. V praxi sa často používajú osvedčené východiskové hodnoty, ktoré sa následne dolaďujú pre konkrétny prípad použitia.
Zdroje a odkazy
Použité zdroje:
- Google Machine Learning Education – Hyperparameter tuning: https://developers.google.com/machine-learning
Odporúčané zdroje:
- scikit-learn Documentation – Tuning the hyper-parameters of an estimator: https://scikit-learn.org
Uvedené informácie sú orientačné a môžu sa líšiť v závislosti od verzie, implementácie a prostredia.