AI-United » Mathematik » Der Gradientenabstieg

Der Gradientenabstieg

Der Gradientenabstieg

Der Gradientenabstieg ist der am meisten verwendete Lernalgorithmus. Er wird in fast jedem maschinellen Lernmodell verwendet. Mit dem Gradientenabstieg verstehen wir, wie im Wesentlichen Modelle trainiert werden. Der Gradientenabstieg spielt eine wichtige Rolle in Machine Learning. Die Gradientenabstiegsmethode mit einigen Modifikationen wird häufig zum Trainieren des Perzeptrons und der tiefen neuronalen Netze verwendet und ist als Backpropagationsmethode bekannt.

In diesem Beitrag finden Sie eine Erklärung des Gradientenabstiegs, wo man ein bißchen Mathematik verwendet.

Zusammenfassung:

  • Die Wichtigkeit des Gradientenabstiegs ist die Erklärung des gesamten Algorithmus;
  • Verschiedene Variationen des Algorithmus;
  • Code-Implementierung: Code in Phyton schreiben.

Was ist ein Gradientenabstieg?

Der Gradientenabstieg ist eine Methode zum Ermitteln des Minimalwertes der Verlustfunktion (es gibt viele Arten dieser Funktion). Das Minimieren einer Funktion bedeutet, die tiefste Kavität in dieser Funktion zu finden. Beachten Sie, dass die Funktion verwendet wird, um einen Fehler in den Vorhersagen des Machine Learning-Modells zu steuern. Wenn Sie ein Minimum finden, erhalten Sie einen kleinstmöglichen Fehler oder verbessern die Genauigkeit des Modells. Wir erhöhen die Genauigkeit, indem wir beim Einstellen der Parameter unseres Modells einen Batch von Trainingsdaten aussortieren.

Also, wir brauchen einen Gradientenabstieg, um die Verlustfunktion zu minimieren.

Der Kern des Algorithmus besteht darin, um den kleinsten Fehlerwert zu erhalten. In ähnlicher Weise kann dies als ein Abstieg zum Tiefpunkt betrachtet werden, um Gold am Boden der Schlucht zu finden (der niedrigste Fehlerwert).

Das Minimieren einer Funktion

Um den niedrigsten Fehler als Funktion des Verlusts (relativ zu einem einzelnen Gewicht) zu finden, ist es notwendig, die Modellparameter anzupassen. Wie passen wir sie an? Hier wird die mathematische Analyse helfen. Durch die Analyse wissen wir, dass die Steigung des Graphen einer Funktion eine Ableitung einer Funktion in Bezug auf eine Variable ist. Diese Steigung zeigt immer die nächste Mulde an.

Auf dem Bild sehen wir eine Grafik der Verlustfunktion (genannt “Error” mit dem Symbol “J”) mit einem Gewicht. Wenn wir nun die Steigung (wir bezeichnen dies mit dJ / dw) der Verlustfunktion in Bezug auf ein einzelnes Gewicht berechnen, erhalten wir eine Richtung, in die wir uns bewegen müssen, um lokale Minima zu erreichen. Nehmen wir an, dass unser Modell nur ein Gewicht hat.

Modell mit nur einem Gewicht

Wichtig: Wenn wir alle Trainingsdaten durchlaufen, addieren wir weiterhin dJ / dw-Werte für jedes Gewicht. Da die Verluste vom Trainingsbeispiel abhängen, ändert sich auch dJ / dw weiter. Dann teilen wir die gesammelten Werte durch die Anzahl der Trainingsbeispiele, um den Durchschnitt zu erhalten. Dann verwenden wir diesen Durchschnittswert (jedes Gewichtes), um jedes Gewicht anzupassen.

Beachten Sie auch: Die Verlustfunktion dient zum Nachverfolgen von Fehlern bei jedem Trainingsbeispiel. Bei der Ableitung der relativen Gewichtsfunktion müssen Sie das Gewicht verschieben, um es für dieses Trainingsbeispiel zu minimieren. Sie können Modelle auch ohne Verwendung der Verlustfunktion erstellen. Sie müssen jedoch die Ableitung für jedes Gewicht verwenden (dJ / dw).

Jetzt, wenn wir die Richtung bestimmt haben, in die wir das Gewicht bewegen müssen, müssen wir herausfinden, wie wir das machen. Hier verwenden wir den Koeffizienten der Lerngeschwindigkeit, der als Hyperparameter bezeichnet wird. Der Hyperparameter ist der von Ihrem Modell geforderte Wert, von dem wir wirklich eine sehr vage Vorstellung haben. Normalerweise können diese Werte durch Versuch und Irrtum untersucht werden. Der Lernratenfaktor kann als “Schritt in die richtige Richtung” betrachtet werden, wo die Richtung von dJ / dw kommt.

Mehr über Gradienten

Außer der Verlustfunktion erfordert der Gradientenabfall auch einen Gradienten, der dJ / dw ist (eine Ableitung der Verlustfunktion in Bezug auf ein Gewicht, die für alle Gewichtungen durchgeführt wird). dJ / dw hängt von Ihrer Wahl der Verlustfunktion ab. Die häufigste Verlustfunktion ist der RMS-Fehler.

Die Ableitung dieser Funktion in Bezug auf eine beliebige Gewichtung (diese Formel zeigt die Berechnung des Gradienten für die lineare Regression):

Lernrate

Alles, was oben geschrieben ist, kann man in einem Buch finden. Die Gradientenformeln für jede Verlustfunktion können Sie im Internet finden, ohne zu wissen, wie sie selbst abgeleitet werden können. Das Problem ist aber mit dem Lernkoeffizienten verbunden. Betrachten wir den aktualisierten Ausdruck für jede Gewichtung (j liegt im Bereich von 0 bis zur Anzahl der Gewichte und Theta-j ist die j-te Gewichtung im Gewichtungsvektor, k liegt im Bereich von 0 bis zur Anzahl der Verschiebungen, wo Bk der k-te Versatz im Verschiebungsvektor ist). Hier ist Alpha die Lernrate. Daraus können wir sagen, dass wir dJ / dTheta-j (Theta-j-Gewichtsgradient) und dann einen Schritt der Größe Alpha in dieser Richtung berechnen. Ersetzen Sie Theta-j durch B-k, um den Versatz zu aktualisieren.

Verschiedene Arten vom Gradientenabstieg

Es gibt 3 Arten vom Gradientenabstieg:

1. Mini-Batch: Anstatt alle Trainingsbeispiele zu bearbeiten bei jeder Iteration, nehmen wir nur ein Trainingsbeispiel. Diese Auswahl eignet sich für sehr große Datensätze.

2. Im Stochastischer Gradientenabstieg: In diesem Fall verwenden wir nur einmal die Daten, anstatt jedes Lernbeispiel zu verwenden und in einer Schleife ablaufen zu lassen. Es gibt einige Dinge zu beachten:

  • Bei jeder Wiederholung des Gradientenabstiegs müssen Sie einen Trainingssatz kombinieren und ein zufälliges Trainingsbeispiel auswählen.
  • Da Sie nur ein Beispiel für das Training verwenden, wird Ihr Weg zu lokalen Minima sehr verzweigt sein, wie der Pfad bei einer betrunkenen Person.

3. Batch: Dies ist, was in den vorherigen Abschnitten beschrieben wird. Ein Zyklus für jedes Lernbeispiel.

3 Arten vom Gradientenabstieg

Beispiel-Python-Code

Dies gilt für Batch und wird in Python wie ein Lerncode-Block dargestellt.

def train(X, y, W, B, alpha, max_iters):
'''
Performs GD on all training examples,
X: Training data set,
y: Labels for training data,
W: Weights vector,
B: Bias variable,
alpha: The learning rate,
max_iters: Maximum GD iterations.
'''
dW = 0 # Weights gradient accumulator
dB = 0 # Bias gradient accumulator
m = X.shape[0] # No. of training examples
for i in range(max_iters):
dW = 0 # Reseting the accumulators
dB = 0
for j in range(m):
# 1. Iterate over all examples,
# 2. Compute gradients of the weights and biases in w_grad and b_grad,
# 3. Update dW by adding w_grad and dB by adding b_grad,
W = W - alpha * (dW / m) # Update the weights
B = B - alpha * (dB / m) # Update the bias return W, B # Return the updated weights and bias.

Haben Sie verstanden, was der Gradientenabstieg bedeutet?

Welche Arten vom  Gradientenabstieg setzen Sie in Ihren KI Systemen ein?

Haben Sie Fragen? Das AI United Team beantwortet diese gern per Email oder in dem Q&A Bereich.

Quellen:

https://hackernoon.com/gradient-descent-aynk-7cbe95a778da

https://github.com/Frixoe/xor-neural-network/blob/master/XOR-Net-Notebook.ipynb




AI-United-Redaktion

Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.