We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Theorie - Optimierung & Wandern mit Gradientenabstieg

00:00

Formale Metadaten

Titel
Theorie - Optimierung & Wandern mit Gradientenabstieg
Serientitel
Anzahl der Teile
79
Autor
Lizenz
CC-Namensnennung 4.0 International:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
Identifikatoren
Herausgeber
Erscheinungsjahr
Sprache
Produktionsjahr2023
ProduktionsortHeinrich-Heine-Universität Düsseldorf

Inhaltliche Metadaten

Fachgebiet
Genre
Abstract
In diesem Video schauen wir uns den Aufbau der Verlustfunktion oder Loss Function genauer an, wiederholen was eigentlich nochmal ein Gradient ist und bekommen eine Intuition dafür, wie die Optimierung eines neuronalen Netzwerkes funktioniert. Außerdem werfen wir einen etwas genaueren Blick auf den Trainingsprozess und lernen Kriterien dafür kennen, wann man ihn am besten stoppt. Lernziele: Du erklärst die Interpretation der Verlustfunktion, z.B. anhand des Klassifikationsproblems in Hunde- und Katzenbilder beim Überwachten Lernen Du erklärst, aus welchen Komponenten der Gradient einer Funktion besteht Du beschreibst die Intuition hinter der Optimierungsmethode des (Stochastischen) Gradientenabstiegs Du erläuterst den Ablauf des Trainings grob Du gibst Beispiele für Stopp-Kriterien des Trainings
Schlagwörter
Komponente <Software>Netzwerk <Graphentheorie>TeilmengeBackpropagation-AlgorithmusChecklisteQualitätsmaßKostenfunktionTestdatenGewicht <Mathematik>BIAS <Programm>DatensatzOptimierungGradientPartielle DifferentiationApproximationEin-AusgabeValidierungOptimumKettenregelRichtungZahlAbstieg <Mathematik>HöheInitialisierungVariableAbleitung <Topologie>KurvendiskussionMinimumFunktion <Mathematik>VektorJSONXMLComputeranimationBesprechung/InterviewVorlesung/Konferenz
GradientStochastikEin-AusgabeOptimierungValidierungBackpropagation-Algorithmus
ProgramminspektionComputeranimationXML
Transkript: Deutsch(automatisch erzeugt)
Wie trainieren wir jetzt eigentlich ein neuronales Netzwerk? Oder etwas mathematischer, wie optimieren wir die Parameter? Wir möchten gerne ein neuronales Netzwerk mit einem überwachten Deep Learning Algorithmus trainieren. Wir haben einen geeigneten Datensatz, den wir
bereits vorverarbeitet und bereinigt haben. Anschließend wurde er in Trainings, Validierung und Testdaten aufgeteilt. Wir kennen den Weg, den die Daten durch ein sequenzielles Modell als Input durch die Layers bis zum Output durchlaufen. Hier entscheiden jetzt Qualitäts- bzw. Fehlermaße darüber, wie gut der Output für ein bestimmtes
zugrunde liegendes Problem ist. Aber wie bekommen wir das Modell jetzt dazu, den Output zu verbessern? Wie definieren wir Optimalität? Natürlich müssen wir auch das wieder quantifizieren und zwar durch die sogenannte Loss Function, also Verlustfunktion oder manchmal auch Kostfunktion, Kostenfunktion genannt. Uns interessiert, wie sehr sich der
aktuelle Output des Netzwerkes von dem gewünschten Output unterscheidet. Im Supervised Learning Setting haben wir bereits gewünschte Input-Output-Paare in Form der Daten und dazugehörigen Labels. Jetzt wollen wir also unser aktuelles Ergebnis während des Trainings mit dem gewünschten Ergebnis vergleichen. Und das können wir mathematisch übersetzen
die Distanz oder Differenz berechnen. Zum Beispiel können wir schauen, ob im aktuellen Training Schritt ein Hundebild auch wirklich als Hund klassifiziert wird. Ist das der Fall, ist die Differenz zwischen dem vorhergesagten Label 1 und dem tatsächlichen Label 1 gleich 0. Würde das Bild inkorrekterweise als Katze erkannt, wäre die
Differenz zwischen dem vorhergesagten Label 0 und dem tatsächlichen Label 1 1. Machen wir für jedes Bild aus dem Datensatz, bleibt die Verlustfunktion bei guter Performance, also bei vielen korrekt vorhergesagten Labels, nahe bei 0. Machen wir andererseits viele
Fehler bei der Vorhersage, summieren sich die Einsen auf und wir erhalten einen hohen Verlust. Das Ziel der Optimierung ist jetzt, die Verlustfunktion zu minimieren. Wie geht das jetzt genau? Ganz genau werden wir das an dieser Stelle nicht erklären, aber zumindest versuchen, eine Intuition zu schaffen. Die Parameter, die letztendlich
in neuronalen Netzwerken optimiert werden, sind die Gewichte oder Weights und die Biases. Ziel ist also, die Verlustfunktion bezüglich dieser Weights und Biases zu minimieren. Die Methode, die dafür standardmäßig verwendet wird, ist der sogenannte Gradient Descent oder Gradienten Abstieg. Vielleicht sollten wir uns kurz den Begriff Gradient in Erinnerung
rufen, den wir vielleicht noch aus der Schule kennen. Falls ihr euch wie ich mit Begeisterung an die Kurvendiskussion erinnert, dann hatte Optimierung oder das Auffinden von Hoch- und Tiefpunkten einer Funktion immer irgendwie mit Ableitung zu tun. Wollten wir den Tiefpunkt oder das Minimum einer Funktion finden, haben wir die Ableitung
gleich 0 gesetzt und dann auch geprüft, dass ein Tiefpunkt vorliegt. Was bedeutet nochmal Ableitung? Nehmen wir die Funktion f von x gleich 2x hoch 2 plus 4x. Die Ableitung davon ist 4x plus 4. Setzen wir das gleich 0, erhalten wir x gleich minus 1. Die Funktion
f ist also an der Stelle x gleich minus 1 minimal und nimmt den Wert minus 2 an. Es gibt aber auch Funktionen mit mehr als einer Variablen. Nehmen wir f von x und y ist gleich 3x² minus 2y. Jetzt können wir zwei Ableitungen berechnen. Einmal die
bezüglich x und einmal die bezüglich y. Sie heißen auch partielle Ableitungen. Der Gradient von f wird dann geschrieben als Vektor mit zwei Komponenten. Der partiellen Ableitung bezüglich x und der partiellen Ableitung bezüglich y. Konkret wäre der erste Eintrag dann 6x und der zweite Eintrag minus 2.
Jetzt sind wir gut vorbereitet um uns die Methode des Gradientenabstiegs mal ganz vereinfacht und veranschaulicht vorzustellen. Nehmen wir an, wir befinden uns in dieser idyllischen Landschaft und wollen von einem Berggipfel bis ganz nach unten ins Tal wandern. Hier entspricht jetzt die Höhe, auf der wir uns befinden, dem Wert der Verlustfunktion.
Das heißt ganz oben auf dem Berg ist die sehr hoch und wir wollen den Punkt im Tal finden, der einer sehr niedrigen Zahl oder sogar Null entspricht. Wie kommen wir dort hin, wenn wir irgendwo auf einer Bergspitze starten? Wir können natürlich nicht fliegen oder uns in einem Schritt ins Tal beamen. Vielmehr müssen wir lokal schauen, welcher
nächste Schritt uns möglichst schnell und effizient nach unten bringt. Intuitiv würden wir dann einen Schritt in Richtung des steilsten Abstiegs gehen, solange wir uns dabei nicht verletzen und das mit einer Schrittlänge machbar ist. So gelangen wir nach und nach oder Schritt für Schritt weiter nach unten, checken immer wieder lokal,
was für uns gerade die beste Richtung ist und kommen schließlich im Tal an. Dabei kann es sein, dass wir nicht die tiefste Stelle des gesamten Landschaftszugs gefunden haben, aber die für uns lokal tiefste Stelle. Das ist in den meisten Fällen bei neuronalen Netzwerken auch ausreichend und man spricht dann von einem lokalen statt globalen
Minimum, dass wir die Verlustfunktion gefunden wurde. Hier sehen wir eine Animation, die den Gradientenabstieg noch einmal veranschaulicht. Stellen wir uns vor, dass wir unsere Landschaft nun von oben betrachten. Wir sehen Höhenlinien und die Farbe gelb entspricht einem hohen Wert der Verlustfunktion oder Höhe und dunkelblau
einem niedrigen Wert. Die roten Punkte sind Menschen, die Richtung Tal wandern möchten und alle von verschiedenen Positionen auch starten. Das nennt man bei neuronalen Netzwerken auch Initialisierung. Wir müssen ja am Anfang den Weights und Biases bestimmte Werte zuordnen,
die dann im Laufe der Zeit optimiert werden. Hier sehen wir schön, wie alle nach und nach ein lokales Minimum erreichen. Die Schrittspeize während des Wanderns wird in Analogie beim Gradientenabstiegsverfahren im Deep Learning auch als Learning Rate bezeichnet. Sie kann gewählt werden oder sich im Laufe der Optimierung verändern. In der Praxis bestehen neuronale
Netzwerke manchmal aus Millionen von Parametern, also den Weights und Biases. Das heißt, die Verlustfunktion muss nicht bezüglich einer oder zweier Variablen, sondern manchmal Millionen davon abgeleitet werden. Wir müssen also einen riesigen Gradienten ausrechnen. Die Methode, die mathematisch dafür verwendet wird, heißt Backpropagation und ergibt sich
aus der ebenfalls aus der Schule bekannten Kettenregel. Wir werden an dieser Stelle aber nicht näher auf die Details eingehen. In der Praxis wird zur Optimierung von neuronalen Netzwerken eine bestimmte Methode des Gradientenabstiegs verwendet, nämlich der Stochastic Gradient Descent bzw. der Stochastische Gradientenabstieg. Anstatt den Gradienten für den gesamten
Datensatz zu berechnen, wird er für eine zufällige Teilmenge davon berechnet und liefert trotzdem eine gute Approximation des tatsächlichen Gradienten. Das beschleunigt die Optimierung natürlich auch erheblich. Das Training oder die Parameteroptimierung
eines neuronalen Netzwerkes ist ein iterativer Prozess. Das heißt, Schritt für Schritt nähern wir uns dem Optimum. Wir beginnen mit dem Vorbereiten der Daten und dem Aufteilen in Trainings, Validierungs- und Testdaten. Dadurch laufen wir immer jeweils eine Epoche. Epoche bedeutet, dass der gesamte Trainingsdatensatz einmal im Optimierungsprozess verwendet
wird. Pro Epoche können wir die Daten noch in sogenannte Batches, also Teilmengen des Datensatzes aufteilen. Dafür werden dann jeweils die Parameter optimiert. Die Frage, die sich zum Schluss noch stellt, ist, wann stoppen wir das Ganze? Eine gute Strategie ist es, den Verlauf der Optimierung zu visualisieren. Wir können
die Anzahl an Epochen gegen den Wert der Verlustfunktion auftragen. Im besten Fall sieht das dann in etwa so aus wie hier. Am Anfang sinkt die Verlustfunktion ziemlich schnell und bei zunehmender Anzahl der Epochen sinkt sie langsamer und nähert sich einem Wert an. Also könnte ein Kriterium, die Optimierung zu stoppen, lauten,
wenn die Verlustfunktion sich zwischen zwei Epochen nicht mehr stark ändert, stoppe die Optimierung. Diesen Wert könnte man sich vorher überlegen. Eine andere Möglichkeit, die man eigentlich parallel verfolgen sollte, ist sich die Qualitätsmaße für die Validierungsdaten anzuschauen. Hier könnten wir die Anzahl der Epochen
gegen die Accuracy bei Klassifikationsproblemen oder die Peak Signature Noise Ratio beim Bild entrauschen auftragen. Im Medialfall steigen die Qualitätsmaße und ein Kriterium zum Stoppen könnte dann die Überschreitung eines im Vorhinein festgelegten Wertes sein.
Jetzt könnt ihr das Training bzw. die Parameteroptimierung eines neuronalen Netzwerkes anhand der folgenden Checkliste erklären.