Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Rückwärtspropagation | Neural Network von Grund Auf
Einführung in Neuronale Netze

bookRückwärtspropagation

Rückwärtspropagation, oder Backpropagation, ist der Prozess, bei dem bestimmt wird, wie sich die Verlustfunktion in Bezug auf jeden Parameter im neuronalen Netzwerk verändert. Das Ziel ist es, diese Parameter so anzupassen, dass der Gesamtverlust verringert wird.

Dieser Prozess basiert auf dem Gradientenabstiegsalgorithmus, der die Ableitungen des Verlusts in Bezug auf die Präaktivierungswerte jeder Schicht (die Rohwerte vor Anwendung der Aktivierungsfunktion) verwendet und diese rückwärts durch das Netzwerk propagiert.

Da jede Schicht zur endgültigen Vorhersage beiträgt, werden die Gradienten schrittweise berechnet:

  1. Durchführung der Vorwärtspropagation, um die Ausgaben zu erhalten;
  2. Berechnung der Ableitung des Verlusts in Bezug auf die Präaktivierung des Ausgangs;
  3. Rückpropagieren dieser Ableitung durch die Schichten mithilfe der Kettenregel;
  4. Berechnung und Verwendung der Gradienten für Gewichte und Biases, um diese während des Trainings zu aktualisieren.
Note
Hinweis

Gradienten stellen die Änderungsrate einer Funktion in Bezug auf ihre Eingaben dar, das heißt, sie sind deren Ableitungen. Sie zeigen an, wie stark eine kleine Änderung der Gewichte, Biases oder Aktivierungen die Verlustfunktion beeinflusst und steuern so den Lernprozess des Modells durch den Gradientenabstieg.

Notation

Zur besseren Verständlichkeit verwenden wir folgende Notation:

  • WlW^l ist die Gewichtsmatrix der Schicht ll;
  • blb^l ist der Bias-Vektor der Schicht ll;
  • zlz^l ist der Präaktivierungsvektor der Schicht ll;
  • ala^l ist der Aktivierungsvektor der Schicht ll;

Wenn a0a^0 auf xx (die Eingaben) gesetzt wird, kann die Vorwärtspropagation in einem Perzeptron mit n Schichten durch folgende Operationsfolge beschrieben werden:

a0=x,......z1=W1a0+b1,zl=Wlal1+bl,zn=Wnan1+bn,a1=f1(z1),al=fl(zl),an=fn(zn),......y^=an.\begin{aligned} a^0 &= x, & &... & &...\\ z^1 &= W^1 a^0 + b^1, & z^l &= W^l a^{l-1} + b^l, & z^n &= W^n a^{n-1} + b^n,\\ a^1 &= f^1(z^1), & a^l &= f^l(z^l), & a^n &= f^n(z^n),\\ &... & &... & \hat y &= a^n. \end{aligned}

Um die Rückpropagation mathematisch zu beschreiben, werden folgende Notationen eingeführt:

  • dalda^l: Ableitung des Verlusts bezüglich der Aktivierungen in Schicht ll;
  • dzldz^l: Ableitung des Verlusts bezüglich der Präaktivierungen in Schicht ll (vor Anwendung der Aktivierungsfunktion);
  • dWldW^l: Ableitung des Verlusts bezüglich der Gewichte in Schicht ll;
  • dbldb^l: Ableitung des Verlusts bezüglich der Biases in Schicht ll.

Gradientenberechnung für die Ausgabeschicht

In der letzten Schicht nn besteht der erste Schritt darin, den Gradienten des Verlusts bezüglich der Aktivierungen der Ausgabeschicht, bezeichnet als danda^n, zu berechnen.

Anschließend wird mithilfe der Kettenregel der Gradient des Verlusts bezüglich der Präaktivierungen der Ausgabeschicht wie folgt berechnet:

dzn=danfn(zn)dz^n = da^n \odot f'^n(z^n)

Hierbei steht fn(zn)f'^n(z^n) für die Ableitung der Aktivierungsfunktion in Schicht nn, und das Symbol \odot bezeichnet die elementweise Multiplikation.

Note
Hinweis

Das Symbol \odot bezeichnet die elementweise Multiplikation, bei der jedes Element eines Vektors mit dem entsprechenden Element eines anderen Vektors multipliziert wird. Im Gegensatz dazu steht das Symbol \cdot für das Skalarprodukt, das bei der üblichen Matrix- oder Vektormultiplikation verwendet wird. Der Ausdruck fnf'^n bezieht sich auf die Ableitung der Aktivierungsfunktion in der Ausgabeschicht.

Dieser Wert gibt an, wie empfindlich die Verlustfunktion auf Änderungen der Voraktivierungswerte der Ausgabeschicht reagiert.

Nach der Berechnung von dzndz^n besteht der nächste Schritt darin, die Gradienten für die Gewichte und Biases zu bestimmen:

dWn=dzn(an1)T,dbn=dzn\begin{aligned} dW^n &= dz^n \cdot (a^{n-1})^T,\\ db^n &= dz^n \end{aligned}

Diese Gradienten beschreiben, wie stark jedes Gewicht und jeder Bias in der Ausgabeschicht angepasst werden sollte, um den Verlust zu verringern.

Hierbei ist (an1)T(a^{n-1})^T der transponierte Aktivierungsvektor der vorherigen Schicht. Wenn der ursprüngliche Vektor die Form nneurons×1n_{\text{neurons}} \times 1 hat, besitzt seine Transponierte die Form 1×nneurons1 \times n_{\text{neurons}}.

Um die Rückwärtspropagation fortzusetzen, wird die Ableitung des Verlusts bezüglich der Aktivierungen der vorherigen Schicht wie folgt berechnet:

dan1=(Wn)Tdznda^{n-1} = (W^n)^T \cdot dz^n

Dieser Ausdruck ermöglicht es, das Fehlersignal rückwärts durch das Netzwerk zu leiten, sodass frühere Schichten während des Trainings angepasst werden können.

Gradientenweitergabe an die versteckten Schichten

Für jede versteckte Schicht ll ist das Vorgehen identisch. Gegeben dalda^l:

  1. Berechnung der Ableitung des Verlusts bezüglich der Voraktivierungen;
  2. Berechnung der Gradienten für die Gewichte und Biases;
  3. Berechnung von dal1da^{l-1} zur Weitergabe der Ableitung nach hinten.
dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Dieser Vorgang wird für jede vorhergehende Schicht schrittweise wiederholt, bis die Eingabeschicht erreicht ist.

Aktualisierung von Gewichten und Biases

Nach der Berechnung der Gradienten für alle Schichten werden die Gewichte und Biases mithilfe des Gradientenabstiegs-Algorithmus aktualisiert:

Wl=WlαdWl,bl=blαdbl.\begin{aligned} W^l &= W^l - \alpha \cdot dW^l,\\ b^l &= b^l - \alpha \cdot db^l. \end{aligned}

Hierbei steht α\alpha für die Lernrate, die steuert, wie stark die Parameter bei jedem Trainingsschritt angepasst werden.

Hierbei ist α\alpha die Lernrate, ein Hyperparameter, der die Größe der Anpassung der Gewichte und Biases bei jedem Aktualisierungsschritt bestimmt.

question mark

Wie aktualisiert ein neuronales Netzwerk während der Rückpropagation seine Gewichte und Biases, um die Verlustfunktion zu minimieren?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 7

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 4

bookRückwärtspropagation

Swipe um das Menü anzuzeigen

Rückwärtspropagation, oder Backpropagation, ist der Prozess, bei dem bestimmt wird, wie sich die Verlustfunktion in Bezug auf jeden Parameter im neuronalen Netzwerk verändert. Das Ziel ist es, diese Parameter so anzupassen, dass der Gesamtverlust verringert wird.

Dieser Prozess basiert auf dem Gradientenabstiegsalgorithmus, der die Ableitungen des Verlusts in Bezug auf die Präaktivierungswerte jeder Schicht (die Rohwerte vor Anwendung der Aktivierungsfunktion) verwendet und diese rückwärts durch das Netzwerk propagiert.

Da jede Schicht zur endgültigen Vorhersage beiträgt, werden die Gradienten schrittweise berechnet:

  1. Durchführung der Vorwärtspropagation, um die Ausgaben zu erhalten;
  2. Berechnung der Ableitung des Verlusts in Bezug auf die Präaktivierung des Ausgangs;
  3. Rückpropagieren dieser Ableitung durch die Schichten mithilfe der Kettenregel;
  4. Berechnung und Verwendung der Gradienten für Gewichte und Biases, um diese während des Trainings zu aktualisieren.
Note
Hinweis

Gradienten stellen die Änderungsrate einer Funktion in Bezug auf ihre Eingaben dar, das heißt, sie sind deren Ableitungen. Sie zeigen an, wie stark eine kleine Änderung der Gewichte, Biases oder Aktivierungen die Verlustfunktion beeinflusst und steuern so den Lernprozess des Modells durch den Gradientenabstieg.

Notation

Zur besseren Verständlichkeit verwenden wir folgende Notation:

  • WlW^l ist die Gewichtsmatrix der Schicht ll;
  • blb^l ist der Bias-Vektor der Schicht ll;
  • zlz^l ist der Präaktivierungsvektor der Schicht ll;
  • ala^l ist der Aktivierungsvektor der Schicht ll;

Wenn a0a^0 auf xx (die Eingaben) gesetzt wird, kann die Vorwärtspropagation in einem Perzeptron mit n Schichten durch folgende Operationsfolge beschrieben werden:

a0=x,......z1=W1a0+b1,zl=Wlal1+bl,zn=Wnan1+bn,a1=f1(z1),al=fl(zl),an=fn(zn),......y^=an.\begin{aligned} a^0 &= x, & &... & &...\\ z^1 &= W^1 a^0 + b^1, & z^l &= W^l a^{l-1} + b^l, & z^n &= W^n a^{n-1} + b^n,\\ a^1 &= f^1(z^1), & a^l &= f^l(z^l), & a^n &= f^n(z^n),\\ &... & &... & \hat y &= a^n. \end{aligned}

Um die Rückpropagation mathematisch zu beschreiben, werden folgende Notationen eingeführt:

  • dalda^l: Ableitung des Verlusts bezüglich der Aktivierungen in Schicht ll;
  • dzldz^l: Ableitung des Verlusts bezüglich der Präaktivierungen in Schicht ll (vor Anwendung der Aktivierungsfunktion);
  • dWldW^l: Ableitung des Verlusts bezüglich der Gewichte in Schicht ll;
  • dbldb^l: Ableitung des Verlusts bezüglich der Biases in Schicht ll.

Gradientenberechnung für die Ausgabeschicht

In der letzten Schicht nn besteht der erste Schritt darin, den Gradienten des Verlusts bezüglich der Aktivierungen der Ausgabeschicht, bezeichnet als danda^n, zu berechnen.

Anschließend wird mithilfe der Kettenregel der Gradient des Verlusts bezüglich der Präaktivierungen der Ausgabeschicht wie folgt berechnet:

dzn=danfn(zn)dz^n = da^n \odot f'^n(z^n)

Hierbei steht fn(zn)f'^n(z^n) für die Ableitung der Aktivierungsfunktion in Schicht nn, und das Symbol \odot bezeichnet die elementweise Multiplikation.

Note
Hinweis

Das Symbol \odot bezeichnet die elementweise Multiplikation, bei der jedes Element eines Vektors mit dem entsprechenden Element eines anderen Vektors multipliziert wird. Im Gegensatz dazu steht das Symbol \cdot für das Skalarprodukt, das bei der üblichen Matrix- oder Vektormultiplikation verwendet wird. Der Ausdruck fnf'^n bezieht sich auf die Ableitung der Aktivierungsfunktion in der Ausgabeschicht.

Dieser Wert gibt an, wie empfindlich die Verlustfunktion auf Änderungen der Voraktivierungswerte der Ausgabeschicht reagiert.

Nach der Berechnung von dzndz^n besteht der nächste Schritt darin, die Gradienten für die Gewichte und Biases zu bestimmen:

dWn=dzn(an1)T,dbn=dzn\begin{aligned} dW^n &= dz^n \cdot (a^{n-1})^T,\\ db^n &= dz^n \end{aligned}

Diese Gradienten beschreiben, wie stark jedes Gewicht und jeder Bias in der Ausgabeschicht angepasst werden sollte, um den Verlust zu verringern.

Hierbei ist (an1)T(a^{n-1})^T der transponierte Aktivierungsvektor der vorherigen Schicht. Wenn der ursprüngliche Vektor die Form nneurons×1n_{\text{neurons}} \times 1 hat, besitzt seine Transponierte die Form 1×nneurons1 \times n_{\text{neurons}}.

Um die Rückwärtspropagation fortzusetzen, wird die Ableitung des Verlusts bezüglich der Aktivierungen der vorherigen Schicht wie folgt berechnet:

dan1=(Wn)Tdznda^{n-1} = (W^n)^T \cdot dz^n

Dieser Ausdruck ermöglicht es, das Fehlersignal rückwärts durch das Netzwerk zu leiten, sodass frühere Schichten während des Trainings angepasst werden können.

Gradientenweitergabe an die versteckten Schichten

Für jede versteckte Schicht ll ist das Vorgehen identisch. Gegeben dalda^l:

  1. Berechnung der Ableitung des Verlusts bezüglich der Voraktivierungen;
  2. Berechnung der Gradienten für die Gewichte und Biases;
  3. Berechnung von dal1da^{l-1} zur Weitergabe der Ableitung nach hinten.
dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Dieser Vorgang wird für jede vorhergehende Schicht schrittweise wiederholt, bis die Eingabeschicht erreicht ist.

Aktualisierung von Gewichten und Biases

Nach der Berechnung der Gradienten für alle Schichten werden die Gewichte und Biases mithilfe des Gradientenabstiegs-Algorithmus aktualisiert:

Wl=WlαdWl,bl=blαdbl.\begin{aligned} W^l &= W^l - \alpha \cdot dW^l,\\ b^l &= b^l - \alpha \cdot db^l. \end{aligned}

Hierbei steht α\alpha für die Lernrate, die steuert, wie stark die Parameter bei jedem Trainingsschritt angepasst werden.

Hierbei ist α\alpha die Lernrate, ein Hyperparameter, der die Größe der Anpassung der Gewichte und Biases bei jedem Aktualisierungsschritt bestimmt.

question mark

Wie aktualisiert ein neuronales Netzwerk während der Rückpropagation seine Gewichte und Biases, um die Verlustfunktion zu minimieren?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 7
some-alt