it-swarm.com.de

Wie aktualisiere ich die Abweichung bei der Backpropagation von neuronalen Netzen?

Könnte mir bitte jemand erklären, wie ich die Abweichung während der Backpropagation aktualisiere?

Ich habe einige Bücher gelesen, kann aber keine Bias-Aktualisierung feststellen!

Ich verstehe, dass Voreingenommenheit eine zusätzliche Eingabe von 1 ist, an die ein Gewicht angehängt ist (für jedes Neuron). Es muss eine Formel geben.

Vielen Dank,

@msw

Am interessantesten. Vielen Dank, ich denke, zwei gute Punkte sind: 1. Die Eigenschaft "universelle Approximation" von mehrschichtigen Perzeptronen mit den am häufigsten verwendeten Aktivierungsfunktionen für versteckte Schichten gilt nicht, wenn Sie die Verzerrungsterme weglassen. Hornik (1993) zeigt jedoch, dass a ausreichende Bedingung für die universelle Approximationseigenschaft ohne Verzerrungen ist, dass keine Ableitung der Aktivierungsfunktion am Ursprung verschwindet, was impliziert, dass mit den üblichen Sigmoid-Aktivierungsfunktionen ein fester Nicht-Null-Verzerrungsterm anstelle einer trainierbaren Verzerrung verwendet werden kann. 2. Die Voreingenommenheitsterme können wie andere Gewichte gelernt werden. "Also werde ich entweder ein 'konstantes Gewicht' hinzufügen oder dieses Gewicht wie alle anderen durch Gradientenabstieg trainieren.

Verstehe ich richtig?

67
Katya

Nach der Notation von Rojas 1996, Kapitel 7 berechnet die Backpropagation partielle Ableitungen der Fehlerfunktion E (aka cost, aka loss)

∂E/∂w[i,j] = delta[j] * o[i]

wo w[i,j] ist das Gewicht der Verbindung zwischen den Neuronen i und j, wobei j eine Schicht höher im Netzwerk liegt als i und o[i] ist die Ausgabe (Aktivierung) von i (im Fall der "Eingabeebene" ist dies nur der Wert des Merkmals i im betrachteten Trainingsmuster). Wie man delta bestimmt, ist in jedem Lehrbuch angegeben und hängt von der Aktivierungsfunktion ab, daher werde ich es hier nicht wiederholen.

Diese Werte können dann in Gewichtsaktualisierungen verwendet werden, z.

// update rule for Vanilla online gradient descent
w[i,j] -= gamma * o[i] * delta[j]

dabei ist gamma die Lernrate.

Die Regel für Bias-Gewichte ist sehr ähnlich, außer dass keine Eingabe von einer vorherigen Ebene erfolgt. Stattdessen wird die Verzerrung (konzeptionell) durch die Eingabe eines Neurons mit einer festen Aktivierung von 1 verursacht. Die Aktualisierungsregel für die Verzerrungsgewichte lautet also

bias[j] -= gamma_bias * 1 * delta[j]

wo bias[j] ist das Gewicht der Verzerrung des Neurons j, die Multiplikation mit 1 kann offensichtlich weggelassen werden, und gamma_bias kann auf gamma oder auf einen anderen Wert gesetzt werden. Wenn ich mich richtig erinnere, werden niedrigere Werte bevorzugt, obwohl ich nicht sicher bin, ob dies theoretisch gerechtfertigt ist.

64
Fred Foo

Der Betrag, den Sie für jedes einzelne Gewicht und jede Verzerrung ändern, ist die partielle Ableitung Ihrer Kostenfunktion in Bezug auf jedes einzelne Gewicht und jede einzelne Verzerrung.

∂C/∂(index of bias in network)

Da Ihre Kostenfunktion wahrscheinlich nicht explizit von einzelnen Gewichten und Werten abhängt (die Kosten können beispielsweise gleich sein (Netzwerkleistung - erwartete Leistung) ^ 2), müssen Sie die partiellen Ableitungen der einzelnen Gewichte und Verzerrungen auf etwas beziehen, das Sie möchten kennen, dh die Aktivierungswerte (Outputs) von Neuronen. Hier ist eine gute Anleitung dazu:

https://medium.com/@erikhallstrm/backpropagation-from-the-beginning-77356edf427d

In diesem Handbuch wird erklärt, wie diese Dinge klar und deutlich zu bewerkstelligen sind. Manchmal fehlen jedoch Erklärungen. Ich fand es sehr hilfreich, die Kapitel 1 und 2 dieses Buches zu lesen, als ich den oben verlinkten Leitfaden las:

http://neuralnetworksanddeeplearning.com/chap1.html (liefert den wesentlichen Hintergrund für die Antwort auf Ihre Frage)

http://neuralnetworksanddeeplearning.com/chap2.html (beantwortet Ihre Frage)

Grundsätzlich werden Verzerrungen auf dieselbe Weise aktualisiert wie Gewichte: Eine Änderung wird basierend auf dem Gradienten der Kostenfunktion an einem mehrdimensionalen Punkt bestimmt.

Stellen Sie sich das Problem, das Ihr Netzwerk lösen möchte, als eine Landschaft aus mehrdimensionalen Hügeln und Tälern (Gefällen) vor. Diese Landschaft ist eine grafische Darstellung, wie sich Ihre Kosten mit wechselnden Gewichten und Vorurteilen ändern. Das Ziel eines neuronalen Netzwerks ist es, den niedrigsten Punkt in dieser Landschaft zu erreichen, um so die geringsten Kosten zu ermitteln und Fehler zu minimieren. Wenn Sie sich Ihr Netzwerk als einen Reisenden vorstellen, der versucht, den Grund dieser Steigungen (dh Gefälle) zu erreichen, hängt der Betrag, um den Sie jedes Gewicht (und jede Neigung) ändern, von der Steigung der Steigung (Gefälle der Funktion) ab. dass der Reisende gerade absteigt. Die genaue Position des Reisenden wird durch einen mehrdimensionalen Koordinatenpunkt (weight1, weight2, weight3, ... weight_n) angegeben, bei dem die Abweichung als eine andere Art von Gewicht angesehen werden kann. Wenn Sie sich die Gewichte/Verzerrungen eines Netzwerks als Variablen für die Kostenfunktion des Netzwerks vorstellen, wird deutlich, dass thatC/∂ (Index der Verzerrung im Netzwerk) verwendet werden muss.

5
H Froedge