Cosa sono le Reti Neurali Artificiali
Le Reti Neurali Artificiali sono sistemi di elaborazione il cui funzionamento è ispirato a quello del cervello. Questa denominazione è la traduzione di “Artificial Neural Network” il cui acronimo, ANN, rappresenta la denominazione originaria e usuale di questi particolari sistemi; per comodità, d’ora in poi le chiameremo solo ‘reti neurali’, omettendo l’aggettivo “artificiali” (che sta a distinguerle dalle reti neurali naturali, presenti costitutive dell’immensa rete neurale del cervello) e le maiuscole. Esse sono considerate sistemi di calcolo molto avanzati, in rapida evoluzione, e sono state applicate in molti settori diversi. Una rete neurale ha la capacità notevole di estrapolare una regolarità, o un significato, da insiemi di dati estremamente complessi e rumorosi. Le reti neurali sono implementabili su qualsiasi calcolatore seriale. È possibile costruire, grazie alla modellizzazione con reti neurali, programmi designati a simulare il modo in cui si crede che operi il sistema nervoso, o, più spesso, strutture e funzioni specifiche di questo. Esse sono basate su semplici unità di calcolo a cui si fa riferimento come “neuroni artificiali”, “nodi”, o semplicemente “unità”. Si tratta di cellule nervose simulate, organizzabili in una infinita varietà di architetture e di pattern di connettività. Esse sono caratterizzate da funzionamento massivamente parallelo, traendo ispirazione dal funzionamento del sistema nervoso, e costituendo un’efficace alternativa alle moderne macchine di calcolo ‘seriali’ (macchine Von Neumann, gli attuali computer).
Neurocomputazione vs. Computazione Seriale
Il funzionamento e il “significato” delle reti neurali può essere spiegato in termini di neurocomputazione, in contrapposizione alla computazione artificiale “classica” o seriale. Il vantaggio della neurocomputazione, rispetto a quella seriale sta innanzitutto nella plausibilità biologica. Il cervello non elabora i dati uno alla volta, come fanno i computer, ma attraverso l’attività sincrona di insiemi molto numerosi di cellule cerebrali. La neurocomputazione è altamente parallela. Un esempio prototipico di tale modalità di elaborazione è la categorizzazione di stimoli percettivi; già a livello di analisi di stimoli visivi semplici, abbiamo popolazioni molto numerose di neuroni che processano in parallelo l’informazione proveniente dai sensori distali; la corteccia elabora in parallelo l’insieme dell’informazione visiva che viene codificata dai recettori a livello retinico. Contrariamente ai processori seriali, quindi, non è possibile stabilire in un determinato istante di tempo qual è l’informazione che il sistema sta elaborando (cosa che, almeno in linea di principio, è possibile invece fare su un ‘normale’ computer). Da un punto di vista più strettamente cognitivo, si è soliti distinguere tra due tipi di computazione: computazione “simbolica” e computazione “sub – simbolica”. La prima corrisponde alla computazione Artificiale classica, che fa riferimento ai succitati elaboratori seriali, il cui funzionamento è mediato dall’implementazione di regole esplicite; la seconda corrisponde invece alla neurocomputazione, e presenta caratteristiche di plasticità simili a quelle osservate nel sistema nervoso. La computazione artificiale è simbolica, nel senso che l’interazione con la macchina si svolge attraverso i linguaggi di programmazione; i linguaggi sono definiti tramite regole formali tra gli elementi che li costituiscono, che permettono di stabilire se una frase, ovvero una sequenza di simboli, è ben formata o meno. La neurocomputazione è invece sub – simbolica, perché in realtà non ci sono evidenze della presenza di qualcosa, a livello di architettura neurale, che rappresenti dei simboli; la neurocomputazione avviene quindi a livello locale, su elementi che sono all’interno del sistema, senza che tali elementi prendano significato da una relazione biunivoca con gli oggetti che stanno fuori dal sistema. In altre parole, la neurocomputazione è sub – simbolica in quanto avviene ad un livello “inferiore” rispetto al livello a cui emergono i simboli. Una rete neurale è in grado di imparare, memorizzare, e creare relazioni tra i dati. Ci sono molti differenti tipologie di reti, ed ogni tentativo di sintesi sull’argomento condurrebbe a una semplificazione; il neurone artificiale è un’unità di calcolo semplice, che può essere visto come un alter – ego iper –semplificato del neurone biologico. Come quest’ultimo, il neurone artificiale apprende attraverso algoritmi, chiamati algoritmi di apprendimento, ovvero ,in generale, regole che determinano in qualche modo le dinamiche di interazione tra le unità.
Vantaggi della neurocomputazione
Le reti neurali sono caratterizzate da architettura parallela, e presentano tutti i vantaggi della neurocomputazione. Innanzitutto la fault – tolerance, o “resistenza alla presenza di rumore”. Il sistema nervoso è altamente rumoroso e ridondante, ed è progettato per elaborare insiemi di dati altamente rumorosi; i modelli computazionali ad architettura parallela possiedono questa caratteristica, e sono in grado di elaborare input come l’informazione proveniente dall’ambiente esterno. Un’altra caratteristica delle reti neurali è la cosiddetta gentle – degradation, o deterioramento graduale della struttura fisica del sistema. Quando implementiamo una funzione cognitiva su una rete neurale e introduciamo un meccanismo di danneggiamento dei neuroni, si osserva un minimo decremento della performance del sistema, e non un drastico peggioramento. In altre parole, non c’è una dipendenza della funzione dalla interezza delle singole componenti fisiche del sistema, ovvero il sistema continua a funzionare bene anche se una parte consistente viene danneggiata. Questo decremento graduale è osservabile, in genere, nelle patologie neuro – degenerative, come le demenze, sotto forma di impoverimento delle rappresentazioni di tipo semantico presente nei pazienti affetti da morbo di Alzheimer. Abbiamo già visto infine, il concetto di emergenza di una funzione. È questo il motivo principale per cui i modelli connessionisti sono efficaci per l’implementazione di funzioni come i comportamenti rule – based. La funzione in questo caso non è controllata dalla struttura dei singoli elementi che costituiscono il sistema, ma emerge dall’attività di un altissimo numero di elementi aventi le stesse caratteristiche e dalle loro interazioni reciproche. In altre parole, l’insieme non corrisponde alla somma delle parti. Data la peculiare plasticità di questi modelli, i campi in cui vengono impiegati appartengono a una grande varietà i domini della ricerca scientifica e delle applicazioni pratiche. Le reti neurali offrono prestazioni notevoli nei compiti di classificazione : nel campo delle diagnosi mediche, possono essere addestrate su molti casi conosciuti, in base ai sintomi e alle patologie rilevate, per essere poi impiegate nel riconoscimento automatico di patologie in casi nuovi. Inoltre, sempre in campo medico, le reti sono in grado di analizzare con risultati spesso migliori dell’esperto umano, immagini relative a Tac o Pet, riconoscendo configurazioni anomale (tumori, emorragie, etc.). Sono impiegate con ottimi risultati anche nel riconoscimento di firme autentiche, nella valutazione dei rischi di mercato, nel riconoscimento di particolari suoni o di immagini, nell’identificazione di particolari frequenze d’onda, nella valutazione delle proprietà, classificazione di tipi di cellule, microbi, materiali e campioni di tessuto. In Economia le reti neurali vengono usate per valutare le caratteristiche delle vendite, le richieste di produzione, le performance di mercato in termini di costi/benefici, prodotti di reazioni chimiche e i rischi ambientali nell’intraprendere iniziative di vario tipo. Le reti vengono infine usate per la “modellizzazione”: creare dei modelli, significa dar vita a rappresentazioni simulate di alcuni aspetti della realtà, su cui vogliamo sapere qualcosa, o su cui vogliamo fare degli esperimenti. A volte la modellizzazione si presenta come uno strumento utile, a volte è indispensabile. Nel caso dello studio del cervello e delle sue funzioni, implementare delle reti neurali la cui struttura sia guidata da un’ipotesi sperimentale circa il sostrato anatomico o il processo a cui si è interessati, può portare ad avere delle indicazioni su come stiano realmente le cose, anche se, a causa dell’estrema semplificazione degli strumenti simulativi attualmente in uso, i risultati ottenuti con le simulazioni sono spesso non – sovrapponibili ai dati empirici. Le reti neurali sono impiegate nell’analisi dei dati (data – minino) riuscendo ad affrontare con successo l’elaborazione di insiemi di dati rumorosi. In virtù delle proprietà della neurocomputazione, le reti sono in grado di affrontare la non –linearità del mondo reale, di ricostruire pattern incompleti o danneggiati, e di creare, auto – organizzandosi in base alle informazioni in entrata, relazioni tra queste, senza l’uso di alcuna regola pre – specificata, fornendo soluzioni generali con una buona accuratezza predittiva.
Cenni storici
La storia delle Reti Neurali e del Connessionismo inizia nel 1943. Il primo passo fu fatto da un neuropsicologo, Warren McCulloch, e da un giovane matematico, Walter Pitts. Essi scrissero insieme un articolo in cui parlavano del funzionamento del dei neuroni. Proposero quindi un semplice modello di Rete Neurale composta da circuiti elettronici. Nel 1949 Donald Hebb scrive un libro, Organization of Behavior, in cui emerge il concetto di ‘apprendimento hebbiano’ e Potenziamento a Lungo Termine, o LTP (da Long Term Potentiation). Il cuore del lavoro di Hebb è rappresentato dalla teoria che l’efficacia del legame tra due neuroni aumenti di efficacia ogni qualvolta questi si trovino ad essere attivi ( a “scaricare”) nello stesso momento (Hebb,1949). Vedremo più avanti che le cosiddette “regole hebbiane” sono state implementate su alcuni modelli particolari di reti neurali, oltre ad aver rivoluzionato lo studio del funzionamento del cervello. Nei primi anni ’50 infatti, nascevano i primi calcolatori, e questo rese possibile modellizzare i rudimenti di queste teorie circa il funzionamento della mente su macchine lente e di grandi dimensioni Nathanial Rochester, che lavorava presso i laboratori di ricerca dell’IBM fece un primo tentativo di simulare una rete neurale. Il primo tentativo fallì, ma col tempo i risultati migliorarono ; tuttavia questo era il periodo in cui cominciavano a fiorire i progenitori di quelli che sono oggi i nostri home – computer, e che rappresentano un tipo di tecnologia diverso da quello usato dalle reti neurali. Stiamo parlando delle macchine Von Neumann, ancora oggi il tipo di calcolatore più diffuso in tutto il mondo, ad architettura non – parallela. Forse per questo motivo la ricerca sulle reti in quel periodo fu lasciata per un po’ sullo sfondo. Nel 1956 al Darthmouth College fu promosso il Darthmouth Summer Research Project sull’ Intelligenza Artificiale. Questo progetto diede un grosso impulso alla ricerca sia sull’Intelligenza Artificiale ‘classica’ sia sulle Reti Neurali Artificiali, anche se la maggior parte delle energie fu investita per lo sviluppo di algoritmi utilizzati soprattutto per lo sviluppo di teorie e macchine “simboliche” Negli anni seguenti, John Von Neumann suggerì di imitare semplici proprietà dei neuroni usando dei semplici elementi, come ad esempio dei relay; questa intuizione rimanda direttamente al lavoro di Hebb, e sottolinea il fatto che il cervello è composto da elementi semplici, a dispetto della complessità delle funzioni che possiamo osservare. Frank Rosenblatt, un neuro – biologo di Cornell, iniziò a lavorare sul Percettrone. Egli era affascinato dal funzionamento dell’occhio della mosca. Il Percettrone fu costruito in hardware, nel senso che furono realizzate delle parti fisiche, a differenza della maggior parte delle reti neurali moderne, che vengono simulate su computer. Il Percettron e rappresenta la più ‘antica’ rete neurale, oggi ancora in uso in molte applicazioni. Rosenblatt scoprì che un percettrone con un unico strato di unità di elaborazione era in grado di classificare un set di input con valori continui in due classi diverse. Il Percettrone calcola una somma pesata degli input, sottrae una soglia, e da in uscita un valore scelto tra due possibili. I limiti computazionali del Percettrone furono evidenziati da Marvin Minsky e da Seymour Papert nel loro libro Perceptrons (Minsky & Papert, Perceptrons, 1969). L’iniziale entusiasmo per i primi modelli connessionisti fu smorzato notevolmente, e dovremo aspettare i primi anni 1980 per una vera e propria “ribalta” del settore. Nel frattempo, Bernard Widrow e Marcian Hoff, che lavoravano a Stanford, svilupparono due modelli, che chiamarono ADALINE e MADALINE (Widrow & Hoff, 1960). Questi due modelli prendevano il nome dagli elementi che li componevano: “Multiple ADAptive LINear Elements”. MADALINE fu la prima rete neurale ad essere applicata a un problema del mondo reale: il suo filtro adattivo eliminava l’eco dalle linee telefoniche ed è in uso ancora oggi. Tuttavia dopo alcuni successi, la pubblicazione del libro di Minsky e Papert (Minsky & Papert, 1969), e alcune delusioni, dovute forse a eccessive aspettative nei confronti delle reti neurali fecero cadere questo settore quasi nell’oblio. In particolare è possibile che molte delle delusioni fossero dovute all’inadeguatezza degli strumenti tecnologici del tempo, che non permettevano un’adeguata implementazione dei modelli teorici proposti. Oggi la situazione è molto cambiata, e le moderne macchine, sempre più veloci, permettono di creare delle simulazioni di reti neurali molto fedeli e veloci, a dispetto della complessità dei calcoli che il modello deve eseguire; ad ogni modo è necessario ricordare che, quando parliamo di simulazioni di meccanismi paralleli, come le reti neurali, su macchine seriali, come i computer, i calcoli vengono effettuati, di fatto in modo seriale, cioè un dato alla volta (vedi sopra). Tuttavia nei primi anni ’80 comparvero i segni di un rinnovato interesse nel settore dei modelli connessionisti. Nel 1982 John Hopfield presentò un articolo alla National Academy of Sciences.Il modello proposto da Hopfield si avvale di regole di apprendimento hebbiane e sfrutta le leggi della fisica per il funzionamento dei processi di apprendimento (Hopfield,1982). Il modello di Hopfield introduce molte novità nel campo delle reti neurali. Egli Teorizza e simula una memoria associativa, contrapposta alla classica memoria per indirizzo, caratteristica dei tradizionali calcolatori seriali. Nello stesso periodo, il cosiddetto gruppo PDP fondato da D.E. Rumelhart e J.L. mcClelland e altri pubblicano il primo volume di “Parallel Distributed Processing”, seguito poi da altri due volumi, opera monumentale in cui viene reso pubblico il celebre algoritmo di propagazione all’indietro dell’errore (Back – Popagation, vedi appendice) e dove il Connessionismo trova la massima espressione. Vengono studiate a fondo le funzioni delle reti, analizzate anche dal punto di vista matematico, e vengono proposte numerose implementazioni e un linguaggio informatico programmato ad hoc per la realizzazione di reti neurali. Da questo momento moltissimi autori danno il loro contributo al settore delle reti neurali: i lavori di Oja (Oja, 1982, 1989) e di Sanger dell’estrazione delle componenti principali, nel contesto più vasto delle reti neurali che ad auto – organizzazione; sempre nell’ambito dell’auto – organizzazione, è stato sviluppato il modello di Linsker (Linsker ,1986), caratterizzato da una gerarchia di strati di neuroni lineari che elaborano il segnale in sequenza, al fine di capire alcune peculiarità dello sviluppo del sistema visivo; i modelli basati su meccanismi di competizione, come le Mappe a Self – Organizzazione ( generalmente abbreviate nell’acronimo del nome originale, “Self – Organizing – Feature – Maps”, “SOFM”, o più semplicemente “Self – Organizing – Maps”, “SOM”) ideate da Kohonen (Kohonen, 1982;1989). Dal 1985 l’ American Institute of Physics è promotore di un meeting annuale – Neural Networks for Computing. Nel 1987, l’Institute of Electrical and Electronic Enginieer’s (IEEE) ha organizzato la prima Conferenza Internazionale sulle Reti Neurali.
[amazon_link asins=’8871925939,8897599583,8857904326,8842819662,1976998131,8850333978′ template=’ProductCarousel’ store=’francioalba-21′ marketplace=’IT’ link_id=’dc020684-29c0-11e8-978a-2551bff16889′]
Bibliografia
- Floreano, D. ; Mittiussi , C. ,Manuale sulle Reti Neurali, Il Mulino, Bologna, 1996.
- Fum, D., Intelligenza Artificiale, Il Mulino, Bologna, 1994.
- Nilsson, N. J., Intelligenza Artificiale, Apogeo, Milano, 2002.
- Pessa, E. , Reti Neurali e processi cognitivi, Di Renzo Editore, Roma, 1993.
- Plunkett, K., Elman, , J., Exercises in Rethinking Innateness, MIT Press, Cambridge 1997.