Das Gradientenverfahren (Gradient Descent) – Eine einfache Erklärung für das am häufigsten verwendete Optimierungsverfahren künstlicher neuronaler Netze

June 13, 2021
8 min
Machine Learning
Credits to David Mark from pixabay.com

In den vorherigen Artikeln haben wir uns angeschaut was für Berechnungen innerhalb eines einzelnen Neurons ablaufen und wie die Verlustfunktion künstlicher neuronaler Netze berechnet wird. Das grundsätzliche Ziel des Trainings künstlicher neuronaler Netze besteht darin den Wert der Verlustfunktion Schritt für Schritt zu minimieren. Grundsätzlich gilt: Je niedriger die Verlustfunktion, desto besser ist das neuronale Netz trainiert. Um die Verlustfunktion zu minimieren gibt es verschiedene Optimierungsverfahren. Das wohl bekannteste und am häufigsten eingesetzte Verfahren wird als Gradientenverfahren (Gradient Descent) bezeichnet. Dieses Verfahren stellen wir in diesem Artikel vor.

Formale Beschreibung des Gradientenverfahrens

Zunächst starten wir mit der formalen Beschreibung was der Begriff Gradientenverfahren eigentlich bedeutet. Hierzu verwenden wir ein englisches Zitat von Sebastian Ruder, welches den Zweck des Gradientenverfahrens gut beschreibt.

  • Gradient descent is a way to minimize an objective function J() parameterized by a model’s parameters by updating the parameters in the opposite direction of the gradient of the objective function J() with respect to the parameters. The learning rate determines the size of the steps we take to reach a (local) minimum. In other words, we follow the direction of the slope of the surface created by the objective function downhill until we reach a valley. [1]

In diesem Zitat werden verschiedene Begriffe aufgegriffen, die wir schon aus vorherigen Artikeln kennen, aber auch neue Begriffe. Zunächst wird die Aufgabe des Gradientenverfahrens benannt:

  • Die Verlustfunktion zu minimieren.

Ruder verwendet hier den Begriff Objective Function, welche eine allgemeinere Bezeichnung des uns bekannten Begriffs der Cost Function darstellt. Die Minimierung wird erreicht, in dem die Parameter des Modells aktualisiert werden. Und zwar in der entgegengesetzten Richtung des Gradienten der Verlustfunktion in Bezug auf die Parameter. Um dies näher zu erläutern schauen wir uns den grundsätzlichen Trainingsablauf innerhalb eines neuronalen Netzes an. Hierzu haben wir folgendes Bild in Anlehnung an Andrew Ng‘s Coursera Kurs „Spezialisierung Deep Learning“ erstellt.

Künstliches neuronales netz mit Forwad Propagation, verlustberechnung, Backward Propagation und aktualisieren der gewichte

Auf dem Bild ist ein künstliches neuronales Netz mit zwei Hidden und einem Output Layer dargestellt, also insgesamt drei Layern (kurze Erinnerung: Der Input Layer wird nicht mitgezählt). Der Trainingsablauf setzt sich aus vier Komponenten zusammen.

  • Forward Propagation: Bei der Forward Propagation werden die Berechnungen innerhalb der einzelnen Layer und deren Neuronen im „Vorwärtsgang“ durchlaufen. In den einzelnen Neuronen wird zunächst der lineare Teil berechnet und im Anschluss eine Aktivierungsfunktion, bspw. die Sigmoid Funktion, angewandt. Für die Berechnungen stehen uns die Parameter W und b zur Verfügung, die wir später noch einmal benötigen. Näheres zu den einzelnen Berechnungen innerhalb eines Neurons findet ihr hier. Im Output Layer werden dann Vorhersagen des Modells getroffen, für binäre Klassifizierungen ebenfalls mittels der Sigmoid Funktion.
  • Verlustfunktion: Auf Basis der Vorhersagen des Output Layers und den tatsächlichen Labeln unserer Trainingsdaten wird die Verlustfunktion bestimmt. Diese stellt dar, wie gut unser neuronales Netz schon trainiert wurde. Näheres zur Berechnung der Verlustfunktion findet ihr in diesem Artikel.

Wir haben nun die Forward Propagation durchlaufen und den Verlust berechnet. Nun starten wir mit dem eigentlichen Gradientenverfahren, welches sich aus den zwei weiteren Komponenten des Trainingsablaufs zusammensetzt. Der erste dieser Bausteine wird als Backward Propagation bezeichnet.

  • Backward Propagation: Im Anschluss an die Berechnung der Verlustfunktion erfolgt die Backward Propagation. Bei der Backward Propagation wird die Ableitung der Verlustfunktion in Bezug auf die Parameter W und b, der verschiedenen Layer, gebildet. Hierbei gehen wir nun die Schritte der Forward Propagation „rückwärts“ durch, sodass wir zunächst die Ableitung der Verlustfunktion, dann die Ableitungen des Output Layers und so weiter berechnen. Wie genau diese Berechnungen funktionieren betrachten wir im nächsten Artikel. Für diesen Artikel merken wir uns nur: Bei der Backward Propagation wird die Ableitung der Verlustfunktion in Bezug auf die Parameter des neuronalen Netzes gebildet. Kurze Erinnerung an Mathe aus der Schulzeit: Die erste Ableitung gibt die Steigung einer Funktion an.

Im Anschluss an die Backward Propagation erfolgt das Aktualisieren der Parameter.

  • Aktualisieren der Parameter: Durch die Backward Propagation haben wir nun alle Ableitungen gebildet. Diese bilden die Basis für das Aktualisieren der Parameter. Die Parameter W und b eines jeden Neurons werden auf Basis der folgenden Formel aktualisiert:
Formel zum aktualisieren der gewichte w und b.

Die Formeln sagen aus, dass jedes neue w und jedes neue b auf Basis des alten w bzw. alten b aktualisiert werden. Von diesen wird Ableitung der Verlustfunktion in Bezug auf den jeweiligen Parameter abgezogen. Es wird also die negative Ableitung verwendet. Zusätzlich wird die Ableitung mit dem Paramater α der Learning Rate (Lernrate) multipliziert. Je größer diese gewählt wird, desto größer ist auch der Einfluss der Ableitung innerhalb eines jeden Durchlaufs. Nachdem die Parameter aktualisiert wurden, kann wieder mit der Forward Propagation, mit den nun aktualisierten Parameter, begonnen werden und der nächste Trainingsdurchgang kann starten.

Nachdem wir nun die vier Bausteine kennen, können wir die Definition des Gradientenverfahrens von Ruder weiter analysieren. Ruder spricht davon, dass beim Gradientenverfahren die Verlustfunktion minimiert wird, indem die Parameter aktualisiert werden, und zwar in der entgegengesetzten Richtung der Gradienten der Verlustfunktion in Bezug auf ihre Parameter. Spricht man in diesem Zusammenhang von Gradienten der Verlustfunktion ist die Steigung der Verlustfunktion gemeint. Und die Steigung erhalten wir durch die erste Ableitung dieser. Vergleicht man diese Definition nun mit unseren Bausteinen wird klar, dass sich das Gradientenverfahren auf die Backward Propagation und das Aktualisieren der Parameter bezieht. Wir bilden die Ableitungen der Verlustfunktion in Bezug auf ihre Parameter und erhalten so die Steigung (der Teil der Backward Propagation). Im Anschluss aktualisieren wir die Parameter in dem wir die Ableitungen mit der Learning Rate multiplizieren und von den alten Parametern abziehen. Dies bedeutet nichts anderes als „by updating the parameters in the opposite direction of the gradient of the objective function”. Nachdem wir nun wissen wie das Gradientenverfahren grundsätzlich funktioniert, schauen wir uns dies einmal bildlich an.

Die Metapher des Berges

Sebastian Ruder spricht am Ende des Zitates davon, dass man beim Gradientenverfahren bergab steigt bis ein Tal erreicht wird. Was es mit dieser Metapher des Berges im Zusammenhang mit dem Gradientenverfahren auf sich hat, schauen wir uns im Folgenden an.

Wenn vom Gradientenverfahren oder Gradient Descent gesprochen wird, wird fast immer die Metapher des Berges verwendet. Hierbei wird das Gradientenverfahren mit dem Versuch verglichen einen Berg herabzusteigen oder zu fahren, um in ein Tal zu gelangen. Diese Metapher schauen wir uns im zweidimensionalen Raum an.

Gradientenverfahren im zweidimensionalen raum

Die Abbildung zeigt das Gradientenverfahren mit der Verlustfunktion in Bezug auf w. Die Werte für w sind auf der x-Achse, die Werte des Verlusts auf der y-Achse dargestellt. Zu Beginn des Trainings initialisieren wir unsere Paramater w und b zufällig, wobei hier nur w dargestellt ist. Nach der Forward Propagation berechnen wir die Verlustfunktion. Mit dem zufällig initialisierten w und dem berechneten Verlust können wir den ersten Punkt in das Koordinatensystem eintragen. Nun wollen wir diesen Wert minimieren, dies ist das Ziel unseres Trainings. Wir starten also mit der Backward Propagation und aktualisieren die Parameter. Hierzu verwenden wir die negative Ableitung, also negative Steigung. Hierdurch nähern wir uns Schritt für Schritt dem Minimum der Verlustfunktion, wir steigen den Berg also hinab. Durch die Auswahl der Größe der Learning Rate können wir bestimmen wie schnell wir hinabsteigen. Hierzu aber in späteren Artikeln mehr.

In diesem Artikel haben wir erläutert wie das Gradientenverfahren als das gängigste Optimierungsverfahren künstlicher neuronaler Netze funktioniert. Hierzu haben wir uns den Trainingsablauf innerhalb neuronaler Netze angeschaut und abgeleitet woraus sich das Gradientenverfahren zusammensetzt. Außerdem haben wir uns angeschaut wieso im Zusammenhang mit diesem Verfahren häufig von einem Berg gesprochen wird.

Zum Abschluss noch zwei Hinweise:

  • Ein Problem beim Gradientenverfahren sind die sogenannten Local Minima. Mehr dazu findet ihr hier.
  • Varianten des Gradientenverfahrens sind Stochastic Gradient Descent und Mini-batch Gradient Descent. Wie diese sich vom gängigen Gradient Descent unterscheiden betrachten wir in späteren Artikeln. Im nächsten Artikel schauen wir uns die Ableitungen der Backward Propagation näher an, die wir hier kurz angerissen haben.

Referenzen
Portrait of Blogger
Maximilian Both
<  Previous
Die Verlustfunktion künstlicher neuronaler Netze – Die Basis für ein erfolgreiches Training und die Initialzündung der Backpropagation
Next  >
Die Backward Propagation künstlicher neuronaler Netze – Eine Schritt für Schritt Einführung

Kommentare