Cognitiva: auto organizzazione dei neuroni
Reti neurali non supervisionate
All'inizio degli anni 70 i ricercatori si interrogavano su come il cervello potesse auto-organizzare i propri neuroni per cominciare
a percepire gli stimoli esterni e trasformarli in informazioni
L'auto-organizzazione è il processo preliminare all'apprendimento supervisionato: auto-organizzazione significa apprendere dalla tabula rasa
Fukushima propose un algoritmo che divenne la base dell'odierno deep learning
- Si parte da un modello multi strato (multi layer) di neuroni
- Ogni strato contine sia neuroni eccitatori che neuroni inibitori
- I neuroni eccitatori di uno strato trasmettono solo allo strato successivo (bottom-top)
- La connessione tra i neuroni di due strati è rinforzata solo se il neurone post sinaptico risulta essere vincente nella sua area di vicinato, cioè è il più eccitato tra i neuroni che gli sono vicini
- Lo strato base (U_0) viene eccitato con stimoli esterni al sistema (per esempio i raggi luminosi che stimolano i neuroni della retina) e l'eccitazione trasmessa in avanti
- Si stimola diverse volte senza bisogno di correggere e la rete si auto organizza a riconoscere gli stimoli
Sembra complicato? Lo è ancora di più di quello che sembra. Per fortuna operativamente basta un terminale
Linux e una tastiera! Il mouse non serve
Dei sistemi auto organizzati si parla molto meno che di quelli ad appredimento supervisionato, il motivo è che sono
più difficili e quindi c'è meno mercato.
Una buona introduzione completa di codice e matematica si trova sul libro
Il cognitrone di Fukushima
Il congnitrone di Fukushima
Kunihiko Fukushima è uno scienziato giapponese che nel 1975 dimostrò come una rete neurale di quattro strati potesse auto organizzarsi fino a reagire in modo prevedibile agli stimoli esterni, anche in assenza di addestramento supervisionato
Apprendimento spontaneo
Diversamente dalle
reti supervisionate, il cognitrone non ha bisogno di dati etichettati (label), ma solo di essere sottoposto a stimoli che gli permettano di auto-organizzarsi. La ripetizione di un determinato stimolo per più volte, induce il cognitrone ad associare quello stimolo alla attivazione di una specifica struttura di neuroni nei livelli alti (corteccia) della sua rete. In questo senso si parla di
concettualizzazione
Imparare dalle basi
Un esempio semplice è quello di stimolare il cognitrone con le cifre decimali
Nella figura che segue è rappresentato come lo stimolo della cira
4, presentato sullo strato U_0 (che corrisponde alla retina dell'occhio) viene rappresentato in termini di eccitazione nei neuroni della corteccia
Auto-organizzazione del cognitrone
In questo pacchetto trovi tutto il necessario per creare i quattro strati di neuroni del cognitrone e sottoporlo alla vista delle cifre 0,1,2,3,4
Contiene due programmi da eseguire al terminale per stimolare e testare l'auto organizzazione del cognitrone. Nella figura qui sotto, ./cognitiva_xcgn è usato per attivare i neuroni dello strato U_3 (corteccia) e verificare l'immagine corrispondendte sullo strato U_0 (retina)
Fase 1: prepara l'ambiente
- Scarica cognitiva cognitiva.tar.gz
- Estrai l'archivio: tar -xvf cognitiva.tar.gz
- Cambia directory: cd cognitiva
Cognitiva versione 2.0 (reti neurali supervisionate e auto organizzate)
Fase 2: auto-organizzazione
Dalla directory cognitiva lancia l'eseguibile ./cognitiva_acgn che sottoporrà il cognitrone alla vista delle cifre 0,1,2,3,4 per il numero di epoche che stabilisci da linea di comando (per esempio 100). Il cognitrone salva lo stato delle 4 reti neurali in 4 file che sono nominati <nome_file>_0.w, <nome_file>_1.w, <nome_file>_2.w, <nome_file>_3.w. Quando si lancia l'eseguibile bisogna perciò passare <nome_file> dalla linea di comando. Sempre dalla linea di comando si deve passare il numero di epoche e opzionalmente i millisecondi di attesa tra un ciclo e l'altro, giusto per capire cosa succede. Ecco una possibile esecuzione:
./cognitiva_acgn strato 100
il risultato al terminale è il seguente
Nella figura qui sopra, si vede lo stato di attivazione dei neuroni
eccitatori dopo 100 epoche di addestramento e in particolare vediamo l'eccitazione in conseguenza dell'attivazione sullo strato U_0 (retina) del numero 4
A questo punto il cognitrone è auto-organizzato e dentro directory sono presenti i quattro nuovi file dove sono memorizzati i pesi delle connessioni neurali
Fase 3: Stimolazione
Usando il secondo eseguibile cognitiva_xcgn realizziamo in virtuale una importantissima pratica medica: il cortical stimulation mapping con cui stabiliamo in quali neuroni sono memorizzate le cifre apprese dal cognitrone
Dal terminale lanciamo il secondo eseguibile:
./cognitiva_xcgn strato
informandolo che vogliamo caricare i quattro file che hanno radice
strato. Il risultato è riportato nella figura sotto dove abbiamo una visione sinottica dello strato U_0 (corteccia) e dello strato U_3 (retina)
Usando le freccie della tastiera, spostiamo il cursore dove vogliamo (ogni casella rappresenta un neurone) e con i tasti + e - aumentiamo o diminuiamo il valore di eccitazione del neurone sottostante al cursore. Questo è appunto
analogo al mapping corticale. Quando abbiamo impostato i neuroni al valore desiderato clicchiamo
invio e vediamo sul secondo quandrante il risultato della stimolazione.
Si può provare a riprodurre lo schema U_3 di una specifica cifra per vedere se la cifra viene ricomposta, oppure selezionare solo i neuroni che sembrano più ecciti e provare a vedere se sono sufficienti ad evocare la cifra ad essi collegata.
Una volta individuati i neuroni che attivano una cifra, diciamo lo 0, individuiamo quelli di un'altra cifra, per esempio il 2, ed attiviamoli insieme. Cosa succede?
Conclusioni
Il modello auto-organizzativo del cognitrone, qui illustrato, è molto più complesso del modello feed-forward delle reti
neurali supervisionate. Comprenderlo in profondità richiede uno studio molto attento di tutte le sue equazioni.
I due programmi
_xcgn e
_acgn del pacchetto
cognitiva, qui presentati, sono basati sulle equazioni originali scritte da Fukushima e permettono un approccio TOP → DOWN all'argomento, permettendo di focalizzare l'attenzione prima sul risultato e sull'analogia biologica poi sui dettagli algoritmici. Essi costituiscono un esempio concreto di rete neurale auto organizzata, che possono essere usati per meglio comprendere questo argomento in sé piuttosto astratto
The tools are Open Source code distributed under GNU-GPL license. The tools are developed in the Scuola Sisini using GNU-gcc and GNU-Emacs editor only. Please, visit the Free Software Foundation and GNU project for more information about that.