Hyperparameter sind die Parameter eines Machine Learning Algorithmus, die nicht direkt durch die Trainingsdaten angepasst werden bzw. vor dem Training gesetzt werden, zum Beispiel die Anzahl Knoten eines neuronalen Netzes. Die Gewichte der Knoten sind keine Hyperparameter, da sie anhand des Trainingsets verändert werden. Ein anderes Beispiel für einen Hyperparameter ist die Lernrate. Diese kann zwar während des Trainings angepasst werden, jedoch hängt die Anpassung nicht an den Daten des Trainingssets.
Hyperparameter sind nicht auf neuronale Netze beschränkt, auch andere Algorithmen können welche besitzen, müssen es aber nicht. Die gewöhnliche lineare Regression besitzt zum Beispiel keine Hyperparameter, während die LASSO-Regression einen Regularisierungs-Parameter besitzt, den man frei wählen kann. Der k-Means-Algorithmus hat den Hyperparameter k, der für die Anzahl Cluster steht.
Man kann zwischen modelspezifischen und algorithmischen Hyperparametern unterscheiden. Die Anzahl Knoten gehört zu den modelspezifischen Hyperparameter, da sie vor dem Algorithmus gesetzt wird und das Model bestimmt. Die Lernrate ist ein algorithmischer Hyperparameter, da sie den Ablauf des Algorithmus mitsteuert.
Hyperparameteroptimierung – Wie bestimmt man die Hyperparameter?
Die Hyperparameter haben einen großen Einfluss auf die Güte eines Algorithmus. Daher möchte man diese natürlich möglichst gut wählen. Wie man das aber macht, ist häufig nicht klar. Für die Topologie eines neuronalen Netzes (also die Struktur, d.h. wieviele Schichten, Knoten, Verbindungen, … besitzt es) gibt es bisher vor allem Faustregeln und Erfahrungswerte. Es wird also geschaut, mit welchen Hyperparametern ein ähnliches Problem gelöst wurde oder es erfolgen grobe Abschätzungen anhand der Datengröße und -struktur.
Es gibt aber Verfahren, die Hyperparameter automatisch zu tunen. Das Prinzip ist simpel: man lässt mehrere Varianten durchlaufen und schaut, welche bessere Ergebnisse liefert. So lässt man den k-Means Algorithmus einfach für mehrere Anzahl von Gruppen, sprich Werte von k, durchlaufen. Dann bestimmt man, welche Gruppenanzahl die beste Trennung der Daten liefert, zum Beispiel mit dem Silhouettenkoeffizienten.
Bei neuronalen Netzen kann man natürlich nicht mehr alle Varianten ausprobieren. Der Hyperparameterraum bliebt riesig, trotz Einschränkungen in der Auswahl. Statt also die Varianten zufällig zu wählen, gibt es bessere Verfahren wie zum Beispiel Gradient Descent. Dabei wird in Richtung der stärksten Verbesserung hin optimiert.
Achtung: Bei der Hyperparameter-Optimierung ist eine Sache ganz wichtig: Benutze nie den Testdatensatz für die Bestimmung der Güte der einzelnen Varianten. Dadurch passt man den Algorithmus zu stark auf die vorhandenen Daten an (Overfitting). Der Testdatensatz ist nur für die allerletzte Güte-Bestimmung da, indem man den Algorithmus auf einen komplett unbekannten Datensatz loslässt. Stattdessen unterteilt man die Daten nicht nur in einen Trainings- und Testdatensatz, sondern spaltet zusätzlich noch einen Validierungsdatensatz ab. Letzterer wird dann für die Hyperparameteroptimierung benutzt.