Cosa è la Back Propagation dell’errore
La back Propagation dell’errore è una tecnica che consente la riduzione dell’errore che compie la rete neurale nel processo di apprendimento.
Se si considera che la fase di apprendimento di una rete neurale si traduce in sostanza nel ritrovare in una funzione complessa il valore minino o quanto meno uno dei minimi migliori, e se per per farlo non si utilizza un’approccio analitico, bensì iterativo, allora si comprenderà che un metodo semplice per risolvere il problema è quello di muoversi a piccoli passi sulla superficie della funzione (Discesa del gradiente) e via via ricalcolare i pesi della rete neurale partendo da quelli già noti e dall’ultimo errore calcolato per ridurre lo stesso. ( Back Propagation). E’ un pò come andare alla ricerca in un’area montuosa, dell’area di territorio con altitudine più bassa, senza sapere dove sia di fatti il posto, pertanto un metodo è quello di muoversi a piccoli passi in tutte le direzioni e verificare il livello di altitudine, ovviamente evitando di andare in salita 🙂
Il meccanismo di addestramento, inizia con un’operazione di inizializzazione casuale dei pesi, ed itera passando le coppie di input-output appartenenti ad un prefissato insieme di dati al modello neurale, fin quando, grazie ad operazioni di aggiornamento dei pesi, non si raggiunge il minimo (assoluto) della funzione costo, che esprime la misura della distanza che intercorre tra gli output desiderati e i corrispondenti output che il modello neurale calcola, ovvero l’errore.
Per comprendere meglio cosa succede vi consiglio di dare un occhio a questo video su youtube che io considero veramente esaustivo, perché è possibile farsi anche un modello mentale di quello che succede; al minuto 10.13, potrete anche veder come funzione la discesa del gradiente relativamente al calcolo del minimo in modo interattivo.
Per avere invece una idea un pò più analitica di quello che succede durante la fase di addestramento e cosa sia la back propagation, faremo appello ancora una volta al nostro modello semplificato di neurone ad un solo ingresso ed una sola uscita:
la cui funzione di attivazione è una sigmoide. (per chi è a digiuno su questi temi può dare un occhio a dei miei vecchi articoli)
In tal caso, la funzione di attivazione interna (A) è:
A = x*w + b
mentre la Y o h(x)
In tal caso, l’algoritmo di back propagation dell’errore lavorerà secondo il seguente approccio:
In pratica, partendo da valori casuali di w e b si fa un test utilizzando i dati di ingresso il cui valore di uscita è noto; si calcola il valore dell’errore come differenza tra il valore di uscita noto e quello ottenuto, ed il delta y come moltiplicazione tra il valore dell’errore e la derivata di Y, che, nel nostro caso, essendo una sigmoide, è proprio Y*(1-Y) (come ricorderete, avevo anticipato che sarebbe ritornata utile la sigmoide per semplificare). A questo punto, si calcolano, semplicemente, w e b applicando la formula di cui sopra.
Il valore di epsilon, chiamato fattore di apprendimento, è a nostra scelta, ma sarà opportuno non assegnare ad esso valori troppo piccoli perché, altrimenti, si rischierebbe di non raggiungere la convergenza ottimale della rete; assegnando, altrimenti, valori troppo grandi aumenterebbe la velocità della fase di addestramento, come anche la possibilità di errori e di forti oscillazioni. I valori di epsilon dovranno essere, comunque, sempre compresi tra 0 e 1.
Per concludere, su reti neurali complesse a più livelli, non può essere fatto lo stesso ragionamento del caso del singolo neurone, perché sui livelli intermedi della rete (i livelli nascosti) non è noto a priori un valore di riferimento atteso noto, in tal caso per calcolare i vari pesi sui neuroni interni, si procede propagando indietro l’errore dell’uscita (back propagation) come se fosse il valore noto atteso su cui sarà possibile calcolare il nuovo errore.
Tutto ciò si ridurrà alle seguenti semplici formule:
La differenza sta di fatto che mentre in uscita l’errore viene calcolato come distanza tra il valore atteso e quello calcolato, per i neuroni interni viene definito come :
per il resto la procedura è identica al caso del singolo neurone.
Sono amante della tecnologia e delle tante sfumature del mondo IT, ho partecipato, sin dai primi anni di università ad importanti progetti in ambito Internet proseguendo, negli anni, allo startup, sviluppo e direzione di diverse aziende; Nei primi anni di carriera ho lavorato come consulente nel mondo dell’IT italiano, partecipando attivamente a progetti nazionali ed internazionali per realtà quali Ericsson, Telecom, Tin.it, Accenture, Tiscali, CNR. Dal 2010 mi occupo di startup mediante una delle mie società techintouch S.r.l che grazie alla collaborazione con la Digital Magics SpA, di cui sono Partner la Campania, mi occupo di supportare ed accelerare aziende del territorio .
Attualmente ricopro le cariche di :
– CTO MareGroup
– CTO Innoida
– Co-CEO in Techintouch s.r.l.
– Board member in StepFund GP SA
Manager ed imprenditore dal 2000 sono stato,
CEO e founder di Eclettica S.r.l. , Società specializzata in sviluppo software e System Integration
Partner per la Campania di Digital Magics S.p.A.
CTO e co-founder di Nexsoft S.p.A, società specializzata nella Consulenza di Servizi in ambito Informatico e sviluppo di soluzioni di System Integration, CTO della ITsys S.r.l. Società specializzata nella gestione di sistemi IT per la quale ho partecipato attivamente alla fase di startup.
Sognatore da sempre, curioso di novità ed alla ricerca di “nuovi mondi da esplorare“.
Comments