Home Machine Learning Coding Games Linux Informatica quantistica Melody Craft Farm in Mind
I prodotti cognitiva sono usati da Scuola_Sisini come tecnologia base per la formazione aziendale e individuale

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

Cognitiva versione 2.0 (reti neurali supervisionate e auto organizzate)
Scarica GitHubCodice su GitHib

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

Licenza e responsabilità

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.