Herausforderung: 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, an. Nachfolgend sind die Formeln für die Verlustfunktion und deren Ableitung aufgeführt:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−ywobei an=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=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))Abschließend lauten die Formeln zur Berechnung der Gradienten wie folgt:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlDie 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()
Swipe to start coding
Ziel ist es, den Trainingsprozess für einen mehrschichtigen Perzeptron durch die Implementierung von Backpropagation und das Aktualisieren der Modellparameter abzuschließen.
Gehen Sie dabei wie folgt vor:
- Implementieren Sie die Methode
backward()in der KlasseLayer:
- Berechnen Sie die folgenden Gradienten:
dz: Ableitung des Verlusts bezüglich der Voraktivierungswerte unter Verwendung der Ableitung der Aktivierungsfunktion;d_weights: Gradient des Verlusts bezüglich der Gewichte, berechnet als das Skalarprodukt vondzund dem transponierten Eingabevektor;d_biases: Gradient des Verlusts bezüglich der Biases, entsprichtdz;da_prev: Gradient des Verlusts bezüglich der Aktivierungen der vorherigen Schicht, erhalten durch Multiplikation der transponierten Gewichtsmatrix mitdz.- Aktualisieren Sie die Gewichte und Biases unter Verwendung der Lernrate.
- Vervollständigen Sie die Methode
fit()in der KlassePerceptron:
- Berechnen Sie die Modellausgabe durch Aufruf der Methode
forward();- Berechnen Sie den Verlust mit der Kreuzentropie-Formel;
- Berechnen Sie dan — die Ableitung des Verlusts bezüglich der Ausgangsaktivierungen;
- Durchlaufen Sie die Schichten rückwärts und führen Sie die Backpropagation durch, indem Sie die jeweilige
backward()-Methode der Schicht aufrufen.
- Durchlaufen Sie die Schichten rückwärts und führen Sie die Backpropagation durch, indem Sie die jeweilige
- Überprüfen Sie das Trainingsverhalten:
- Wenn alles korrekt implementiert ist, sollte der Verlust bei Verwendung einer Lernrate von
0.01kontinuierlich abnehmen.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 4
Herausforderung: 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, an. Nachfolgend sind die Formeln für die Verlustfunktion und deren Ableitung aufgeführt:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−ywobei an=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=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))Abschließend lauten die Formeln zur Berechnung der Gradienten wie folgt:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlDie 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()
Swipe to start coding
Ziel ist es, den Trainingsprozess für einen mehrschichtigen Perzeptron durch die Implementierung von Backpropagation und das Aktualisieren der Modellparameter abzuschließen.
Gehen Sie dabei wie folgt vor:
- Implementieren Sie die Methode
backward()in der KlasseLayer:
- Berechnen Sie die folgenden Gradienten:
dz: Ableitung des Verlusts bezüglich der Voraktivierungswerte unter Verwendung der Ableitung der Aktivierungsfunktion;d_weights: Gradient des Verlusts bezüglich der Gewichte, berechnet als das Skalarprodukt vondzund dem transponierten Eingabevektor;d_biases: Gradient des Verlusts bezüglich der Biases, entsprichtdz;da_prev: Gradient des Verlusts bezüglich der Aktivierungen der vorherigen Schicht, erhalten durch Multiplikation der transponierten Gewichtsmatrix mitdz.- Aktualisieren Sie die Gewichte und Biases unter Verwendung der Lernrate.
- Vervollständigen Sie die Methode
fit()in der KlassePerceptron:
- Berechnen Sie die Modellausgabe durch Aufruf der Methode
forward();- Berechnen Sie den Verlust mit der Kreuzentropie-Formel;
- Berechnen Sie dan — die Ableitung des Verlusts bezüglich der Ausgangsaktivierungen;
- Durchlaufen Sie die Schichten rückwärts und führen Sie die Backpropagation durch, indem Sie die jeweilige
backward()-Methode der Schicht aufrufen.
- Durchlaufen Sie die Schichten rückwärts und führen Sie die Backpropagation durch, indem Sie die jeweilige
- Überprüfen Sie das Trainingsverhalten:
- Wenn alles korrekt implementiert ist, sollte der Verlust bei Verwendung einer Lernrate von
0.01kontinuierlich abnehmen.
Lösung
Danke für Ihr Feedback!
single