Home > Fisica Generale > Statistica > Come funziona una rete neurale controllata [1à parte]

Come funziona una rete neurale controllata [1à parte]

29 Agosto 2010, ore 19:23

Abbiamo introdotto le reti neurali nel problema di attribution climatico in questo post. Vediamo ora il principio di funzionamento di questi modelli.

Iniziamo con qualche classificazione. Abbiamo parlato già di reti controllate e non ma da qui in avanti, salvo dove specificato, si parlerà soltanto della prima categoria, quindi per ipotesi partiremo conoscendo il set di dati da “ricostruire”.

Le layered feed forward network (reti stratificate “nutrite in avanti”) sono un ottimo modello per il fitting desiderato. All’inizio vennero chiamate percettroni e la caratteristica principale risiedeva nel fatto che ogni unità (o input) era collegata solamente con le unità dello strato subito più in alto.

 Nell’immagine in alto notiamo una rete a quattro strati neurali, due strati interni, cinque unità di input e una sola unità di output. In questo modo le unità o nodi interni non sono collegati all’esterno; essi costituiscono quindi la “mente pensante” e vengono definiti unità nascoste. Volendo stabilire quanti strati ha la rete, per convenzione non si conta lo strato di input bensì tutti gli altri (nascosti e output).

 Per rendere più comprensibile il tutto ragioneremo con un esempio e terremo come riferimento la figura precedente. Mettiamo che vogliamo studiare l’attribution tra pressione, intensità del vento, direzione del vento, copertura nuvolosa e altezza delle nubi rispetto alla temperatura al suolo di un dato sito per un anno esatto contando un valore medio per ogni giorno dell’anno.

 Per il giorno 1 inseriamo il primo valore di ogni parametro in ognuno dei neuroni di input. Quel che avviene a questo punto è la sommatoria pesata di queste variabili attraverso dei pesi inizializzati in maniera casuale. Il risultato di questa sommatoria viene sottoposto a una funzione detta di “attivazione”, la quale dipende dal particolare caso in esame e schematizza matematicamente l’accensione o meno del neurone (per rendere bene la similitudine col funzionamento del cervello potremmo pensare allo stato di riconoscimento o meno di una certa informazione).

 Nel nostro esempio quindi ci ritroveremo a ottenere per il primo giorno tre nuovi valori che rappresentano però l’input per il primo strato interno. Tre valori perchè la sommatoria viene effettuata per ogni neurone di questo strato, operazione che viene effettuata per il numero totale di strati (che secondo la nostra convenzione nel nostro caso sono 3).

(1)

Questa equazione rappresenta quanto detto. La lettera O è indicizzata con lindice i, la quale indica uno dei tre valori di output che abbiamo appena descritto per il primo strato nascosto; le xi sono gli input e le w sono i pesi. L’indice k rappresenta, invece, le variabili dello strato inferiore (l’input).

La stessa equazione verrà utilizzata per gestire lo strato superiore e ancora il risultato di output finale. Quale forma avrà la funzione totale? Una cosa del genere

(2)

 Disorientati? Ot è l’output finale, ovvero la “temperatura” che andrà confrontata con la temperatura reale da ricostruire. Notate gli estremi superiori delle sommatorie: 4,3,5, ovvero il numero dei neuroni di tutti gli strati (tranne l’output).

Rendere la rete intelligente

 Possiamo notare nell’equazione (2) che compaiono ben tre parametri, i cosiddetti pesi w. Abbiamo scritto prima che i pesi per il primo strato venivano inizializzati in maniera casuale; la stessa cosa avviene per gli altri strati. Possiamo ben comprendere, però, che la probabilità di indovinare i pesi per ricostruire la temperatura reale è molto ma molto bassa; inoltre, qualora la fortuna sia dalla vostra parte e ci riusciste la situazione cambierebbe nel momento in cui andreste a effettuare il calcolo per il secondo giorno. Quindi come trovare i pesi giusti?

 Viene in aiuto la back-propagation. Cerchiamo di capire come funziona questo metodo.

 Per constatare che effettivamente il modello neurale abbia delle buone performance bisogna ricorrere a una funzione che quantifichi il livello di errore commesso. La tipica (ma non l’unica) equazione utilizzata è lo scarto quadratico medio

(3)

 Come esponente indichiamo il pattern temporale (la sommatoria va effettuata su tutti i pattern temporali in realtà).

 Ogni volta che viene calcolato l’output della rete viene calcolato anche l’errore. Occorre di conseguenza minimizzarlo e per questo se ne effettua la derivata rispetto ai pesi.

 Grazie alla derivata si calcola quello che è il valore che fungerà da “aggiornamento” per i pesi del primo strato in alto. Ma questi primi aggiornamenti verranno utilizzati nella derivata che quantificherà gli aggiornamenti del secondo strato in alto, e così via fino all’ultimo strato in basso. In questo modo si effettua un aggiornamento dei pesi che parte dall’alto e finisce verso il basso o allo stesso modo da avanti in dietro determinando il nome “back propagation”, ovvero letteralmente propagazione indietro dell’errore.

 Una volta che vengono cambiati i pesi per tutti gli strati la rete effettua nuovamente il calcolo dell’output e si ricomincia daccapo finchè non si raggiunge un livello di errore computazionalmente soddisfacente.

 Nel nostro esempio abbiamo considerato soltanto il primo istante di tempo (il giorno 1). In realtà la procedura completa consta uno dei seguenti metodi:

  • si caricano i dati di tutti gli istanti (pattern), si calcola l’errore e si ricomincia daccapo;
  • si caricano i dati un giorno per volta, si calcola l’errore per quel giorno, si aggiornano i pesi, si raggiunge la performance e poi si ripete la procedura per il secondo giorno fino a quando si ricopre tutto l’arco temporale.

 L’espressione degli aggiornamenti è la seguente

(4)

 dove eta è il learning rate, il cosiddetto tasso di apprendimento.

In definitiva abbiamo visto il “kernel” del modello neurale: in analogia al principio di funzionamento del cervello umano, le informazioni vengono inserite (neuroni di input), vengono elaborate (neuroni nascosti), vengono restituite (neuroni di output), vengono reinserite rielaborando il processo finchè la rete non ha “imparato”, ovvero quando i pesi o connessioni tra neuroni sono forti e sono in grado da soli di “rappresentare” il fenomeno dalle cui informazioni ha appreso.

Nel prossimo articolo analizzeremo le modifiche da effettuare alla back-propagation per ottimizzarne le prestazioni.