NEURBOOK_HOME
INTRODUZIONE
CAPITOLO 1 * ESEMPIO DI MEMORIA ASSOCIATIVA
CAPITOLO 2 * RETI NEURALI ERROR BACK PROPAGATION
CAPITOLO 3 * APPLICAZIONI PRATICHE DI UNA RETE NEURALE EBP
CAPITOLO 4 * RETI NEURALI AUTOORGANIZZANTI
CAPITOLO 5 * FUZZY LOGIC LA TEORIA DEL RAGIONAMENTO SFUMATO
CAPITOLO 6 * NEURFUZZ 1.0
CAPITOLO 7 * GUIDA AL FLOPPY DISK
CAPITOLO 8 * GUIDA AL SOFTWARE
BIBLIOGRAFIA

INTRODUZIONE

IL CERVELLO UMANO

Il cervello umano è sicuramente la struttura più complessa dell universo e può essere considerato come una enorme rete neurale. Circa 100 miliardi di neuroni costituiscono i nodi di tale rete. Ciascun neurone è collegato a decine di migliaia di altri neuroni ed esistono pertanto milioni di miliardi di connessioni. Un neurone biologico è composto da un corpo cellulare o "soma" dal quale partono molti collegamenti(dendriti)che ricevono segnali da altri neuroni, e un collegamento di uscita(assone) con il quale il neurone trasmette informazioni ad altri neuroni(attraverso i loro dendriti)(fig.1). Ogni neurone ha una soglia di attivazione caratteristica: se i segnali provenienti da altri neuroni la superano, il neurone si attiva e trasmette un segnale elettrico sull assone che arriva ad altri neuroni. Fra assone e dendrite esiste una sottile intercapedine detta "sinapsi" che permette la trasmissione del segnale attraverso un processo elettrochimico. Lo spessore della sinapsi può variare nel tempo rafforzando o indebolendo il collegamento tra due neuroni. Il contenuto informativo momentaneo del cervello è rappresentato dall insieme dei valori di attivazione di tutti i neuroni, mentre la memoria è rappresentata dai valori di collegamento(più o meno forte) di tutte le sinapsi. Due sono le caratteristiche fondamentali del cervello: la plasmabilità e la scomposizione dell informazione in informazioni elementari contenute in ogni singolo neurone. La plasmabilità deriva dal fatto che le sinapsi possono modificarsi nel tempo interagendo con segnali dal mondo esterno. Non è assolutamente ancora chiaro il meccanismo di apprendimento del cervello, ma è chiaro che il rafforzamento e l'indebolimento dei collegamenti sinaptici costitusce la memorizzazione di una informazione.

RETI NEURALI ARTIFICIALI

Le reti neurali sono lo stato dell arte nel trattamento dell informazione. Sono basate su principi completamente differenti da quelli normalmente utilizzati nell AI classica per il trattamento dell informazione e il supporto alla decisione. In effetti, in una rete neurale le informazioni sono scomposte in informazioni "elementari" contenute all interno di ogni singolo neurone. Una rete neurale può essere vista come un sistema in grado di dare una risposta ad una domanda o fornire un output in risposta ad un input. La combinazione in/out ovvero la funzione di trasferimento della rete non viene programmata ,ma viene ottenuta attraverso un processo di "addestramento" con dati empirici. In pratica la rete apprende la funzione che lega l output con l input attraverso la presentazione di esempi corretti di coppie input/output. Effettivamente, per ogni input presentato alla rete, nel processo di apprendi mento, la rete fornisce un output che si discosta di una certa quantità DELTA dall output desiderato: l' algoritmo di addestramento modifica alcuni parametri della rete nella direzione desiderata(fig.1). Ogni volta che viene presentato un esempio, quindi, l'algoritmo avvicina un poco i parametri della rete ai valori ottimali per la soluzione dell esempio: in questo modo l'algoritmo cerca di "accontentare " tutti gli esempi un pò per volta. I parametri di cui si parla sono essenzialmente i pesi o fattori di collagamento tra i neuroni che compongono la rete. Una rete neurale è infatti composta da un certo numero di neuroni collegati tra loro da collegamenti "pesati" , proprio come lo sono i neuroni del cervello umano. Ciò che ha portato alla realizzazione delle reti neurali è stato il tentativo di realizzare delle simulazioni delle strutture nervose del tessuto cerebrale. Tale obiettivo è, però, sfociato nella identificazione di modelli matematici che non hanno molte affinità con i modelli biologici. Un neurone del tessuto cerebrale può essere visto come una cella (corpo cellulare) che ha molti ingressi (dendriti) e una sola uscita(assone): una rete neurale biologica è composta da molti neuroni dove gli assoni di ogni neurone vanno a collegarsi ai dendriti di altri neuroni tramite un collegamento (la cui forza varia chimicamente in fase di apprendimento e costituisce una "microinformazione") che viene chiamato sinapsi. La fig.2 è la rappresentazione formale di un neurone biologico: come si può notare il neurone ha una sua interna funzione di trasferimento. Non sono ancora chiari i meccanismi di apprendimento del cervello degli esseri viventi e le reti neurali artificiali sono attualmente solo un sistema di trattamento dell informazione in modo distribuito con algoritmi di apprendimento dedicati. Bisogna sottolineare però che le reti neurali hanno caratteristiche sorprendentemente simili a quelle del cervello umano, come capacità di apprendere, scarsa precisione associata ad alta elasticità di interpretazione dell input e quindi capacità di estarpolazione. Quella che abbiamo chiamato elasticità di interpretazione dell input viene comunemente chiamata "resistenza al rumore" o "capacità di comprendere dati rumorosi": un sistema programmato ha bisogno di un input ben preciso per dare una risposta corretta, mentre una rete neurale è in grado di dare una risposta abbastanza corretta ad un input parziale o impreciso rispetto a quelli utilizzati negli esempi di addestramento.




TIPI DI RETI NEURALI

Esistono molti tipi di reti neurali che sono differenziati sulla base di alcune caratteristiche fondamentali:

-tipo di utilizzo

-tipo di apprendimento (supervisionato/non supervisionato)

-algoritmo di apprendimento

-architettura dei collegamenti

La divisione fondamentale è quella relativa al tipo di apprendimento che può essere supervisionato o non supervisionato: nel primo caso si addestra la rete con degli esempi che contengono un input e l 'output associato desiderato, mentre nel secondo caso la rete deve essere in grado di estrarre delle informazioni di similitudine tra i dati forniti in input (senza associazioni con output desiderati) al fine di classificarli in categorie. Dal punto di vista del tipo di utilizzo possiamo distinguere tre categorie basilari:

-memorie associative

-simulatori di funzioni matematiche complesse(e non conosciute)

-classificatori

MEMORIE ASSOCIATIVE: possono apprendere associazioni tra patterns(insieme complesso di dati come l insieme dei pixels di una immagine) in modo che la presentazione di un pattern A dia come output il pattern B anche se il pattern A è impreciso o parziale(resistenza al rumore). Esiste anche la possibilità di utilizzare la memoria associativa per fornire in uscita il pattern completo in risposta ad un pattern parziale in input.

SIMULATORI DI FUNZIONI MATEMATICHE: sono in grado di comprendere la funzione che lega output con input in base a degli esempi forniti in fase di apprendimento. Dopo la fase di apprendimento, la rete è in grado di fornire un output in risposta ad un input anche diverso da quelli usati negli esempi di addestramento. Ne consegue una capacità della rete di interpolazione ed estrapolazione sui dati del training set. Tale capacità è facilmente verificabile addestrando una rete con una sequenza di dati input/output proveniente da una funzione nota e risulta, invece, utile proprio per il trattamento e la previsione di fenomeni di cui non sia chiaro matematicamente il legame tra input e output.In ogni caso la rete si comporta come una "black box", poichè non svela in termini leggibili la funzione di trasferimento che è contenuta al suo interno. Di questo tipo fa parte la rete a retropropagazione dell errore o error back propagation che è quella attualmente più utilizzata per efficacia e flessibilità.

CLASSIFICATORI: con essi è possibile classificare dei dati in specifiche categorie in base a caratteristiche di similitudine. In questo ultimo tipo di rete esiste il concetto di apprendimento non supervisionato o "autoorganizzante", nel quale i dati di input vengono distribuiti su categorie non predefinite .

L algoritmo di apprendimento di una rete neurale dipende essenzialmente dal tipo di utilizzo della stessa , così come l architettura dei collegamenti. Le reti multistrato prevedono ad esempio l algoritmo a retropropagazione dell errore o sono addestrate tramite algoritmi genetici. I classificatori normalmente derivano dall architettura delle mappe autorganizzanti di Kohnen. Esistono diverse regole di base per l'apprendimento ma sono sempre in fase di studio nuovi paradigmi: quello delle reti neurali è un campo in cui c è ancora molto da inventare e da capire. Questo volume non vuole certamente coprire l'intero panorama delle problematiche, delle applicazioni e dei paradigmi delle reti neurali ma vuole avvicinare il lettore ad una promettente tecnologia analizzando i paradigmi di rete più utilizzati con il supporto di simulazioni software contenute in versione eseguibile su dischetto e listati o suggerimenti per i programmatori che vogliano cimentarsi nella realizzazione di simulazioni proprie.




CARATTERISTICHE GENERICHE
DI UNA RETE NEURALE

1) DEVE ESSERE COMPOSTA DA UN CERTO NUMERO DI NEURONI

2)OGNI NEURONE DEVE AVERE INGRESSI E USCITE E UNA PRECISA FUNZIONE DI TRASFERIMENTO

3)GLI INGRESSI E LE USCITE DEI NEURONI DEVONO ESSERE COLLEGATI TRAMITE "COLLEGAMENTI SINAPTICI" MODIFICABILI IN FASE DI ADDESTRAMENTO

4)DEVE ESISTERE UNA PRECISA LEGGE DI APPRENDIMENTO PER LA MODIFICA DEI PESI

Esistono anche reti neurali che non sono basate su specifici collegamenti tra i neuroni ma si evolvono modificando un parametro della funzione di trasferimento di ogni neurone sulla base delle attivazioni dei neuroni di un opportuno vicinato (come il "vicinato di Von Newmann": neuroni sopra, sotto, a destra e a sinistra in una griglia) Esistono inoltre reti che possono essere studiate appositamente per risolvere problemi di ottimizzazione combinatoria con opportuni vincoli e una funzione di costo(energia) da minimizzare:non tratteremo in questo libro tale argomento che meriterebbe una trattazione a parte insieme ad algoritmi genetici e altre tecniche usate nell AI per la soluzione di problemi di ottimizzazione.

GUIDA AI CAPITOLI DEL LIBRO

Il capitolo 1 descrive il funzionamento di una memoria associativa a collegamenti bidirezionali. Dopo una analisi teorica della rete vengono presentate in metalinguaggio le procedure necessarie per la simulazione software. Viene inoltre presentato il programma didattico ASSOCIA che è contenuto nel dischetto.

il capitolo 2 descrive il principio di funzionamento delle reti neurali multistrato a collegamenti unidirezionali e la teoria della retropropagazione dell errore. Le reti neurali basate su questo paradigma sono quelle attualmente più utilizzate in tutti i campi per flessibilità ed efficacia e sono in grado di comprendere la funzione matematica che lega coppie di dati input/output. Sul dischetto si può trovare il programma di addestramento/esecuzione di reti neurali error back propagation con i files di addestramento degli esempi proposti. Sul dischetto è contenuto anche il codice sorgente in linguaggio C del programma di simulazione "backprop".

il capitolo 3 approfondisce alcune delle possibili applicazioni delle reti neurali,prestando maggiore attenzione alle reti a retropropagazione dell errore e al "forecast", cioè alle capacità di previsione delle reti neurali profiquamente utilizzate in campo finanziario e commerciale. Sul dischetto si trovano i programmi e i files relativi agli esempi di forecast che possono essere sperimentati con il programma "backprop" del capitolo 2.

Il capitolo 4 introduce l argomento delle reti neurali autoorganizzanti, utilizzate come classificatori, analizzando le reti di Kohnen e passa poi all analisi dei paradigmi supervisionati LVQ e LVQ2. Vengono presentati listati in metalinguaggio facilmente comprensibili per la realizzazione di tali reti. Sul dischetto è presente un programma di simulazione di una rete autoorganizzante con sorgente in linguaggio "C"e relativi files per addestramento su "problemi giocattolo".

Il capitolo 5 tratta un argomento che esula dalle reti neurali ma è una tecnologia parallela utilizzata nell AI che spesso si integra con esse:stiamo parlando di FUZZY LOGIC o "teoria del ragionamento sfumato" che sta ottenendo sempre maggiori attenzioni nel mondo dell' industria elettronica. Anche in questo capitolo vengono analizzati listati in semplice metalinguaggio finalizzati alla comprensione dei metodi di realizzazione software di tali sistemi.

Nel capitolo 6 viene presentato il programma NEURFUZZ 1.0 contenuto nel dischetto. Si tratta di un programma in grado di addestrare una rete neurale error back propagation e generare il codice C relativo che può essere inserito all interno di altri programmi. Inoltre, NEURFUZZ 1.0 può generare motori inferenziali basati su regole fuzzy in codice C, che possono essere interfacciati con reti neurali.

Il capitolo 7 è una guida al dischetto contenuto nel libro, e il lettore vi può accedere in ogni momento per verificare i listati e i programmi concernenti i vari capitoli.

Il capitolo 8 è una breve guida ai più diffusi software presenti sul mercato.


RETI NEURALI SU PERSONAL COMPUTER + FUZZY LOGIC
marchese@mbox.ulisse.it