FacebookTwitterLinkedIn

Reti neurali: cosa sono e a cosa servono

Chip delle reti neurali
Nicoletta Boldrini

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

 

Aggiornamento: 01 marzo 2019

 

Nodo nelle reti neurali artificialiNeuroni biologici interconnessi formano le nostre reti neurali cerebrali, quelle che permettono a ciascun individuo di ragionare, fare calcoli in parallelo, riconoscere suoni, immagini, volti, imparare e agire… L’idea di poter replicare artificialmente il cervello umano, simulandone il funzionamento, attraverso delle reti neurali artificiali ha una storia che inizia da lontano, dai primi anni ’40 del XX secolo [il primo neurone artificiale fu proposto da W.S. McCulloch e W. Pitts in un famoso lavoro del 1943 intitolato “A Logical Calculus of the Ideas Immanent in Nervous Activity” con il quale cercarono di dimostrare che una macchina di Turing poteva essere realizzata con una rete finita di neuroni per dimostrare che il neurone era l’unità logica di base del cervello – ndr].

Cerchiamo allora di capire meglio di cosa si tratta, perché si parla molto di reti neurali artificiali, come vengono impiegate nell’ambito dell’Intelligenza Artificiale e del Machine Learning, qual è la loro storia e quali sono le nuove frontiere tecnologiche dell’hardware.

Cosa sono le reti neurali artificiali

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 – ndr].

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).

 

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).

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.

Declaro - Myti

 

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.

 

***

 

FacebookTwitterLinkedIn

3 Comments

  1. scienza che se applicata bene si può interagire soprattutto in scienze cognitive in ambito medico neuro psichiatrico.

Lascia un commento

FacebookTwitterLinkedIn

Questo sito utilizza cookie tecnici e, previo Suo consenso, cookie di profilazione, nostri e di terze parti. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsente all’uso dei cookie. Leggi la nostra Cookie Policy per esteso

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi