A partire dal livello finale, un passaggio "all'indietro" differenzia la funzione di perdita per calcolare in che modo ogni singolo parametro della rete contribuisce all'errore complessivo per un singolo input.
Tornando al nostro esempio precedente del modello classificatore, inizieremmo con i 5 neuroni dello strato finale, che chiameremo livello L. Il valore softmax di ciascun neurone di output rappresenta la probabilità, su 1, che un input appartenga alla loro categoria. In un modello perfettamente addestrato, il neurone che rappresenta la classificazione corretta avrebbe un valore di output vicino a 1 e gli altri neuroni avrebbero un valore di output vicino allo 0.
Per il momento ci concentreremo sull'unità di output che rappresenta la previsione corretta, che chiameremo Lc. La funzione di attivazione di Lc è una funzione composita, contenente le numerose funzioni di attivazione annidate dell'intera rete neurale dal livello di input a quello di output. Ridurre al minimo la funzione di perdita comporterebbe l'esecuzione in tutta la rete di regolazioni che portino l'uscita della funzione di attivazione di Lc più vicina a 1.
Per fare ciò, avremo bisogno di sapere in che modo qualsiasi modifica nei livelli precedenti cambierà l'output di Lc. In altre parole, avremo bisogno di trovare le derivate parziali della funzione di attivazione di Lc.
L'output della funzione di attivazione di Lc dipende dai contributi che riceve dai neuroni del penultimo strato, che chiameremo strato L-1. Un modo per modificare l'output di Lc è modificare i pesi tra i neuroni in L-1 e Lc. Calcolando la derivata parziale di ogni peso L-1 rispetto agli altri pesi, possiamo vedere come l'aumento o la diminuzione di ognuno di essi porterà l'output di Lc più vicino (o più lontano) a 1.
Ma questo non è l'unico modo per modificare l'output di Lc. I contributi che Lc riceve dai neuroni L-1 sono determinati non solo dai pesi applicati ai valori di output di L-1, ma dai valori di output effettivi (pre-peso) stessi. I valori di output dei neuroni L-1 , a loro volta, sono influenzati dai pesi applicati agli input che ricevono da L-2. Quindi possiamo differenziare le funzioni di attivazione in L-1 per trovare le derivate parziali dei pesi applicati ai contributi di L-2. Queste derivate parziali ci mostrano come qualsiasi variazione di un peso L-2 influenzerà gli output in L-1, che successivamente influenzeranno il valore di output di Lc e quindi la funzione di perdita.
Con la stessa logica, potremmo anche influenzare i valori di output che i neuroni L-1 ricevono dai neuroni L-2 regolando i contributi che i neuroni L-2 ricevono dai neuroni in L-3. Quindi troviamo le derivate parziali in L-3, e così via, ripetendo ricorsivamente questo processo fino a raggiungere lo strato di input. Quando abbiamo finito, abbiamo il gradiente della funzione di perdita: un vettore della sua derivata parziale per ogni parametro di peso e bias della rete.
Ora abbiamo completato un passaggio in avanti e un passaggio all'indietro per un singolo esempio di addestramento. Tuttavia, il nostro obiettivo è addestrare il modello affinché si generalizzi bene a nuovi input. A tale scopo, è necessario eseguire l'addestramento su un numero elevato di campioni che riflettano la diversità e la gamma di input su cui il modello avrà il compito di effettuare previsioni dopo l'addestramento.