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 perceptrone 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 i pesi e i 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
Fantastico!
Completion tasso migliorato a 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 perceptrone 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 i pesi e i 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