Swappa : Uni / Sistemi Intelligenti - Appunti del 6 Ottobre
Creative Commons License

Torna alla pagina di Sistemi Intelligenti


 :: Sistemi Intelligenti - Appunti del 6 Ottobre ::

La lezione di oggi è stata tenuta - in via del tutto eccezionale - dal prof Ferrari.

Introduzione alle reti neurali

Le reti neurali sono un paradigma (strumento) matematico che mima il comportamento del cervello umano, considerato intelligente. Un dispositivo si definisce intelligente quando recepisce segnali dall'esterno e si adatta alla situazione per svolgere al meglio la propria missione. I concetti chiave sono quindi l' apprendimento e l' adattamento all'ambiente circostante una volta data una direttiva principale.
Un esempio illuminante: la vespa è un insetto premuroso, e vuole che le sue uova si schiudano in un ambiente sicuro e funzionale. Per questo motivo ispeziona accuratamente tutti i cunicoli della nursery, predispone le cibarie per la prole, e così via, ripetendo queste azioni in modo ossessivo e per niente adattivo tutte le volte che nota un minimo cambiamento nell'ambiente. Un comportamento che può sembrare intelligente (volto alla tutela delle uova) è dunque applicato in modo molto poco furbo: se la vespa nota mille volte di fila lo stesso cambiamento, partirà mille volte di fila con l'ispezione completa. E allora sei de coccio.

Reti neurali naturali

Le reti neurali naturali - o biologiche - sono il modello cui si ispirano quelle artificiali, e per questo motivo è importante capire come funzionano. Per ovvie ragioni semplificheremo al massimo i concetti.

Il sistema nervoso centrale è costituito da moltissime cellule chiamate neuroni collegate tra loro. Ciò che fanno è ascoltare i loro vicini, elaborare i messaggi e inviarli agli altri neuroni ad essi collegati, il tutto attraverso lo scambio di segnali elettrici.

Nella figura a destra uno schemino su come è fatto un neurone.
I dendriti sono praticamente delle periferiche di input, che attraverso le sinapsi alle loro estremità ricevono gli impulsi inviati dai neuroni vicini.
Il soma si occupa invece dell'elaborazione dei segnali, ovvero: somma, sogliatura (valutazione del superamento di un certo valore soglia), generazione di impulsi.
Questi ultimi sono trasmessi ai vicini attraverso l'assone del neurone.

La potenza di calcolo del cervello è legata non tanto alle performance dei singoli soma, e nemmeno al numero di neuroni (che per la cronaca sono stimati intorno ai 100 miliardi, 1011), ma piuttosto al numero di collegamenti. Questi dipendono dal numero totale di sinapsi, ovvero circa 1014.

Prima abbiamo parlato di adattamento, come è "implementato" biologicamente dal sistema nervoso? Cambiando la struttura della rete neurale attraverso modifiche di alcune caratteristiche del singolo neurone, in particolare intervenendo sulla plasticità sinaptica (che permette di modulare gli impulsi ricevuti, così da inibire o favorire un certo collegamento) e sulla permeabilità della membrana (che interviene sulla soglia di reazione del neurone).

Ribadiamo che stiamo semplificando al massimo, nella realtà i neuroni non sono isolati ma raccolti in gruppetti con funzionalità omogenee, i collegamenti avvengono con modalità leggermente diverse, gli impulsi non coinvolgono solo segnali elettrici ma anche reazioni chimiche, eccetera eccetera. Amen, sappiamo già abbastanza per elaborare una rete neurale artificiale più che soddisfacente, chi se ne frega se si tratta della semplificazione di un modello già semplificato!

Formalizzazioni di McCulloch e Pitts

La prima formalizzazione matematica del comportamento di un neurone è stata proposta da McCulloch e Pitts nei primi anni '40. Il loro modello si componeva di due elementi, uno che fa la somma dei segnali in ingresso ed uno che fa la sogliatura che genera la risposta. Ecco lo schema:

Breve legenda:

  1. ingressi, quindi altri neuroni dello stesso tipo. Vale 1 quando il collegamento è attivato, 0 quando non lo è
  2. pesi applicati agli ingressi, che rappresentano la plasticità sinaptica. Possono avere tre valori: +1 quando l'ingresso va premiato, -1 quando va inibito, 0 se il collegamento tra due neuroni non esiste
  3. somma pesata degli ingressi, chiamata anche potenziale di attivazione. Si tratta in pratica della sommatoria dei prodotti di ciascun segnale di ingresso per il peso del collegamento che lo trasmette
  4. sogliatura della somma in base a un certo valore θ
  5. uscita del neurone, sparato ai vicini. Se l'ingresso è maggiore della soglia allora la risposta sarà 1, altrimenti 0. In alcune varianti (che vedremo poi) si preferisce utilizzare come valori -1 e 1

Il modello matematico seguente è la funzione di attivazione del neurone artificiale, ed è una formalizzazione di quanto visto finora:

I tipi di funzioni calcolabili dipenderanno dal numero di neuroni, dalle loro connessioni e dai pesi dati agli ingressi. Questi ultimi sono dei veri e propri parametri, dunque si presenta il problema di scegliere il valore corretto da dargli. Una tecnica potrebbe essere fare un mega sistemone che tenga conto di tutti i neuroni, quindi tutti gli ingressi, tutte le uscite, tutti i pesi, insomma qualcosa di estremamente complesso; l'alternativa è farsi furbi e adottare degli stratagemmi, magari proprio gli stessi utilizzati dalle reti neurali naturali.

Esistono diverse varianti del modello di McCulloch e Pitts, che differiscono in particolare per la loro funzione di attivazione. Tra le principali alternative proposte alla funzione originale a gradino, citiamo ad esempio:

Applicazioni

Le reti neurali sono particolarmente potenti per tutti quei problemi non lineari per i quali si hanno a disposizione un gran numero di esempi di comportamento atteso.
Elenchiamo qualche applicazione concreta:

Rete di Hopfield

Il modello di rete che meglio realizza l'applicazione di memoria associativa è la rete di Hopfield. I neuroni sono completamente connessi tra loro, così che ognuno trasmetta (riceva) ogni singolo segnale a (da) tutti gli altri.

Ad ogni connessione sono assegnati due pesi, uno per ogni direzione di percorrenza. Il tutto è facilmente rappresentabile con una matrice.

Anche in questo caso il singolo neurone ha un comportamento a soglie, ma le risposte possono avere valore 1 o -1. Entra inoltre in gioco il fattore tempo, e di conseguenza il concetto di stato della rete.

La formalizzazione matematica della funzione di attivazione è:

Da un punto di vista temporale, possiamo possiamo dire che:

La configurazione della rete neurale prende il nome di addestramento, preferendo a un termine freddo e tecnico uno che mantenga la metafora biologica della materia. L'idea di fondo è sottoporre alla rete un insieme di esempi specifici, che si spera sarà poi in grado di generalizzare ad ogni situazione.
Vediamo in particolare l'apprendimento Hebbiano (dal nome dell'ideatore, Hebb), in cui le connessioni tra due neuroni vicini si rinforzano se essi danno risposte simili agli stessi stimoli, e si indeboliscono altrimenti. Ciò si traduce dicendo che se il comportamento di due neuroni è simile allora il peso della loro connessione aumenta. In formula: ∆wij = Si * Sj . E' facile notare che se i segni dei fattori son discordi la variazione sarà negativa, e viceversa.

Abbiamo iniziato il capitoletto dicendo che la rete di Hopfield riesce a simulare una memoria associativa. E' infatti verificabile che lo stato a cui eventualmente converge è molto simile (in toto o in parte) a quello con cui è stato configurato in partenza.

Reti feed-forward e reti ricorrenti

Nelle reti feed-forward la rete neurale è organizzata in strati detti layer, e l'informazione passa da uno all'altro secondo un'unica direzione. Questa caratteristica è senz'altro una forzatura che non trova corrispondenze biologiche, ma rende la rete molto più semplice da implementare garantendo al tempo stesso la capacità di risolvere la totalità dei problemi. Attenzione però: il fatto che sia più semplice da realizzare non implica che sia poco costosa!

Dallo schema accanto possiamo notare che ogni neurone di un layer è connesso ad ogni neurone dello strato successivo, ma per eliminare un collegamento basta assegnargli peso 0. A proposito dei pesi, anche in questo caso la loro rappresentazione diventa molto più semplice con le matrici.
Se ad una feed-forward aggiungiamo le retroazioni otteniamo una rete ricorrente, un tipo di modello particolarmente adatto per le serie temporali, e quindi per cercare di fare buone previsioni basandoci sul passato.

Lo Z-1 in basso nello schema è il ritardatore, nel cui apice viene indicato il numero di passi che saranno ritardati.

Reti competitive

L'ultima famiglia di reti neurali che vedremo oggi sono le reti competitive, così dette perché i loro elementi costitutivi sono messi tra loro in competizione durante l'apprendimento. Tipicamente non sono usate per calcolare funzioni, ma per implementare l'apprendimento non supervisionato.

Il nuovo concetto da introdurre per capirle è quello di spazio delle caratteristiche o ufficio, ovvero lo spazio in cui sono definiti gli esempi e per cui vale la proprietà che più due elementi sono simili e minore sarà la distanza tra le loro coordinate. Ciò che andrà fatto è configurare la rete in modo che la densità dei neuroni collocati in tale spazo sia proporzionale alla probabilità di occorrenza degli esempi.
Durante l'addestramento il neurone può - e deve - cambiare la sua posizione nello spazio delle caratteristiche, cercando di minimizzare la sua distanza dagli esempi competendo con tutti gli altri per accaparrarsi il posto migliore.

Un esempio di rete competitiva è la Self Organising Maps (SOM), ovvero "mappe auto-adattanti". Il nome è dovuto al fatto che i neuroni non solo competono per la loro posizione nello spazio delle caratteristiche, ma cercano anche di mantenere una struttura propria tra loro, tipicamente a maglia.

Strategie di apprendimento

Concludiamo con una carrelata sulle possibili strategie di apprendimento:


Torna alla pagina di Sistemi Intelligenti

(Printable View of http://www.swappa.it/wiki/Uni/SI-6ottobre)