48

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

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

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

Danke,

@msw

meisten interessant. Danke, ich denke, zwei gute Punkte sind: 1. "Die" universelle Approximation "-Eigenschaft von Multilayer-Perceptrons mit den am häufigsten verwendeten Aktivierungsfunktionen für verborgene Layer gilt nicht, wenn Sie die Bias-Terme weglassen. Aber Hornik (1993) zeigt das eine hinreichende Bedingung für die universelle Approximationseigenschaft ohne Verzerrungen ist, dass keine Ableitung der Aktivierungsfunktion im Ursprung verschwindet, was impliziert, dass mit den üblichen Sigmoidaktivierungsfunktionen anstelle einer trainierbaren Verzerrung ein fester von Null verschiedener Bias-Term verwendet werden kann. 2. Die Bias-Bedingungen können wie andere Gewichte gelernt werden.“So werde ich entweder in einem‚konstanten Gewicht‘hinzufügen oder trainieren dieses Gewicht wie alle anderen Gradientenabfallsaktualisierung verwenden.

Bin ich richtig verstehen?

+4

Das ist eine große Frage mit einer bedauerlich großen Antwort. Dies ist ein anständiger Ausgangspunkt: ftp://ftp.sas.com/pub/neural/FAQ2.html#A_bias – msw

+1

Trainieren Sie dieses Gewicht wie alle anderen mit Gradientenabstieg – pberkes

+0

Bias Term erforderlich ist, ermöglicht ein Bias-Wert, um zu verschieben die Aktivierungsfunktion (Sigmoid-Funktion) nach links oder rechts. Die im Bias-Term verwendeten Gewichte werden im Backpropagation-Algorithmus geändert und mithilfe von Gradientenabstieg oder fortgeschrittener Optimierungstechnik wie der fminunc-Funktion in Octave/Matlab optimiert. –

Antwort

48

Nach der Notation von Rojas 1996, chapter 7 berechnet Backpropagation partiellen Ableitungen der Fehlerfunktion E (aka Kosten, auch bekannt als Verlust)

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

wo w[i,j] das Gewicht der Verbindung zwischen den Neuronen ist i und j, j ist eine Schicht höher im Netzwerk als i, und o[i] ist die Ausgabe (Aktivierung) von i (im Fall der "Eingabeebene", das ist nur der Wert der Funktion i in der Trainingsstichprobe unter Berücksichtigung). Wie zu bestimmen delta ist in jedem Lehrbuch gegeben und hängt von der Aktivierungsfunktion ab, also 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 gamma die Lernrate ist.

Die Regel für Biasgewichte ist sehr ähnlich, nur dass von einer vorherigen Ebene keine Eingabe erfolgt. Stattdessen ist bias (gedanklich) durch eine Eingabe von einem Neuronen verursachte mit einer festen Aktivierung von 1. Also, für die Bias Gewicht Aktualisierungsregel ist

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

wo bias[j] ist, das Gewicht des Vorspannungsstroms auf neuron j die Multiplikation mit 1 kann natürlich 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 mir nicht sicher bin, ob dies theoretisch gerechtfertigt ist.

+0

Haben Menschen die Verzerrung ('1') in der Ebene 'l' als Aktivierung dieser Ebene? Ich meine, wenn ja, dann kann die Aktualisierung der Gewichte in der Schicht "l" einschließlich der Gewichte für ihre Verzerrung als eine einzige Formel geschrieben werden: 'w (l) - = gamma * Punkt (delta (l + 1), o (l)) ', Habe ich recht? – Jason

1

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

∂C/∂(index of bias in network) 

Da Ihre Kostenfunktion wahrscheinlich explizit davon abhängen, nicht von einzelnen Gewichten und Werten (Kosten können (Netzausgang gleich - erwartete Ausgabe)^2, zum Beispiel), werden Sie die partiellen Ableitungen von beziehen müssen jedes Gewicht und Bias zu etwas, das Sie wissen, dh die Aktivierungswerte (Ausgänge) von Neuronen. Hier ist ein großer Führer zu diesem zu tun:

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

Dieses Handbuch gibt an, wie diese Dinge klar zu machen, aber manchmal auf Erklärung fehlen. Ich fand es sehr hilfreich Kapitel zu lesen 1 und 2 dieses Buches, als ich die Führung oben verlinkten lesen:

http://neuralnetworksanddeeplearning.com/chap1.html (bietet wesentliche Hintergrund für die Antwort auf Ihre Frage)

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

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

Denken Sie an das Problem, das Ihr Netzwerk als Landschaft multidimensionaler Hügel und Täler (Gradienten) zu lösen versucht. Diese Landschaft ist eine grafische Darstellung, wie sich Ihre Kosten bei der Änderung von Gewichten und Verzerrungen ändern. Das Ziel eines neuronalen Netzwerks besteht darin, den tiefsten Punkt in dieser Landschaft zu erreichen und dabei die kleinsten Kosten zu finden und Fehler zu minimieren. Wenn Sie sich vorstellen, dass Ihr Netzwerk ein Reisender ist, der versucht, den Boden dieser Gradienten zu erreichen (dh Gradientenabstieg), dann wird der Betrag, um den Sie jedes Gewicht (und jede Abweichung) ändern, mit der Steigung der Steigung (Steigung der Funktion) zusammenhängen. dass der Reisende gerade nach unten klettert. Die genaue Position des Reisenden wird durch einen mehrdimensionalen Koordinatenpunkt (Gewicht1, Gewicht2, Gewicht3, ... Gewicht_n) angegeben, wobei die Neigung als eine andere Art von Gewicht betrachtet werden kann. Wenn man sich die Gewichte/Voreingenommenheiten eines Netzwerks als Variablen für die Kostenfunktion des Netzwerks vor Augen führt, wird klar, dass ∂C/∂ (Index des Bias im Netzwerk) verwendet werden muss.

Verwandte Themen