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

Die Rückwärtsausbreitung (Backpropagation) ist der Prozess, bei dem berechnet wird, wie sich die Verlustfunktion in Bezug auf jeden Parameter im Netzwerk verändert. Das Ziel ist es, die Parameter in die Richtung zu aktualisieren, die den Verlust verringert.

Dazu wird der Gradientenabstiegsalgorithmus verwendet und die Ableitungen des Verlusts in Bezug auf die Präaktivierungswerte jeder Schicht (Rohwerte vor Anwendung der Aktivierungsfunktion) berechnet und rückwärts propagiert.

Jede Schicht trägt zur endgültigen Vorhersage bei, daher müssen die Gradienten strukturiert berechnet werden:

  1. Durchführung der Vorwärtsausbreitung;
  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 der Gradienten für Gewichte und Biases zur Aktualisierung.
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;

Indem a0a^0 auf xx (die Eingaben) gesetzt wird, kann die Vorwärtsausbreitung 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, führen wir die folgenden Notationen ein:

  • 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 berechnen wir zunächst den Gradienten des Verlusts bezüglich der Aktivierungen der Ausgabeschicht, danda^n. Anschließend berechnen wir mit der Kettenregel den Gradienten des Verlusts bezüglich der Präaktivierungen der Ausgabeschicht:

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

Das Symbol \odot steht für elementweise Multiplikation. Da wir mit Vektoren und Matrizen arbeiten, steht das übliche Multiplikationssymbol \cdot stattdessen für das Skalarprodukt. fnf'^n ist die Ableitung der Aktivierungsfunktion der Ausgabeschicht.

Diese Größe gibt an, wie empfindlich die Verlustfunktion auf Änderungen der Voraktivierung der Ausgabeschicht reagiert.

Sobald dzn\text d z^n berechnet wurde, werden die Gradienten für die Gewichte und Bias berechnet:

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

wobei (an1)T(a^{n-1})^T der transponierte Aktivierungsvektor der vorherigen Schicht ist. Da der ursprüngliche Vektor ein nneurons×1n_{neurons} \times 1 Vektor ist, ist der transponierte Vektor ein 1×nneurons1 \times n_{neurons} Vektor.

Um dies rückwärts zu propagieren, wird die Ableitung des Verlusts bezüglich der Aktivierungen der vorherigen Schicht berechnet:

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

Gradientenweitergabe zu den 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 Bias;
  3. Berechnung von dal1da^{l-1} zur Rückpropagierung der Ableitung.
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 Schritt wird wiederholt, bis die Eingabeschicht erreicht ist.

Aktualisierung von Gewichten und Biases

Nachdem die Gradienten für alle Schichten berechnet wurden, werden die Gewichte und Biases mithilfe des Gradientenabstiegs aktualisiert:

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

wobei α\alpha die Lernrate ist, die bestimmt, wie stark die Parameter angepasst werden.

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

Die Rückwärtsausbreitung (Backpropagation) ist der Prozess, bei dem berechnet wird, wie sich die Verlustfunktion in Bezug auf jeden Parameter im Netzwerk verändert. Das Ziel ist es, die Parameter in die Richtung zu aktualisieren, die den Verlust verringert.

Dazu wird der Gradientenabstiegsalgorithmus verwendet und die Ableitungen des Verlusts in Bezug auf die Präaktivierungswerte jeder Schicht (Rohwerte vor Anwendung der Aktivierungsfunktion) berechnet und rückwärts propagiert.

Jede Schicht trägt zur endgültigen Vorhersage bei, daher müssen die Gradienten strukturiert berechnet werden:

  1. Durchführung der Vorwärtsausbreitung;
  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 der Gradienten für Gewichte und Biases zur Aktualisierung.
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;

Indem a0a^0 auf xx (die Eingaben) gesetzt wird, kann die Vorwärtsausbreitung 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, führen wir die folgenden Notationen ein:

  • 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 berechnen wir zunächst den Gradienten des Verlusts bezüglich der Aktivierungen der Ausgabeschicht, danda^n. Anschließend berechnen wir mit der Kettenregel den Gradienten des Verlusts bezüglich der Präaktivierungen der Ausgabeschicht:

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

Das Symbol \odot steht für elementweise Multiplikation. Da wir mit Vektoren und Matrizen arbeiten, steht das übliche Multiplikationssymbol \cdot stattdessen für das Skalarprodukt. fnf'^n ist die Ableitung der Aktivierungsfunktion der Ausgabeschicht.

Diese Größe gibt an, wie empfindlich die Verlustfunktion auf Änderungen der Voraktivierung der Ausgabeschicht reagiert.

Sobald dzn\text d z^n berechnet wurde, werden die Gradienten für die Gewichte und Bias berechnet:

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

wobei (an1)T(a^{n-1})^T der transponierte Aktivierungsvektor der vorherigen Schicht ist. Da der ursprüngliche Vektor ein nneurons×1n_{neurons} \times 1 Vektor ist, ist der transponierte Vektor ein 1×nneurons1 \times n_{neurons} Vektor.

Um dies rückwärts zu propagieren, wird die Ableitung des Verlusts bezüglich der Aktivierungen der vorherigen Schicht berechnet:

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

Gradientenweitergabe zu den 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 Bias;
  3. Berechnung von dal1da^{l-1} zur Rückpropagierung der Ableitung.
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 Schritt wird wiederholt, bis die Eingabeschicht erreicht ist.

Aktualisierung von Gewichten und Biases

Nachdem die Gradienten für alle Schichten berechnet wurden, werden die Gewichte und Biases mithilfe des Gradientenabstiegs aktualisiert:

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

wobei α\alpha die Lernrate ist, die bestimmt, wie stark die Parameter angepasst werden.

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