Reti Neurali Artificiali
La scienza che studia le reti neurali nasce dal tentativo di emulare artificialmente
il funzionamento di una struttura nervosa biologica - il cervello - cercando
di riprodurne i comportamenti più elementari, sia per capirne con più
esattezza i meccanismi interni, sia per poterne applicare i principi al fine
di trovare soluzioni alternative a problemi della vita reale.
Storia ——————— ———
— — -- -
Fin dai primi decenni del XX secolo diversi scienziati hanno formulato teorie riguardo il funzionamento del cervello, e di come poterne emulare i comportamenti attraverso delle macchine artificiali. Solo negli ultimi decenni però, con l'avvento di computer sempre più potenti e sempre meno costosi, le reti neurali hanno ricevuto un rinnovato interesse da parte della comunità scientifica, avendo finalmente a disposizione gli strumenti per poter realizzare in pratica quello che per anni era stato rappresentato solo da teorie astratte e da complicate formule matematiche.
La
vera e definitiva svolta avvenne nel 1986, quando fu pubblicato da parte di
tre ricercatori americani il libro "PDP - Parallel Distributed Processing"
- che ora è considerato una delle pietre miliari della moderna teoria
sulle reti neurali - dove gli autori illustravano un nuovo algoritmo - l'algoritmo
di back-propagation - che rappresentava la soluzione, fino ad allora non ancora
trovata, per l'addestramento di reti neurali a più strati.
Da quella pubblicazione moltissime altre interessanti teorie si sono succedute,
e molto software è stato scritto per verificarne la fondatezza, ed oggi
possiamo sicuramente affermare di essere entrati in una nuova epoca, nella quale
le reti neurali artificiali hanno raggiunto un livello di maturità tale
da poter essere utilizzate con successo per risolvere problemi in molti campi
della vita reale.
Funzionamento
e principi
——————— ———
— — -- -
Come già accennato precedentemente, le reti neurali artificiali hanno lo scopo di emulare il comportamento delle strutture neurali biologiche. Uno dei principali aspetti di tale comportamento è sicuramente rappresentato dalla capacità di apprendere un determinato compito attraverso l'addestramento, e di riuscire poi a trovare la soluzione corretta laddove si presentano problemi simili a quelli visti durante l'apprendimento.
Una
delle più importanti capacità di una rete neurale, pertanto, è
quella di riuscire ad imparare il giusto accoppiamento tra i parametri di input
e le corrispondenti risposte desiderate che caratterizzano un certo problema.
Questo risultato si ottiene attraverso l'addestramento, che di solito avviene
mostrando alla rete neurale diversi esempi di un problema, 'etichettando' ognuno
di essi con la risposta esatta desiderata (come per esempio la foto di un animale
ed il nome ad esso associato).
Una rete neurale verrà considerata 'addestrata' solo quando sarà
in grado di ottenere risposte corrette ogni qual volta viene presentato in ingresso
un esempio uguale o simile a quelli precedentemente visti.
L'idea che sta alla base della teoria delle reti neurali artificiali è che per emulare artificialmente ed in modo efficace una rete neurale, si deve costruire del software che replichi più o meno una struttura simile a quella dei tessuti neurali biologici.
Vediamo allora come tale struttura è costituita.
Una rete neurale è composta da elementi basilari di elaborazione chiamati neuroni, connessi tra di loro tramite collegamenti, detti anche pesi o sinapsi, in modo da formare uno schema assimilabile ad un semplicissimo tessuto nervoso:
I diversi neuroni sono di solito organizzati in Layer, o strati successivi, e per questo, in tali casi, si parla di architetture neurali a più strati.
Come
già detto precedentemente, una rete neurale è in grado di imparare
a partire dagli esempi che gli vengono proposti.
Normalmente il primo layer, denominato layer di input, viene usato per immettere
le variabili di ingresso del problema che si vuole risolvere; queste variabili
vengono quindi elaborate dai vari strati intermedi della rete (hidden layers)
fino a che raggiungono l'ultimo layer, o layer di output, dal quale si ottiene
pertanto la risposta desiderata.
Naturalmente, per poter ottenere risposte il più possibile esatte e coerenti
da una rete neurale, questa va addestrata con una serie di esempi la cui risposta
desiderata è già nota.
L'addestramento avviene misurando ad ogni ciclo l'errore commesso, espresso
come funzione della distanza tra il valore desiderato e quello restituito dalla
rete; l'errore viene reimmesso nella rete al contrario (partendo dai neuroni
di uscita) e 'retropropagato' all'indietro fino ai neuroni di ingresso, modificando
lungo il percorso i valori delle connessioni secondo precise formule matematiche.
Questo processo iterativo viene ripetuto per centinaia o migliaia di volte,
fino a trovare l'insieme dei valori delle sinapsi (o forza delle connessioni)
che riescono a risolvere in modo adeguato il problema; quei valori, cioè,
che riescono a minimizzare l'errore compiuto dalla rete.
In base a ciò, si può affermare che i valori delle varie sinapsi
rappresentano la 'memoria' di una rete neurale addestrata a risolvere uno specifico
problema.
Il processo descritto viene comunemente chiamato algoritmo di back-propagation,
proprio a causa della 'retro-propagazione' dell'errore utilizzata per modificare
i pesi delle sinapsi.
L'effetto
che si ottiene da un simile addestramento è sicuramente molto interessante,
perché emergono le seguenti utili caratteristiche collaterali, che rendono
'unico' il modo di funzionare di queste incredibili strutture create dalla natura:
1. Categorizzazione
Una
rete neurale riesce ad imparare a risolvere un problema semplicemente 'estraendo'
le caratteristiche peculiari dagli esempi che le vengono proposti, effettuando
quindi una vera e propria categorizzazione delle varie situazioni presentate
in ingresso.
2. Generalizzazione
Grazie alla capacità di generalizzare, le reti neurali sono in grado,
una volta addestrate su di un problema specifico, di risolvere con un alto grado
di esattezza situazioni simili, anche se non perfettamente uguali a quelle viste
durante l'addestramento.
3. Robustezza
Le reti neurali sono in grado di dare risposte corrette anche in presenza di
situazioni 'rumorose', o di parametri di input incompleti.