Sfida: Addestramento del Percettrone
Prima di procedere con l'addestramento del percettrone, è importante ricordare che utilizza la funzione di perdita di 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, anche le istanze delle funzioni di attivazione sono definite lì:
relu = ReLU()
sigmoid = Sigmoid()
Swipe to start coding
- Calcolare i seguenti gradienti:
dz,d_weights,d_biaseseda_prevnel metodobackward()della classeLayer. - Calcolare l'
outputdel modello nel metodofit()della classePerceptron. - Calcolare
da(dan) prima del ciclo, che rappresenta il gradiente della funzione di perdita rispetto alle attivazioni di output. - Calcolare
daed eseguire la retropropagazione nel ciclo chiamando il metodo appropriato per ciascuno degli strati.
Se l'addestramento è stato implementato correttamente, dato il learning rate di 0.01, la perdita dovrebbe diminuire costantemente a ogni epoca.
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 di 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, anche le istanze delle funzioni di attivazione sono definite lì:
relu = ReLU()
sigmoid = Sigmoid()
Swipe to start coding
- Calcolare i seguenti gradienti:
dz,d_weights,d_biaseseda_prevnel metodobackward()della classeLayer. - Calcolare l'
outputdel modello nel metodofit()della classePerceptron. - Calcolare
da(dan) prima del ciclo, che rappresenta il gradiente della funzione di perdita rispetto alle attivazioni di output. - Calcolare
daed eseguire la retropropagazione nel ciclo chiamando il metodo appropriato per ciascuno degli strati.
Se l'addestramento è stato implementato correttamente, dato il learning rate di 0.01, la perdita dovrebbe diminuire costantemente a ogni epoca.
Soluzione
Grazie per i tuoi commenti!
single