Unterschiede zwischen den Backpropagationstechniken

16

Nur zum Spaß versuche ich, ein neuronales Netzwerk aufzubauen.

Für die Rückübertragung habe ich zwei Techniken gesehen.

Der erste wird hier und auch an vielen anderen Orten verwendet.

Was es tut, ist:

  • Es berechnet den Fehler für jedes Ausgangsneuron.
  • Es überträgt es zurück in das Netzwerk (Berechnung eines Fehlers für jedes innere Neuron).
  • Es aktualisiert die Gewichte mit der Formel: (wo ist die Gewichtsänderung, die Lerngeschwindigkeit, der Fehler des Neurons, das die Eingabe von der Synapse empfängt und die Ausgabe ist, die auf der Synapse gesendet wird).
  • Es wird für jeden Eintrag des Datensatzes so oft wie erforderlich wiederholt.

Das in diesem Tutorial vorgeschlagene neuronale Netzwerk (auch auf GitHub verfügbar) verwendet jedoch eine andere Technik:

  • Es wird eine Fehlerfunktion verwendet (die andere Methode verfügt zwar über eine Fehlerfunktion, verwendet sie jedoch nicht für das Training).
  • Es hat eine andere Funktion, die den endgültigen Fehler ausgehend von den Gewichten berechnen kann.
  • Diese Funktion wird minimiert (durch Gefälle).

Welche Methode sollte nun angewendet werden?

Ich denke, der erste ist der am häufigsten verwendete (weil ich verschiedene Beispiele dafür gesehen habe), aber funktioniert das auch?

Insbesondere weiß ich nicht:

  • Unterliegt es nicht eher lokalen Minimums (da es keine quadratischen Funktionen verwendet)?
  • Haben Einträge des Datensatzes, die zufällig höhere Werte in den Neuronen erzeugen (nicht nur die ausgegebenen), mehr Einfluss auf die Gewichtung als andere Einträge, da die Variation der einzelnen Gewichte vom Ausgabewert des ausgegebenen Neurons beeinflusst wird?

Jetzt bevorzuge ich die erste Technik, weil ich finde, dass sie einfacher zu implementieren und leichter zu überlegen ist.

Gibt es einen tatsächlichen Grund für die Verwendung der zweiten Methode, wenn sie die genannten Probleme aufweist (was ich hoffe, dass dies nicht der Fall ist)?

Aspie96
quelle

Antworten:

5

Die beiden Beispiele zeigen im Wesentlichen die gleiche Operation:

  • In beiden Fällen wird das Netzwerk mit Gradientenabstieg unter Verwendung des am Ausgang berechneten rückpropagierten quadratischen Fehlers trainiert.
  • In beiden Beispielen wird die logistische Funktion für die Knotenaktivierung verwendet (die Ableitung der logistischen Funktion sist s(1 - s). Diese Ableitung ist offensichtlich sehr einfach zu berechnen, und dies ist ein Teil des Grundes, warum sie so häufig verwendet wurde (heutzutage ist die ReLU- Aktivierungsfunktion populärer) insbesondere bei Faltungsnetzwerken).
  • Die erste Methode nutzt auch den Impuls .

Der Hauptunterschied, den ich sehen kann, besteht darin, dass die Backpropagation im ersten Fall iterativ ist, während sie im zweiten Beispiel im Batch-Modus ausgeführt wird.

Das letzte Video der Reihe von Welch Labs stellt eine quasi-Newtonsche Methode vor, die den Vorteil bietet, das Minimum der Kostenfunktion durch Berechnung des Hessischen (Matrix von Ableitungen zweiter Ordnung des Fehlers in Bezug auf die Gewichte) zu finden. Dies fühlt sich jedoch wie ein Vergleich von Äpfeln und Orangen an - der Vanille-Gefälle-Abstieg verwendet keine Informationen zweiter Ordnung.

cantordust
quelle