Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung: Training des Perzeptrons | Neural Network von Grund Auf
Einführung in Neuronale Netze

bookHerausforderung: Training des Perzeptrons

Bevor mit dem Training des Perzeptrons fortgefahren wird, ist zu beachten, dass die binäre Kreuzentropie-Verlustfunktion verwendet wird, die zuvor besprochen wurde. Das letzte wichtige Konzept vor der Implementierung der Backpropagation ist die Formel für die Ableitung dieser Verlustfunktion bezüglich der Ausgabeaktivierungen, ana^n. Nachfolgend sind die Formeln für die Verlustfunktion und deren Ableitung aufgeführt:

L=(ylog(y^)+(1y)log(1y^))dan=y^yy^(1y^)\begin{aligned} L &= -(y \log(\hat{y}) + (1-y) \log(1 - \hat{y}))\\ da^n &= \frac {\hat{y} - y} {\hat{y}(1 - \hat{y})} \end{aligned}

wobei an=y^a^n = \hat{y}

Um zu überprüfen, ob das Perzeptron korrekt trainiert wird, gibt die Methode fit() auch den durchschnittlichen Verlust in jeder Epoche aus. Dieser wird berechnet, indem der Verlust über alle Trainingsbeispiele in dieser Epoche gemittelt wird:

for epoch in range(epochs):
    loss = 0

    for i in range(training_data.shape[0]):
        loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))

average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i))

Abschließend lauten die Formeln zur Berechnung der Gradienten wie folgt:

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}

Die Beispieldaten für das Training (X_train) sowie die zugehörigen Labels (y_train) sind als NumPy-Arrays in der Datei utils.py gespeichert. Zusätzlich sind dort auch Instanzen der Aktivierungsfunktionen definiert:

relu = ReLU()
sigmoid = Sigmoid()
Aufgabe

Swipe to start coding

  1. Berechnung der folgenden Gradienten: dz, d_weights, d_biases und da_prev in der Methode backward() der Klasse Layer.
  2. Berechnung des output des Modells in der Methode fit() der Klasse Perceptron.
  3. Berechnung von da (danda^n) vor der Schleife, was dem Gradienten des Verlusts bezüglich der Ausgabeaktivierungen entspricht.
  4. Berechnung von da und Durchführung der Backpropagation in der Schleife durch Aufruf der entsprechenden Methode für jede Schicht.

Bei korrekter Implementierung des Trainings sollte sich der Verlust bei einer Lernrate von 0.01 mit jeder Epoche stetig verringern.

Lösung

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 10
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

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

Suggested prompts:

Can you explain how the derivative of the binary cross-entropy loss is used in backpropagation?

What is the purpose of printing the average loss at each epoch?

Can you clarify how the gradients are computed using the provided formulas?

close

Awesome!

Completion rate improved to 4

bookHerausforderung: Training des Perzeptrons

Swipe um das Menü anzuzeigen

Bevor mit dem Training des Perzeptrons fortgefahren wird, ist zu beachten, dass die binäre Kreuzentropie-Verlustfunktion verwendet wird, die zuvor besprochen wurde. Das letzte wichtige Konzept vor der Implementierung der Backpropagation ist die Formel für die Ableitung dieser Verlustfunktion bezüglich der Ausgabeaktivierungen, ana^n. Nachfolgend sind die Formeln für die Verlustfunktion und deren Ableitung aufgeführt:

L=(ylog(y^)+(1y)log(1y^))dan=y^yy^(1y^)\begin{aligned} L &= -(y \log(\hat{y}) + (1-y) \log(1 - \hat{y}))\\ da^n &= \frac {\hat{y} - y} {\hat{y}(1 - \hat{y})} \end{aligned}

wobei an=y^a^n = \hat{y}

Um zu überprüfen, ob das Perzeptron korrekt trainiert wird, gibt die Methode fit() auch den durchschnittlichen Verlust in jeder Epoche aus. Dieser wird berechnet, indem der Verlust über alle Trainingsbeispiele in dieser Epoche gemittelt wird:

for epoch in range(epochs):
    loss = 0

    for i in range(training_data.shape[0]):
        loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))

average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i))

Abschließend lauten die Formeln zur Berechnung der Gradienten wie folgt:

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}

Die Beispieldaten für das Training (X_train) sowie die zugehörigen Labels (y_train) sind als NumPy-Arrays in der Datei utils.py gespeichert. Zusätzlich sind dort auch Instanzen der Aktivierungsfunktionen definiert:

relu = ReLU()
sigmoid = Sigmoid()
Aufgabe

Swipe to start coding

  1. Berechnung der folgenden Gradienten: dz, d_weights, d_biases und da_prev in der Methode backward() der Klasse Layer.
  2. Berechnung des output des Modells in der Methode fit() der Klasse Perceptron.
  3. Berechnung von da (danda^n) vor der Schleife, was dem Gradienten des Verlusts bezüglich der Ausgabeaktivierungen entspricht.
  4. Berechnung von da und Durchführung der Backpropagation in der Schleife durch Aufruf der entsprechenden Methode für jede Schicht.

Bei korrekter Implementierung des Trainings sollte sich der Verlust bei einer Lernrate von 0.01 mit jeder Epoche stetig verringern.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 10
single

single

some-alt