Amici della Scienza

Reti neurali: cosa sono e come funzionano

Le reti neurali, la cui implementazione risultava impensabile fino a pochi decenni fa, farebbero affermare a un Julius Verne redivivo che la fantascienza finalmente ha fatto il suo ingresso nella realtà. I circuiti neurali artificiali sono la base di sofisticate forme di intelligenza artificiale, sempre più evolute, in grado di apprendere sfruttando meccanismi simili (almeno in parte) a quelli dell’intelligenza umana. Risultato: prestazioni impossibili per altri algoritmi.

Le reti neurali artificiali riescono oggi a risolvere determinate categorie di problemi avvicinandosi sempre più all’efficienza del nostro cervello, e trovando perfino soluzioni inaccessibili alla mente umana. Dalla nascita del concetto di neurone artificiale ad oggi è stata fatta molta strada. In moltissimi ed eterogenei settori scientifici, dalla biomedicina al data mining, le reti neurali hanno ormai un impiego quotidiano.

Si tratta di un trend in crescita. I continui progressi permettono di ottenere circuiti sempre più sofisticati. Tutto lascia prevedere, insomma, che le reti neurali e il machine learning saranno parte notevole delle fondamenta del mondo ipertecnologico in cui ci stiamo addentrando.

Rete neurale biologica

Per prima cosa domandiamoci come funziona una rete neurale biologica (ad esempio, il nostro cervello): la materia celebrale nella nostra scatola cranica è composta da una moltitudine di neuroni: queste cellule possono inviare impulsi elettrici agli altri neuroni utilizzando un collegamento chiamato assone.

Questo segnale arriva ad uno (o più) neuroni che ricevono e interpretano l’impulso elettrico usando i dendriti. Il segnale elettrico viene convertito in chimico e recepito dal neurone di destinazione, che (a seconda di quanto potente fosse il segnale in entrata) può decidere di “accendersi” e trasmettere un segnale ad altri neuroni e così via.

neural network
Neural network

Come viene usato questo scambio di messaggi dal nostro cervello? Beh, la stimolazione elettro-chimica tra neuroni genera una sorta di “sentiero” nella nostra materia grigia, un sentiero composto da segnali che percorrono sempre la stessa via visitando sempre gli stessi neuroni. Più questo sentiero viene “rinforzato”, più un particolare evento sarà compreso e memorizzato.

Faccio un esempio (ovviamente MOLTO esemplificativo): sono un bambino e per la prima volta vedo un cane. Questo stimolo passa nel mio cervello, creando un sentiero “Cane”. Ogni volta che vedo sempre lo stesso cane, questo sentiero si rinforza fino a diventare parte di me: d’ora in avanti per me quella creatura sarà un cane.

Ora, mettiamo caso che veda un’altra razza di cane: pur diverso, si tratta sempre dello stesso animale. Il sentiero battuto in precedenza sarà percorso fino a biforcarsi in un nuovo concetto di cane, che potrà essere rinforzato fino

Questi sentieri possono essere cancellati, deviati, rimescolati per adattarsi a tutto ciò che la vita ci insegna o per correggere eventuali errori di valutazione.

Rete neurale artificiale

Una Rete Neurale Artificiale (molto spesso abbreviata “Rete Neurale”) è un software, a volte corredato anche di un hardware apposito, sviluppato per simulare il comportamento della Rete Neurale biologica. Senza andare troppo nel dettaglio di funzionamento, una Rete Neurale è composta da tre strati di neuroni artificiali:

  • Il primo strato si occupa di ricevere i dati in input (input layer)
  • Gli strati intermedi si occupano di modellare il dato (hidden layer)
  • L’ultimo strato restituisce l’output atteso (output layer)

Le reti neurali classiche sono chiamate Feedforward, cioè i dati viaggiano sempre in avanti dallo strato di input fino a quello di output: ogni segnale di input è contraddistinto da un numero che ne definisce la “potenza”. Tali segnali entrano dentro i singoli neuroni, ad ognuno dei quali è assegnato un determinato peso. Se la somma dei segnali in ingresso supera il peso del neurone, questo si attiva propagando in avanti l’informazione.

Neurone Artificiale
Modello esemplificativo di un Neurone Artificiale

Ricordate il concetto di “Sentiero” di cui parlavamo prima per le reti biologiche? Stiamo simulando proprio questo: a seconda del peso dei segnali di input, la rete creerà un sentiero di comunicazione che ci condurrà fino allo strato di output.

Machine Learning

Come avviene l’addestramento di una rete neurale? Ci sono diversi metodi, ma il più utilizzato è la Back Propagation, o addestramento con supervisione. Si parte sempre da una rete neurale costituita da almeno tre strati ed i cui pesi dei neuroni sono inizialmente impostati ad un valore casuale o costante.

Per questo tipo di addestramento è necessario disporre di un cospicuo insieme di coppie (Dato di Input; Dato di Output) che rappresenteranno il nostro Training Set. Questi set di dati vengono dati in pasto alla nostra rete neurale in modo da “plasmarla” correttamente, secondo due cicli di apprendimento:

1. Forward pass
Prendendo uno degli esempi dal nostro training set, inseriamo i valori di input, propaghiamo le informazioni attraverso la rete ed otteniamo di conseguenza, un’informazione di output. Tale informazione di output, almeno nei primi cicli di apprendimento, non sarà mai uguale alla soluzione ricercata; viene quindi calcolato l’errore rispetto alla soluzione ottima per capire quanto l’elaborazione della rete si discosta dalla realtà.

2. Backward pass
Partendo dall’errore, propaghiamo questa informazione “Al contrario”; in questa maniera vengono aggiustati i pesi di ogni singolo neurone, per far sì che la rete “recepisca” l’errore e possa imparare a comportarsi correttamente di fronte a quella particolare coppia input/output.

rete neurale
Esempio di “Forward Pass” all’interno di una rete neurale – click for source

Questi due passi vengono ripetuti per ogni elemento del training set, in modo da modellare la rete sul tipo di problema che vogliamo affrontare: lo scopo finale è quello di “insegnare” al computer come comportarsi, inferendo in maniera probabilistica il puro significato del problema (che non è stato possibile risolvere coi classici metodi deterministici).

La Back Propagation per funzionare, ha bisogno di un Training Set ben definito, pulito da eventuali imprecisioni, certificato e corretto senza il quale il processo di training potrebbe fallire, fornendo delle percentuali di successo molto basse.

rete neuraleUno dei più grossi problemi del modello computazionale matematico fornito da John von Neumann (Macchina di von Neumann) è la sua rigidità e l’impossibilità di rispondere a uno stimolo esterno (input) in modalità diversa da ciò che è presente immesso nell’elaboratore.

In parole semplici, un computer, generalmente, può riconoscere e rispondere solo a stimoli che sono stati codificati precedentemente; anche le risposte, inoltre, sono sempre rigidamente decise a priori.

Per tentare di risolvere questo problema, è stato introdotto il concetto di rete neurale (artificiale), preso in prestito dalla biologia, precisamente da ciò che sappiamo sul funzionamento cerebrale.

Le reti neurali artificiali sono modelli matematici composti da neuroni artificiali di ispirazione alle reti neurali biologiche (quella umana o animale) e vengono utilizzate per risolvere problemi ingegneristici di Intelligenza Artificiale legati a diversi ambiti tecnologici come l’informatica, l’elettronica, la simulazione o altre discipline.

Volendo dare una definizione più dettagliata potremmo dire che le reti neurali sono modelli di calcolo matematico-informatici basati sul funzionamento delle reti neurali biologiche, ossia modelli costituiti da interconnessioni di informazioni; tali interconnessioni derivano da neuroni artificiali e processi di calcolo basati sul modello delle scienze cognitive chiamato “connessionismo”

[vale a dire basati su PDP – Parallel Distributed Processing, elaborazione a parallelismo distribuito delle informazioni: il cervello umano elabora le informazioni dei vari sensi in modo parallelo e distribuisce le informazioni in tutti i vari nodi della rete, non in una memoria centrale; facendo il paragone con l’informatica tradizionale, i calcoli avvengono in modo seriale e non in parallelo e i dati vengono immagazzinati in una memoria centrale, anche se, come vedremo, negli ultimi anni si sono fatti enormi balzi in avanti sia sul fronte delle memorie sia dal punto di vista del calcolo computazionale sia dei processori hardware].

Una curiosità, in inglese vengono definite ANN – Artificial Neural Network, ma da diversi anni si è passati al più semplice NN – Neural Network ed anche in Italia si parla semplicemente di reti neurali, senza distinguere la natura biologica o artificiale (desumibile dal contesto all’interno del quale se ne parla).

La rete neurale artificiale (ANN, Artificial Neural Network) è formata da un gran numero di unità indipendenti, collegate da un altro alle connessioni dei collegamenti. Questo è simile alla struttura del nostro cervello, in cui le unità sono i neuroni e i collegamenti gli assoni e le sinapsi.

Un impulso (elettrico) viaggia all’interno del cervello seguendo i collegamenti: quando un neurone riceve l’impulso, se questo è abbastanza forte il neurone si “attiva” e a sua volta invia il segnale a tutti i neuroni e collegati, che si comporteranno nella stessa maniera.

Una annale nello stesso modo: ogni unità è collegata ad altre unità, le quali, in presenza di uno stimolo (input) di sufficiente intensità dalle unità “prima” di esse, si attivano e inviano il segnale alle unità collegate. I collegamenti (o gli assoni, nel caso del cervello) hanno la capacità di attenuare il segnale, in modo che questo viaggio secondo percorsi diversi e in alcune “direzioni” si spenga (cioè non sia sufficiente ad alcuni neuroni).

Una rete neurale possedeva poi, di solito, un algoritmo che modifica i pesi (le attenuazioni) dei collegamenti, in modo che essa sia fornita un certo output in risposta ad un determinato input.

rete neuraleEsistono vari tipi di reti neurali e dunque vari modi per classificarle. La classificazione più comune è quella che divide in supervisione e non supervisione.

Alle reti della prima categoria viene presentato un input e osservato l’output generato, un questo punto, tenendo conto dell’output che si desidera, vengono aggiunti i pesi dei collegamenti e presentati alla rete un nuovo input. Questa procedura è detta “addestramento” della rete. La “supervisione” consiste proprio nel conoscere la risposta ci si aspetta da un determinato input.

Una rete neurale è in grado, elencati, di dare risposte coerenti anche in input che non sono stati presentati in fase di addestramento. La più comune rete di questo tipo, che è anche la più famosa, è quella multistrato (in cui, cioè, i nodi vengono posti in strati paralleli, generalmente 2 o 3, al massimo 4) a retro propagazione (che è il nome dell ‘ algoritmo di addestramento), decisamente semplice da costruire anche per un programmatore poco esperto, con una decina di righe di codice.

Un esempio classico di una rete simile è quella usata per il riconoscimento di caratteri. Vengono presentati una serie di caratteri (di solito contenuti in una griglia quadrata) e la rete viene addestrata a riconoscere il carattere del tratto. Necessaria sarà in grado, fornito un qualsiasi simbolo, di definito a quale carattere esso “somigli” di più.

Le reti non supervisionate vengono generalmente utilizzate per effettuare classificazioni degli input, come le famose Reti di Kohonen (SOM, Mappe auto-organizzanti), che hanno un’enormità di applicazioni. Queste reti dividono gli input in categorie formate da input “simili” (secondo certi criteri) tra di loro. Una SOM, oltretutto, crea una “mappa” degli input selezionando vicini tra di loro gli input simili. Ad esempio è possibile fornire ad SOM una serie di colori e tariffe in modo che essa raggruppi i colori simili.

Le reti neurali, dunque, sono in grado di eseguire l’impossibile a gran parte degli altri metodi dell’Intelligenza Artificiale: rispondere coerentemente a un input non codificato in precedenza.

Questa caratteristica è fondamentale per tutte quelle applicazioni che hanno una tariffa con l’ambiente esterno (è impossibile prevedere in fase di costruzione tutte le possibilità), oppure quelle in cui gli input si presentano “rumorosi” (cioè non precisi), come ad esempio il riconoscimento di forme grafiche (ad esempio, caratteri, figure geometriche, volti umani …), nell’interpretazione di segnali, nel riconoscimento vocale, nel controllo di processi di vario tipo e nei sistemi di supporto alle decisioni.

Il problema principale di una rete neurale, invece, è che essa è una “scatola chiusa”, è davvero molto difficile comprendere il funzionamento e ci deve essere spesso limitato a fidarsi dell’addestramento, senza avere la possibilità di controllare cosa accade accade dentro la Rete.

rete neurale
Le reti neurali artificiali sono modelli matematici composti da neuroni artificiali che si ispirano al funzionamento biologico del cervello umano. Risultano indispensabili per risolvere problemi ingegneristici di Intelligenza Artificiale e richiedono avanzati chip hardware a supporto. In questo servizio analizziamo cosa sono, come funzionano e con che tipo di chip possono funzionare le reti neurali e quali sono le loro nuove frontiere tecnologiche

I sistemi esperti e le reti neurali

Nell’analisi del cosa sono e come funzionano le reti neurali non possiamo trascurare un accenno ai cosiddetti sistemi esperti. Si tratta per lo più di applicazioni che rientrano nella branca dell’intelligenza artificiale perché riproducono artificialmente le prestazioni di una persona esperta di un determinato dominio di conoscenza o campo di attività.

Non si tratta di una novità, sono sistemi che hanno goduto di una certa rilevanza mediatica e di forte interesse da parte delle aziende negli anni ’80 (la domanda “eccessiva” rispetto alla maturità tecnologica dell’offerta di allora fece però presto “raffreddare gli animi”) ma la cui introduzione nell’ambito della ricerca risale addirittura agli anni ’70 quando gli scienziati riuscirono a realizzare programmi software capaci di conservare, organizzare e proporre all’utente la conoscenza di un preciso dominio ma, soprattutto, dedurre da determinate azioni/domande anche la conoscenza utile seppur non espressamente richiesta.

Una vera rivoluzione che consentì di creare soluzioni software in grado di individuare le soluzioni di problemi complessi. Soluzioni che oggi classificheremmo come sistemi per il supporto decisionale definendo i sistemi esperti come software intelligenti che, rispondendo in modo dinamico alle domande degli utenti, li supportano nella risoluzione di un problema relativo ad una materia specifica (cioè un particolare dominio di conoscenza).

Come funzionano i sistemi esperti

I sistemi esperti sono strutturati su tre differenti livelli tecnologici:

1) base di conoscenza (knowledge base): potremmo identificarlo come il database delle informazioni che servono al sistema per fornire una risposta ad un determinato problema (come farebbe l’essere umano esperto che ha la conoscenza specifica della materia da applicare alla risoluzione del problema). Si tratta del repository dove vengono memorizzate informazioni e regole che permettono al sistema di mettere in atto una ragionamento;

2) motore inferenziale: la knowledge base alla base di un sistema esperto contiene anche le informazioni specifiche di una serie di regole di tipo If-Then (se-allora): se si verifica una certa condizione – per esempio viene posta una certa domanda – si applica una specifica regola – per esempio viene fatta una seconda domanda oppure viene data una precisa risposta o avviata una determinata azione, ecc.

Questo “rule engine” è di fatto la componente software che, analizzando ed elaborando le informazioni contenute nella base di conoscenza, capisce il problema e propone una soluzione.

3) interfaccia utente: è la parte del software che permette all’utente di sfruttare il motore inferenziale; solitamente si tratta di una interfaccia web, a volte molto semplificata (una pagina dove l’utente inserisce una domanda in forma scritta e riceve a video la risposta elaborata dal sistema esperto) a volte più strutturata (oggi integrabile anche con altri sistemi basati sull’intelligenza artificiale come il riconoscimento e la comprensione del linguaggio naturale).

Ciò che differenzia i sistemi esperti dai normali programmi software sono i dati che costituiscono la knowledge base: anziché “appoggiarsi” ad una struttura decisionale predefinita, i sistemi esperti riescono a proporre all’utente la migliore delle alternative possibili trovando la soluzione ottimale al problema tra tutte quelle disponibili.

In cosa sistemi esperti e reti neurali artificiali si differenziano

Nell’immaginario comune i sistemi esperti vengono – erroneamente – associati alle reti neurali artificiali, forse perché per descriverli spesso si ricorre al paragone umano e si dice che sono sistemi in grado di replicare le performance di un essere umano esperto (parlando poi di reti neurali artificiali come sistemi capaci di emulare il funzionamento del cervello biologico).

neuroni
Neuroni Cellule Cerebrali Struttura Del Cervello

In realtà la differenza tra queste tecnologie è abbastanza evidente quando si mettono a confronto le funzionalità:

1) un sistema esperto può dedurre alcuni ragionamenti (Mario è un essere umano; gli uomini sono mortali; Mario non è immortale), cosa che la rete neurale non fa; quest’ultima però è perfettamente in grado di riconoscere un volto umano in una immagine complessa, cosa che il sistema esperto non è in grado di fare;

2) il sistema esperto è in grado di spiegare in che modo è arrivato ad una soluzione (ripercorrendo dove e come ha applicato le regole If-Then sulla base di conoscenza); il funzionamento delle reti neurali è invece molto complesso ed è quasi impossibile risalire al procedimento logico che ha portato ad una determinata soluzione;

3) i sistemi esperti necessitano di un primario intervento da parte dell’esperto di dominio che definisce le regole che alimentano il motore infereneziale, devono quindi essere programmati; le reti neurali invece “deducono” regole e attività in modo automatico, attraverso l’apprendimento (le reti neurali non usano regole If-Then);

Nonostante oggi l’attenzione sia spesso rivolta solo alle reti neurali, la maturità tecnologica raggiunta dai sistemi esperti ha consentito loro di trovare importanti sbocchi applicativi (oggi Myti, per esempio, sfrutta i sistemi esperti all’interno di soluzioni software come i configuratori di prodotti commerciali per aiutare gli utenti non esperti, come i venditori, a realizzare proposte efficaci per progetti e prodotti complessi), tanto che oggi si parla del “next level”, quello che vede sistemi esperti e reti neurali lavorare insieme.

Benché, come abbiamo visto, si tratta di tecnologie diverse, oggi le reti neurali potrebbero essere sfruttate per “alimentare” in modo autonomo la knowledge base dei sistemi esperti. Per capire come vediamo come funzionano le reti neurali.

Come funzionano le reti neurali

Reti neurali artificialiUna rete neurale di fatto si presenta come un sistema “adattivo” in grado di modificare la sua struttura (i nodi e le interconnessioni) basandosi sia su dati esterni sia su informazioni interne che si connettono e passano attraverso la rete neurale durante la fase di apprendimento e ragionamento.

Capiamo come: una rete neurale biologica riceve dati e segnali esterni (nell’uomo e nell’animale vengono percepiti attraverso i sensi grazie a complesse organizzazioni di cellule nervose che hanno “compiti” differenti come la percezione dell’ambiente, il riconoscimento degli stimoli, ecc.); questi vengono elaborati in informazioni attraverso un imponente numero di neuroni (che rappresentano la capacità di calcolo) interconnessi tra loro in una struttura non-lineare e variabile in risposta a quei dati e stimoli esterni stessi. È in quest’ottica che si parla dunque di “modello” matematico-informatico.

Allo stesso modo, le reti neurali artificiali sono strutture non-lineari di dati statistici organizzate come strumenti di modellazione: ricevono segnali esterni su uno strato di nodi (che rappresenta l’unità di elaborazione, il processore); ognuno di questi “nodi d’ingresso” è collegato a svariati nodi interni della rete che, tipicamente, sono organizzati a più livelli in modo che ogni singolo nodo possa elaborare i segnali ricevuti trasmettendo ai livelli successivi il risultato delle sue elaborazioni (quindi delle informazioni più evolute, dettagliate).

In linea di massima, le reti neurali sono formate da tre strati (che però possono coinvolgere migliaia di neuroni e decine di migliaia di connessioni):

1) lo strato degli ingressi (I – Input): è quello che ha il compito di ricevere ed elaborare i segnali in ingresso adattandoli alle richieste dei neuroni della rete;

2) il cosiddetto strato H – hidden (strato nascosto): è quello che ha in carica il processo di elaborazione vero e proprio (e può anche essere strutturato con più colonne-livelli di neuroni);

3) lo strato di uscita (O – Output): qui vengono raccolti i risultati dell’elaborazione dello strato H e vengono adattati alle richieste del successivo livello-blocco della rete neurale.

I modelli di apprendimento delle reti neurali

Affinché questo processo risulti performante è necessario “addestrare” le reti neurali, ossia fare in modo che apprendano come comportarsi nel momento in cui andrà risolto un problema ingegneristico, come per esempio il riconoscimento di un essere umano dall’analisi delle immagini (attraverso per esempio la tecnologia del riconoscimento facciale).

Il tema dell’apprendimento è collegato al Machine Learning, inteso come algoritmi che utilizzano metodi matematico-computazionali per apprendere informazioni dall’esperienza (quindi in modo automatico e adattivo).

Questi i principali modelli in uso oggi:

– apprendimento supervisionato (Supervised Learning): all’algoritmo vengono forniti sia set di dati come input sia le informazioni relative ai risultati desiderati con l’obiettivo che la rete identifichi una regola generale che colleghi i dati in ingresso con quelli in uscita; in altre parole vengono forniti degli esempi di input e di output in modo il sistema che impari il nesso tra loro e ne estrapoli una regola riutilizzabile per altri compiti simili;

– apprendimento non supervisionato (Unsupervised Learning): al sistema vengono forniti solo set di dati senza alcuna indicazione del risultato desiderato. Lo scopo di questo secondo metodo di apprendimento è “risalire” a schemi e modelli nascosti, ossia identificare negli input una struttura logica senza che questi siano preventivamente etichettati;

– apprendimento per rinforzo: in questo caso, il sistema deve interagire con un ambiente dinamico (che gli consente di avere i dati di input) e raggiungere un obiettivo (al raggiungimento del quale riceve una ricompensa), imparando anche dagli errori (identificati medianti “punizioni”). Il comportamento (e le prestazioni) del sistema è determinato da una routine di apprendimento basata su ricompensa e punizione;

– apprendimento semi-supervisionato: è un modello “ibrido” dove al computer viene fornito un set di dati incompleti per l’allenamento/apprendimento; alcuni di questi input sono “dotati” dei rispettivi esempi di output (come nell’apprendimento supervisionato), altri invece ne sono privi (come nell’apprendimento non supervisionato). L’obiettivo, di fondo, è sempre lo stesso: identificare regole e funzioni per la risoluzione dei problemi, nonché modelli e strutture di dati utili a raggiungere determinati obiettivi.

Un po’ di storia: come si è arrivati alle reti neurali artificiali di oggi

Come anticipato all’inizio di questo nostro “viaggio” alla scoperta delle reti neurali, il primo grande passo verso la nascita e lo sviluppo delle reti neurali artificiali lo hanno compiuto nel 1943 Warren Sturgis McCulloch (neurofisiologo) e Walter Pitts (matematico) nella loro pubblicazione “A logical calculus of the ideas immanent in nervous activity”.

I due scienziati provarono a modellare un primissimo neurone artificiale schematizzando quello che venne identificato come un “combinatore lineare a soglia”, sistema dove lo strato di input prevedeva dati binari multipli in entrata mentre per l’output era previsto un singolo dato binario in uscita; per “comporre” la rete neurale bastava concettualmente combinare un numero opportuno di questi elementi e si dimostrò essere in grado di calcolare semplici funzioni booleane (funzioni matematiche basate su due variabili che in informatica equivalgono a 1 e 0).

Dal ’43 alla fine degli anni ’50 accadde però ben poco; ci fu un tentativo nel 1949 da parte dello psicologo canadese Donald Olding Hebb di spiegare i modelli complessi del cervello e di estrapolarne le prime ipotesi di apprendimento delle reti neurali (a lui il merito di aver introdotto uno dei fondamentali algoritmi di apprendimento nel campo delle reti neurali, l’apprendimento hebbiano che si basa sul “peso” delle connessioni: si basa sul semplice principio che se due neuroni si attivano contemporaneamente, la loro interconnessione deve essere rafforzata).

Un importante salto innovativo lo si vide nel 1958 con il primo schema di rete neurale presentato da Frank Rosenblatt (psicologo e computer scientist americano), antesignano delle attuali reti neurali: venne chiamato Perceptron e indicava una rete con uno strato di ingresso ed uno di uscita ed una regola di apprendimento intermedia basata sull’algoritmo ‘error back-propagation’ (minimizzazione degli errori); la funzione matematica, in sostanza, in base alla valutazione sui dati effettivi in uscita – rispetto ad un dato ingresso – altera i pesi delle connessioni (sinapsi) provocando una differenza tra l’uscita effettiva e quella desiderata.

Le teorie di Rosenblatt scaldarono la comunità scientifica per oltre un decennio ma nel 1969 Marvin Minsky e Seymour Papert ne dimostrarono i forti limiti: il percettrone risultava essere infatti una rete neurale poco potente, incapace di calcolare la funzione “or esclusivo” (XOR).

Fu necessario attendere un altro decennio prima di vedere nuovamente qualcosa di innovativo; nel 1986 David Rumelhart introdusse il terzo strato delle reti neurali (quello oggi chiamato strato H – hidden) attraverso il quale si identificarono i modelli di apprendimento per addestrare le reti MLP – Multi-Layers Perceptron (ossia un percettrone multistrato); Rumelhart propose alla comunità scientifica il cosiddetto algoritmo di retropropagazione dell’errore (error backpropagation) il quale modifica sistematicamente i pesi delle connessioni tra i nodi, così che la risposta della rete si avvicini sempre di più a quella desiderata (algoritmo oggi usato utilizzato nell’apprendimento con supervisione).

Tra il 1958 ed i primi anni ’70 si assiste anche al “lancio” dei primi linguaggi di programmazione specifici per l’Intelligenza Artificiale (Lisp nel 1958 e Prolog nel 1973) ma è dalla fine degli anni ’80 che avviene un’altra grande accelerazione con l’arrivo sul mercato “allargato” di nuovi potenti processori e avanzati chip in grado di supportare applicazioni intensive come quelle delle analisi e delle simulazioni; da qui in poi il percorso di avanzamento tecnologico dell’hardware non si è più arrestato ed oggi nei laboratori di ricerca si sta già lavorando ai chip neuromorfici (che imitano il funzionamento del cervello umano) e a quelli per il quantum computing.

 

Riferimenti e approfondimenti

  1. Dario Floreano – Claudio Mattiussi, Manuale sulle reti neurali, Il Mulino, Bologna, 2002
  2. Tarum Khanna, Fondamenti di reti neurali, Addison Wesley Longman Italia, 1991
  3. A. Mazzetti, Reti neurali artificiali, Apogeo Editore
  4. D. Parisi, Intervista sulle reti neurali, Il Mulino, Bologna, 1989
  5. S. Cammarata, Reti neuronali: l’altra faccia dell’Intelligenza Artificiale, Etas Libri, Milano, 1986
  6. Giovanni Martinelli, Reti neurali e neurofuzzy, Euroma, 2000
  7. Salvatore Ingrassia – Cristina Davino, Reti neuronali e metodi statistici, Franco Angeli, Milano, 2002
  8. Eliano Pessa, Statistica con le reti neurali, Di Renzo Editore, Roma, 2004
  9. G. Spezzano – D. Tallia, Calcolo parallelo, automi cellulari e modelli per sistemi complessi, Franco Angeli, Milano, 1999
  10. Silvio Cammarata, Reti neurali. Dal Perceptron alle reti caotiche e neuro-fuzzy, ETAS, 1997
  11. Giuseppe Carrella, L’officina neurale. Viaggio tra la teoria e la pratica delle reti neurali,
  12. Franco Angeli, Milano, 1995
  13. B. Kosko, Il fuzzy pensiero, Baldini & Castoldi, Milano, 1995
  14. B. Tirozzi, Modelli matematici di reti neurali, CEDAM, Padova, 1995
  15. M. Buscema, Squashing Theory: modello a reti neurali per la prevenzione dei sistemi complessi, Armando, Roma, 1994
  16. Philip Quinlan, Connessionismo e psicologia, Il Mulino, Bologna, 1994
  17. Andy Clark, Microcognizione. Filosofia, scienza cogitiva e reti neurali, Il Mulino, Bologna, 1994
  18. M. Buscema – G. Massimi, Il modello MQ: reti neurali e percezione interpersonale, Armando, Roma, 1993
  19. Eliano Pessa – M. P. Penna, Introduzione alla psicologia connessionistica, Di Renzo, Roma, 1993
  20. Eliano Pessa, Reti neurali e processi cognitivi, Di Renzo, Roma, 1993
  21. Vittorio Somenzi, Cibernetica e reti neurali: dall’intelligenza artificiale alla vita artificiale, Il Mulino, Bologna, 1991
  22. Stefano Patarnello, Le reti neuronali. Semplificare la complessità con l’aiuto dell’informatica, Franco Angeli, Milano, 1991
  23. Amici della Scienza – www.focusuniverse.com
  24. A. Ferrari, Aspetti applicativi delle reti neurali, Franco Angeli, Milano
  25. M. Buscema – G. Didonè – M. Pandin, Reti neurali autoriflessive, Armando, Roma
0 0 vote
Article Rating
Subscribe
Notificami
guest
0 Commenti
Inline Feedbacks
View all comments
Translate »
0
Would love your thoughts, please comment.x
()
x