Wie kann die Verzerrung bei der Backpropagation des neuronalen Netzwerks aktualisiert werden?

74

Könnte mir bitte jemand erklären, wie man die Verzerrung während der Backpropagation aktualisiert?

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

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

Katya
quelle
4
Das ist eine große Frage mit einer bedauerlicherweise großen Antwort. Dies ist ein anständiger Ausgangspunkt: ftp.sas.com/pub/neural/FAQ2.html#A_bias
msw
1
Trainiere dieses Gewicht wie alle anderen mit Gefälle
pberkes
Ein Bias-Term ist erforderlich. Mit einem Bias-Wert können Sie die Aktivierungsfunktion (Sigmoid-Funktion) nach links oder rechts verschieben. Die im Bias-Term verwendeten Gewichte werden im Back-Propagation-Algorithmus geändert und mithilfe von Gradientenabstieg oder fortschrittlichen Optimierungstechniken wie der fminunc-Funktion in Octave / Matlab optimiert.
Goyal Vicky

Antworten:

70

Nach der Notation von Rojas 1996, Kapitel 7 , berechnet die Backpropagation partielle Ableitungen der Fehlerfunktion E(alias Kosten, alias Verlust).

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

Wo w[i,j]ist das Gewicht der Verbindung zwischen Neuronen iund j, da jes im Netzwerk eine Schicht höher ist als iund o[i]die Ausgabe (Aktivierung) von i(im Fall der "Eingabeschicht" ist dies nur der Wert des Merkmals iin der Trainingsprobe unter Erwägung). Wie zu bestimmen deltaist 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]

Wo gammaist 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 Vorspannung auf das Neuron j, kann die Multiplikation mit 1 offensichtlich weggelassen werden und gamma_biaskann auf gammaoder auf einen anderen Wert gesetzt werden. Wenn ich mich richtig erinnere, werden niedrigere Werte bevorzugt, obwohl ich mir über die theoretische Rechtfertigung nicht sicher bin.

Fred Foo
quelle
Schließen die Leute das Bias ( 1) auf der Ebene lals Aktivierung dieser Ebene ein? Ich meine, wenn ja, dann kann die Aktualisierung der Gewichte in der Ebene l, einschließlich der Gewichte für ihre Verzerrung, als eine einzige Formel geschrieben werden: w(l) -= gamma * dot( delta(l+1), o(l))Habe ich recht?
Jason
8

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

∂C/∂(index of bias in network)

Da Ihre Kostenfunktion wahrscheinlich nicht explizit von einzelnen Gewichten und Werten abhängt (Kosten können gleich sein (Netzwerkleistung - erwartete Leistung) ^ 2 zum Beispiel), müssen Sie die partiellen Ableitungen jedes Gewichts und jeder Verzerrung mit etwas in Beziehung setzen, das Sie haben wissen, dh die Aktivierungswerte (Ausgänge) von Neuronen. Hier ist eine großartige Anleitung dazu:

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

In diesem Handbuch wird klar angegeben, wie diese Dinge zu tun sind, es kann jedoch manchmal an Erklärungen mangeln. 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 (bietet wichtige Hintergrundinformationen für die Beantwortung Ihrer Frage)

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

Grundsätzlich werden Verzerrungen auf die gleiche 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 zu lösen versucht, als eine Landschaft aus mehrdimensionalen Hügeln und Tälern (Gefällen) vor. Diese Landschaft ist eine grafische Darstellung, wie sich Ihre Kosten mit sich ändernden Gewichten und Vorurteilen ändern. Das Ziel eines neuronalen Netzwerks ist es, den tiefsten Punkt in dieser Landschaft zu erreichen, um so die geringsten Kosten zu finden und Fehler zu minimieren. Wenn Sie sich Ihr Netzwerk als einen Reisenden vorstellen, der versucht, den Grund dieser Steigungen zu erreichen (dh die Steigung), hängt der Betrag, um den Sie jedes Gewicht (und jede Abweichung) ändern, mit der Steigung der Steigung (Steigung der Funktion) zusammen. dass der Reisende gerade nach unten klettert. Die genaue Position des Reisenden wird durch einen mehrdimensionalen Koordinatenpunkt (Gewicht1, Gewicht2, Gewicht3, ... Gewicht_n) angegeben, an dem die Vorspannung als eine andere Art von Gewicht angesehen werden kann.

H Froedge
quelle