Backpropagation

Die Backpropagation verbessert das Netz indem es dieses an eine optimale Funktion angleicht.

Dazu benötigt die Backpropagation einen Trainingsdatensatz aus Rohdaten (x) und Label (y). Die Label des Trainingsdatensatzes entsprechen dabei der bekannten Lösung zu einem Rohdatensatz. Über die Forward Propagation wird, wie in Abschnitt beschrieben, ein Ausgangswert (ȳ) aus den Rohdaten berechnet. Anschließend wird die Abweichung zwischen dem optimalen Label (y) und dem errechneten Ausgangswert (ȳ) über eine Kostenfunktion gebildet. Die meist genutzte Kostenfunktion ist der Mse.

Der Mean squared error bildet die Abweichung der Ausgangswerte und Label über Subtraktion. Anschließend wird die Abweichung durch Potenzieren in einen positiven Wertebereich gebracht. Im Anschluss wird der Durchschnitt der positiven Abweichungen gebildet.

Nachdem die Abweichung der Ausgangswerte berechnet ist, wird das Netz angepasst. Dazu müssen die einzelnen Gewichtungen so verändert werden, dass die Abweichung bei erneutem Berechnen geringer ist. Diesbezüglich wird der Gradient Descent Algorithmus verwendet. Da der Gradient immer zu dem nächstmöglichen Hochpunkt zeigt, muss der negierte Gradient zum nächstmöglichen globalen oder lokalen Tiefpunkt zeigen. Der Tiefpunkt wiederum minimiert die Kostenfunktion, was zur Annäherung von y und ȳ führt.

Um den Gradienten zu ermitteln, bietet es sich an, das neuronale Netz als Gleichung zu betrachten. So leitet man die Gewichtung partiell ab um den Gradienten der einzelnen Gewichtungen zu bestimmen. Durch die partielle Ableitung erhält man den Einflussfaktor des Gewichts auf die Kostenfunktion. Gleichzeitig entspricht die partielle Ableitung dem Gradienten eines Gewichts.

Je nach Implementierung wird der Gradient nach einer Epoche (Batch Gradient Descent), nach jedem Datensatz (Stochastic Gradient Descent) oder nach einer vorgegebenen Anzahl an Datensätzen (Mini-batch Gradient Descent) berechnet. Der errechnete Gradient wird über einen Optimizer in einer Gewichtsänderung umgewandelt.

Man unterscheidet zwischen den folgenden Optimizern:

  • Momentum addiert zu dem aktuellen Updatevektor eine Bruchteil Gamma des vorherigen Updatevektors. Dadurch beschleunigt sich der Lernprozess, allerdings werden bei einem steilen Gradienten Tiefpunkte übersprungen. So kann es vorkommen, dass sich die Funktion von einem Tiefpunkt entfernt.

  • NAG verbessert die Momentum Implementierung, indem die Ableitung der Kostenfunktion durch den Bruchteil des vorherigen Updatevektor ergänzt ist. Daher wird der Bruchteil des vorherigen Updatevektors vom Gradienten abgezogen, bevor dieser abgeleitet wird. Da die Ableitung der Kostenfunktion über die zukünftige Position gebildet wird, werden Tiefpunkte frühzeitig erkannt und einkalkuliert .

  • Adagrad passt die Lernraten automatisch an. Dazu wird die Summe der potenzierten Gradienten verwendet. Da die Summe der potenzierten Gradienten stetig ansteigt, sinkt die Lernrate kontinuierlich.

  • Adadelta verbessert die Implementierung von Adagrad indem die Lernrate nicht kontinuierlich sinkt, sondern vom Durchschnitt aller potenzierten Gradienten abhäng. Ersetzt man die Summe der potenzierten Gradienten durch den Durchschnitt ergibt sich folgende Formel.

  • Adam verbindet die Ideen von Momentum und Adadelta. So fließt der durchschnittliche Gradient vt sowie der potenzierte durchschnittliche Gradient et in die Gleichung ein.

Durch den Einfluss von passt sich die Lernrate an, beschleunigt den Abstieg des Gradienten.

Ressourcen

http://www.u-helmich.de/bio/neu/1/11/111/seite1111.html

http://www.deeplearningbook.org

https://jeremykun.com/2012/12/09/neural-networks-and-backpropagation/

https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/

http://scikit-learn.org/stable/auto\_examples/model\_selection/plot\_underfitting\_overfitting.html

http://mccormickml.com/2014/03/04/gradient-descent-derivation/

http://mccormickml.com/2014/03/04/gradient-descent-derivation/

http://ruder.io/optimizing-gradient-descent/

results matching ""

    No results matching ""