Hyperparameter sind Variablen, mit denen verschiedene Aspekte des Trainings gesteuert werden. Drei gängige Hyperparameter sind:
Parameter sind dagegen Variablen wie Gewichte und Voreingenommenheit, die Teil des Modells selbst sind. Mit anderen Worten: Hyperparameter sind Werte, die Sie steuern. Parameter sind Werte, die vom Modell während des Trainings berechnet werden.
Lernrate
Die Lernrate ist eine von Ihnen festgelegte Gleitkommazahl, die sich darauf auswirkt, wie schnell das Modell konvergiert. Wenn die Lernrate zu niedrig ist, kann es lange dauern, bis das Modell konvergiert. Wenn die Lernrate jedoch zu hoch ist, konvergiert das Modell nie, sondern hüpft um die Gewichtungen und Verzerrungen, die den Verlust minimieren. Ziel ist es, eine Lernrate auszuwählen, die nicht zu hoch oder zu niedrig ist, damit das Modell schnell konvergiert.
Die Lernrate bestimmt die Größe der Änderungen, die an den Gewichten und der Voreingenommenheit bei jedem Schritt des Gradientenabstiegs vorgenommen werden müssen. Das Modell multipliziert den Gradienten mit der Lernrate, um die Parameter des Modells (Gewichtung und Verzerrungswerte) für die nächste Iteration zu bestimmen. Im dritten Schritt der Gradientenabstiegsmethode bezieht sich der „kleine Betrag“, der in Richtung der negativen Steigung verschoben werden soll, auf die Lernrate.
Der Unterschied zwischen den alten Modellparametern und den neuen Modellparametern ist proportional zur Steigung der Verlustfunktion. Wenn die Steigung beispielsweise groß ist, macht das Modell einen großen Schritt. Bei kleinen Schritten ist der Schritt entsprechend klein. Wenn die Größe des Gradienten beispielsweise 2,5 und die Lernrate 0,01 beträgt, ändert das Modell den Parameter um 0,025.
Die ideale Lernrate trägt dazu bei, dass das Modell innerhalb einer angemessenen Anzahl von Iterationen konvergiert. In Abbildung 21 zeigt die Verlustkurve, dass sich das Modell in den ersten 20 Iterationen deutlich verbessert, bevor die Konvergierung beginnt:
Abbildung 21 Verlustdiagramm für ein Modell, das mit einer Lernrate trainiert wurde, die schnell konvergiert.
Im Gegensatz dazu kann es bei einer zu niedrigen Lernrate zu vielen Iterationen kommen, bis die Konvergenz erreicht wird. In Abbildung 22 zeigt die Verlustkurve das Modell, das nach jeder Iteration nur geringfügige Verbesserungen vornimmt:
Abbildung 22 Verlustdiagramm, das ein Modell zeigt, das mit einer kleinen Lernrate trainiert wurde.
Eine zu hohe Lernrate konvergiert nie, da bei jeder Iteration entweder der Verlust schwankt oder kontinuierlich zunimmt. In Abbildung 23 zeigt die Verlustkurve, dass der Verlust nach jeder Iteration abnimmt und dann zunimmt. In Abbildung 24 steigt der Verlust bei späteren Iterationen an:
Abbildung 23. Verlustdiagramm für ein Modell, das mit einer zu hohen Lernrate trainiert wurde. Die Verlustkurve schwankt stark und steigt und fällt mit zunehmender Anzahl der Iterationen.
Abbildung 24 Verlustdiagramm, das ein mit einer zu großen Lernrate trainiertes Modell zeigt, bei dem die Verlustkurve in späteren Iterationen drastisch ansteigt.
Übung: Wissenstest
Batchgröße
Die Batchgröße ist ein Hyperparameter, der sich auf die Anzahl der Beispiele bezieht, die das Modell verarbeitet, bevor die Gewichte und der Bias aktualisiert werden. Sie könnten annehmen, dass das Modell den Verlust für jedes Beispiel im Dataset berechnen sollte, bevor die Gewichte und der Bias aktualisiert werden. Wenn ein Dataset jedoch Hunderttausende oder sogar Millionen Beispiele enthält, ist es nicht praktikabel, den gesamten Batch zu verwenden.
Zwei gängige Methoden, um den richtigen Gradienten im Durchschnitt zu erhalten, ohne sich jedes Beispiel im Dataset ansehen zu müssen, bevor die Gewichte und der Bias aktualisiert werden, sind der stochastische Gradientenabstieg und der Mini-Batch-stochastische Gradientenabstieg:
Stochastischer Gradientenabstieg (SGD): Beim stochastischen Gradientenabstieg wird pro Iteration nur ein einzelnes Beispiel (eine Batchgröße von 1) verwendet. Bei ausreichend vielen Iterationen funktioniert SGD, ist aber sehr fehleranfällig. „Rauschen“ bezieht sich auf Abweichungen während des Trainings, die dazu führen, dass sich der Verlust während einer Iteration eher erhöht als verringert. Der Begriff „stochastic“ gibt an, dass das Beispiel, aus dem jeder Batch besteht, zufällig ausgewählt wird.
In der folgenden Abbildung sehen Sie, wie der Verlust leicht schwankt, wenn das Modell seine Gewichtungen und Verzerrungen mithilfe von SGD aktualisiert, was zu Rauschen in der Verlustgrafik führen kann:
Abbildung 25 Mit stochastischem Gradientenabstieg (SGD) trainiertes Modell, das Rauschen in der Verlustkurve anzeigt.
Beachten Sie, dass die Verwendung des stochastischen Gradientenabstiegs Rauschen über die gesamte Verlustkurve hinweg erzeugen kann, nicht nur beinahe Konvergenz.
Stochastischer Mini-Batch-Gradientenabstieg (Mini-Batch-SGD): Ein stochastischer Mini-Batch-Gradientenabstieg ist ein Kompromiss zwischen Full-Batch und SGD. Für eine Anzahl von Datenpunkten von $ N $ kann die Batchgröße eine beliebige Zahl größer als 1 und kleiner als $ N $ sein. Das Modell wählt die in jedem Batch enthaltenen Beispiele nach dem Zufallsprinzip aus, ermittelt den Durchschnitt der Gradienten und aktualisiert dann einmal pro Iteration die Gewichtung und Gewichtung.
Die Anzahl der Beispiele für jeden Batch hängt vom Datensatz und den verfügbaren Rechenressourcen ab. Im Allgemeinen verhalten sich kleine Batchgrößen wie SGD und größere Batchgrößen wie der Gradientenabstieg mit vollständigem Batch.
Abbildung 26. Modell, das mit Mini-Batch-SGD trainiert wurde.
Beim Trainieren eines Modells denken Sie vielleicht, dass Rauschen eine unerwünschte Eigenschaft ist, die beseitigt werden sollte. Eine gewisse Menge an Rauschen kann jedoch von Vorteil sein. In späteren Modulen erfahren Sie, wie Rauschen dazu beitragen kann, dass ein Modell besser generalisiert wird und die optimalen Gewichte und Voreingenommenheiten in einem neuronalen Netzwerk gefunden werden.
Epochen
Während des Trainings bedeutet eine Epoche, dass das Modell jedes Beispiel im Trainingssatz einmal verarbeitet hat. Bei einem Trainings-Dataset mit 1.000 Beispielen und einer Mini-Batchgröße von 100 Beispielen dauert das Modell beispielsweise zehn iterations, um eine Epoche abzuschließen.
Das Training erfordert in der Regel viele Epochen. Das System muss also jedes Beispiel im Trainingssatz mehrmals verarbeiten.
Die Anzahl der Epochen ist ein Hyperparameter, den Sie vor Beginn des Trainings des Modells festlegen. In vielen Fällen müssen Sie ausprobieren, wie viele Epochen erforderlich sind, damit das Modell konvergiert. Im Allgemeinen erzeugen mehr Epochen ein besseres Modell, das Training nimmt jedoch auch mehr Zeit in Anspruch.
Abbildung 27. Vollständiger Batch im Vergleich zu Mini-Batch
In der folgenden Tabelle wird beschrieben, wie sich die Batchgröße und die Epochen auf die Häufigkeit auswirken, mit der ein Modell seine Parameter aktualisiert.
Batchtyp | Wenn Gewichtungen und Verzerrungen aktualisiert werden |
---|---|
Vollständiger Batch | Nachdem das Modell alle Beispiele im Dataset betrachtet hat. Wenn ein Dataset beispielsweise 1.000 Beispiele enthält und das Modell 20 Epochen lang trainiert wird, werden die Gewichte und die Voreingenommenheit 20 Mal aktualisiert, einmal pro Epoche. |
Stochastischer Gradientenabstieg | Nachdem sich das Modell ein einzelnes Beispiel aus dem Dataset ansieht. Wenn ein Dataset beispielsweise 1.000 Beispiele enthält und 20 Epochen lang trainiert wird, werden die Gewichte und die Voreingenommenheit 20.000 Mal aktualisiert. |
Mini-Batch-Stochastic Gradient Descent | Nachdem sich das Modell die Beispiele in jedem Batch ansieht. Wenn ein Dataset beispielsweise 1.000 Beispiele enthält, die Batchgröße 100 ist und das Modell 20 Epochen lang trainiert wird, werden die Gewichte und die Voreingenommenheit 200-mal aktualisiert. |