Frage

Update: a. Eine bessere Formulierung des Problems

Ich versuche, den Backpropagation-Algorithmus mit einem XOR-neuronales Netzwerk als Beispiel zu verstehen. Für diesen Fall gibt es 2 + 1 Eingangsneuronen bias, 2 Neuronen in der verborgenen Schicht 1 + bias, 1 und Ausgangsneurons.

 A   B  A XOR B
 1    1   -1
 1   -1    1
-1    1    1
-1   -1   -1


(Quelle: wikimedia.org )

Ich bin mit stochastischen backpropagation .

Nach einem bisschen Lesen mehr ich herausgefunden habe, dass der Fehler der Ausgabeeinheit zu den verborgenen Schichten ausbreitet ... anfangs war dies verwirrend, denn wenn man in der Eingangsschicht des neuronalen Netzes zu bekommen, dann bekommt jedes Neuron eine Fehlereinstellung von sowohl der Neuronen in der verborgenen Schicht. Insbesondere wird die Art und Weise der Fehler verteilt ist zunächst schwierig zu erreichen.

Schritt 1: berechnet die Ausgabe für jede Instanz der Eingabe.
Schritt 2 berechnet den Fehler zwischen dem Ausgangsneuronen (n) (in unserem Fall gibt es nur einen) und den Sollwert (e):
Step 2
Schritt 3: verwenden wir die Fehler von Schritt 2 die Fehler für jede versteckte Einheit h zu berechnen:
Schritt 3

Das ‚Gewicht kh‘ ist das Gewicht zwischen der verborgenen Einheit h und der Ausgabeeinheit k, auch dies verwirrend ist, weil die Eingabeeinheit keinen direktes Gewicht mit der Ausgabeeinheit verbunden. Nach starrt auf der Formel für ein paar Stunden begann ich über das, was die Summiereinrichtung zu denken, und ich fange an, dass jede/r Eingangsneuronen Gewicht zu dem Schluss gekommen, dass eine Verbindung zu der verborgenen Schicht Neuronen durch den Ausgabefehler multipliziert und aufsummiert . Dies ist eine logische Schlussfolgerung, aber die Formel scheint ein wenig verwirrend, da es eindeutig die ‚Gewicht kh‘ sagt (zwischen der Ausgangsschicht k und versteckter Schicht h).

Bin ich Verständnis hier alles richtig? Kann jemand bestätigen das?

Was ist O (h) der Eingangsschicht? Mein Verständnis ist, dass jeder Eingangsknoten hat zwei Ausgänge: eine, die den ersten Knoten der verborgenen Schicht und eine, die in den zweiten Knoten verborgenen Schicht geht geht. Welche der beiden Ausgänge sollten in den O(h)*(1 - O(h)) Teil der Formel gesteckt werden?
Schritt 3

War es hilfreich?

Lösung

Das Tutorial Sie hier gepostet tut es eigentlich falsch. Ich habe doppelt gegen Bischof zwei Standard-Bücher und zwei meine Arbeits-Implementierungen. Ich werde weiter unten, wo genau darauf hin.

Eine wichtige Sache im Auge zu behalten ist, dass Sie immer für Derivate der Fehlerfunktion suchen in Bezug auf eine Einheit oder Gewicht. Die ersteren sind die Deltas, letztere ist, was Sie Ihre Gewichte aktualisieren verwenden.

Wenn Sie backpropagation verstehen wollen, müssen Sie die Kettenregel verstehen. Es geht nur um die Kette hier herrschen. Wenn Sie nicht wissen, wie es genau funktioniert, versuchen Sie es zu wikipedia - es ist nicht so schwer. Aber sobald Sie die Abstammungen verstehen, fällt alles an seinen Platz. Versprechen! :)

∂E / ∂W kann in ∂E / ∂o ∂o / ∂W über die Kettenregel bestehen. ∂o / ∂W wird leicht berechnet, da es nur die Ableitung der Aktivierung / Ausgabe von einer Einheit in Bezug auf die Gewichte ist. ∂E / ∂o ist eigentlich das, was wir die Deltas nennen. (Ich gehe davon aus, dass E, o und W sind Vektoren / Matrizen hier)

Wir haben sie für die Ausgabeeinheiten, denn das ist, wo wir den Fehler berechnen können. (Meistens haben wir eine Fehlerfunktion, die von zu Delta kommt nach unten (t_k -. O_k), zB für quadratische Fehlerfunktion im Fall von linearen Ausgängen und Kreuzentropie falls für logistische Ausgänge)

Die Frage ist nun, wie wir die Ableitungen für die internen Einheiten bekommen? Nun, wir wissen, dass die Ausgabe einer Einheit ist die Summe aller eingehenden Einheiten gewichtet durch ihre Gewichte und die Anwendung einer Übertragungsfunktion danach. So o_k = f (sum (w_kj * o_j, für alle j)).

Also, was wir tun, ist, derive o_k in Bezug auf o_j. Da delta_j = ∂E / ∂o_j = ∂E / ∂o_k ∂o_k / ∂o_j = delta_k ∂o_k / o_j. So gegeben delta_k, können wir delta_j berechnen!

Lassen Sie uns dies tun. o_k = f (sum (w_kj * o_j, für alle j)) => ∂o_k / ∂o_j = f '(sum (w_kj * o_j, für alle j)) * w_kj = f' (z_k) * w_kj.

Für den Fall der S-förmigen Übertragungsfunktion, wird dies z_k (1 - z_k) * w_kj. ( Hier ist der Fehler im Tutorial, sagt der Autor o_k (1 - o_k) * w_kj )

Andere Tipps

Ich bin mir nicht sicher, was Ihre Frage ist, aber ich ging tatsächlich durch dieses Tutorial mich und ich kann Ihnen, anders als eine eine offensichtliche Tippfehler versichern, es ist nichts falsch über sie.

Ich werde die Annahme, dass Ihre Frage ist, weil Sie sind verwirrt darüber, wie die Backpropagation versteckt Delta abgeleitet ist. Wenn dies tatsächlich Ihre Frage ist dann beachten Sie bitte


(Quelle: pandamatak.com )

Sie sind wahrscheinlich verwirrt, wie der Autor dieser Gleichung abgeleitet. Dies ist eigentlich eine einfache Anwendung der multivariaten Kettenregel. Das heißt, (was von wikipedia )

"Angenommen, dass jedes Argument z = f (u, v) ist eine Zwei variable Funktion, so dass u h (x, y) und V = g (x, y) =, und dass diese Funktionen sind alle differenzierbar . Dann würde die Kettenregel wie folgt aussehen:

alt text

alt text

Nun stellen Sie die Kettenregel durch ein Induktions Argument erstreckt

E (z ' 1 , z' 2 , .., z ' n ) wobei z ' k ist der Ausgang der k-ten Ausgangsschicht Voraktivierung, und z ' k (w ji ), das heißt, dass E eine Funktion der z' und z‘selbst ist eine Funktion der w ji (wenn dies für Sie Sinn zunächst nicht machen denken sehr sorgfältig darüber, wie ein NN-Setup.) Anwendung der Kettenregel direkt erweitert n Variablen:

& dgr; E (z ' 1 , z' 2 , .., z ' n ) / < sub> & delta; w ji = Σ k & dgr; E / & dgr; z ' k & dgr; z ' k / & delta; w ji

, dass der wichtigste Schritt ist, gilt der Autor dann die Kettenregel wieder, diesmal in der Summe des & dgr; z ' k / & delta; w ji Begriff, dh

& dgr; z ' k / & delta; w ji = & dgr; z' k / öo j öo j / & dgr; z j & dgr; z j / & delta; w ji .

Wenn Sie Schwierigkeiten haben, die Kettenregel zu verstehen, können Sie einen Kurs über multivariate Kalkül nehmen müssen, oder lesen Sie einen solchen Abschnitt in einem Lehrbuch.

Viel Glück.

Was habe ich gelesen, aus Schritt 3-Gleichung lautet:

  1. O_h = letzte Ausgabe dieser versteckten Einheit (O_h auf der Eingangsschicht ist der Ist-Eingangswert)
  2. w_kh = Gewicht der Verbindung zwischen dieser versteckten Einheit und einer Einheit der nächsten Schicht (in Richtung Ausgang)
  3. delta_k = Fehler der Einheit der nächsten Schicht (in Richtung Ausgang, gleiche Einheit wie vorherige Kugel)

Jede Einheit verfügt über nur einen Ausgang, aber jede Verbindung zwischen dem Ausgang und der nächsten Schicht gewichtet wird. So ist der Ausgang gleich, aber auf der Empfängerseite, wobei jede Einheit einen anderen Wert erhalten, wenn das Gewicht der Verbindungen unterscheidet. O_h bezieht sich immer auf den Wert dieses Neuron für die letzte Iteration. Fehler gelten nicht für die Eingangsschicht, wie sie durch Definition hat der Eingang keine ‚Fehler‘ per se.

muss der Fehler berechnet wird Schicht für Schicht auf der Ausgangsseite starten, da wir die Fehlerwert der Schicht müssen N + 1 zu berechnen Schicht N. sind Sie richtig, gibt es keine direkte Verbindung zwischen Eingang und Ausgang in backpropagation .

Ich glaube, die Gleichung korrekt ist, wenn nicht eingängig. Was wahrscheinlich ist verwirrend ist, dass in Vorwärtspropagation für jede Einheit müssen wir alle Einheiten und Links auf der linken Seite der Einheit (Eingabewerte) betrachten, sondern für die Fehlerfortpflanzung (Backpropagation) war haben die Einheiten auf der rechten Seite (Ausgang zu berücksichtigen Wert) der Einheit verarbeitet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top