Sfida: Addestramento del Percettrone
Prima di procedere con l'addestramento del percettrone, è importante ricordare che utilizza la funzione di perdita entropia incrociata binaria discussa in precedenza. L'ultimo concetto chiave prima di implementare la retropropagazione è la formula per la derivata di questa funzione di perdita rispetto alle attivazioni di output, an. Di seguito sono riportate le formule per la funzione di perdita e la sua derivata:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−ydove an=y^
Per verificare che il percettrone si stia addestrando correttamente, il metodo fit() stampa anche la perdita media a ogni epoca. Questa viene calcolata facendo la media della perdita su tutti gli esempi di addestramento in quell'epoca:
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))Infine, le formule per il calcolo dei gradienti sono le seguenti:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlI dati di addestramento di esempio (X_train) insieme alle etichette corrispondenti (y_train) sono memorizzati come array NumPy nel file utils.py. Inoltre, le istanze delle funzioni di attivazione sono anch'esse definite lì:
relu = ReLU()
sigmoid = Sigmoid()
Swipe to start coding
L'obiettivo è completare il processo di addestramento per un percettrone multistrato implementando la retropropagazione e aggiornando i parametri del modello.
Seguire attentamente questi passaggi:
- Implementare il metodo
backward()nella classeLayer:
- Calcolare i seguenti gradienti:
dz: derivata della funzione di perdita rispetto ai valori di pre-attivazione, utilizzando la derivata della funzione di attivazione;
d_weights: gradiente della perdita rispetto ai pesi, calcolato come prodotto scalare tradze il vettore di input trasposto;d_biases: gradiente della perdita rispetto ai bias, uguale adz;da_prev: gradiente della perdita rispetto alle attivazioni dello strato precedente, ottenuto moltiplicando la matrice dei pesi trasposta perdz.- Aggiornare pesi e bias utilizzando il learning rate.
- Completare il metodo
fit()nella classePerceptron:
- Calcolare l'output del modello chiamando il metodo
forward(); - Calcolare la perdita utilizzando la formula dell'entropia incrociata;
- Calcolare dan — la derivata della perdita rispetto alle attivazioni di output;
- Scorrere all'indietro attraverso gli strati, eseguendo la retropropagazione chiamando il metodo
backward()di ciascun layer.
- Verificare il comportamento dell'addestramento:
- Se tutto è implementato correttamente, la perdita dovrebbe diminuire costantemente a ogni epoca utilizzando un learning rate di
0.01.
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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?
Awesome!
Completion rate improved to 4
Sfida: Addestramento del Percettrone
Scorri per mostrare il menu
Prima di procedere con l'addestramento del percettrone, è importante ricordare che utilizza la funzione di perdita entropia incrociata binaria discussa in precedenza. L'ultimo concetto chiave prima di implementare la retropropagazione è la formula per la derivata di questa funzione di perdita rispetto alle attivazioni di output, an. Di seguito sono riportate le formule per la funzione di perdita e la sua derivata:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−ydove an=y^
Per verificare che il percettrone si stia addestrando correttamente, il metodo fit() stampa anche la perdita media a ogni epoca. Questa viene calcolata facendo la media della perdita su tutti gli esempi di addestramento in quell'epoca:
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))Infine, le formule per il calcolo dei gradienti sono le seguenti:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlI dati di addestramento di esempio (X_train) insieme alle etichette corrispondenti (y_train) sono memorizzati come array NumPy nel file utils.py. Inoltre, le istanze delle funzioni di attivazione sono anch'esse definite lì:
relu = ReLU()
sigmoid = Sigmoid()
Swipe to start coding
L'obiettivo è completare il processo di addestramento per un percettrone multistrato implementando la retropropagazione e aggiornando i parametri del modello.
Seguire attentamente questi passaggi:
- Implementare il metodo
backward()nella classeLayer:
- Calcolare i seguenti gradienti:
dz: derivata della funzione di perdita rispetto ai valori di pre-attivazione, utilizzando la derivata della funzione di attivazione;
d_weights: gradiente della perdita rispetto ai pesi, calcolato come prodotto scalare tradze il vettore di input trasposto;d_biases: gradiente della perdita rispetto ai bias, uguale adz;da_prev: gradiente della perdita rispetto alle attivazioni dello strato precedente, ottenuto moltiplicando la matrice dei pesi trasposta perdz.- Aggiornare pesi e bias utilizzando il learning rate.
- Completare il metodo
fit()nella classePerceptron:
- Calcolare l'output del modello chiamando il metodo
forward(); - Calcolare la perdita utilizzando la formula dell'entropia incrociata;
- Calcolare dan — la derivata della perdita rispetto alle attivazioni di output;
- Scorrere all'indietro attraverso gli strati, eseguendo la retropropagazione chiamando il metodo
backward()di ciascun layer.
- Verificare il comportamento dell'addestramento:
- Se tutto è implementato correttamente, la perdita dovrebbe diminuire costantemente a ogni epoca utilizzando un learning rate di
0.01.
Soluzione
Grazie per i tuoi commenti!
single