All’incirca 25 anni fa ero responsabile di un progetto allora futuristico del Ministero della Università e Ricerca intitolato “Reti Neuronali” e affidato all’allora Polo Nazionale Bioelettronica di cui facevo parte. Lavoravo quindi con diversi gruppi di ricercatori impegnati ad affrontare temi scientifici molto complicati quali il riconoscimento del manoscritto corsivo da parte di un computer, l’analisi di immagini satellitari per rilevare frane ed eventi atmosferici, l’individuazione di difetti nella frutta, lo sviluppo di sistemi “intelligenti” nel settore della microscopia [1]. Ebbene, le Reti Neuronali sono i mattoni con i quali è costruita l’attuale Intelligenza Artificiale, nota anche come AI (Artificial Intelligence) che è simpatico pronunciare in inglese “ei-ai”.
La denominazione usa due termini importanti, ciascuno dei quali merita di essere commentato:
- ‘intelligenza’: prevede la capacità di imparare, ragionare, intuire e apprendere grazie ad informazioni provenienti anche da aree vaste e non necessariamente collegate fra loro;
- ‘artificiale’: sottintende l’utilizzo di sistemi non-naturali, tipicamente i computer, dotati di programmi che tentano di emulare ciò che avviene biologicamente nel cervello umano.
Chiariamo subito una cosa che taglia la testa al toro: ad oggi, Ottobre 2024, non esistono algoritmi di AI tali da soddisfare le condizioni di ‘intelligenza’ come appena scritte. Queste sono infatti ascrivibili alla così detta ‘intelligenza generale’, quella propria degli esseri umani, secondo le definizioni riconosciute sia in campo sociale che filosofico. Insomma, per usare un gioco di parole, ad oggi l’intelligenza artificiale non è affatto intelligente. Questo tuttavia sarà l’unico commento per così dire sociologico in questo articolo, dove invece cercherò di spiegare come funziona l’AI. Arriviamoci in quattro piccoli passi.
1. I veri neuroni (quelli del nostro cervello)
Il tessuto nervoso del nostro corpo è formato principalmente da cellule chiamate neuroni, la cui struttura è visibile in Figura 1:
Figura 1. Struttura di una cellula neuronale.
Il neurone è molto interessante e articolato [2]. La parte tondeggiante termina con ramificazioni chiamate ‘dendriti’ che costituiscono il sistema di ricezione di segnali elettrochimici provenienti da altri neuroni.
La cellula neuronale è eccitabile elettricamente, il che significa che se il proprio potenziale elettrico aumenta oltre una certa soglia, genera a sua volta un segnale del tipo tutto-o-niente (cioè un impulso elettrico) che viene propagato ai neuroni a valle lungo una protuberanza chiamata ‘assone’. Questo alla fine si ramifica formando molte terminazioni con apici chiamate ‘sinapsi’, che sono strutture in grado di trasmettere un segnale elettrochimico al successivo neurone se eccitati dal potenziale di azione che a loro è giunto lungo l’assone. Ovviamente, le sinapsi sono in contatto con i dendriti dei successivi neuroni riceventi (plurale: possono essere più di uno) e così si chiude il cerchio.
Ciascuna cellula quindi ha una certa discrezionalità, nel senso che può “decidere” di generare l’impulso elettrico, propagandolo ai neuroni a valle a cui è interconnesso, oppure no. Questa è, in ultima analisi, l’intima proprietà che rende i neuroni elementi decisionali e che poi nell’insieme generale è alla base della nostra intelligenza.
Nel cervello umano si stima che il numero di neuroni sia all’incirca 86 miliardi e, data la forte interconnessione esistente tra loro, la rete dei neuroni cerebrali è estremamente complessa e articolata, al punto che se una parte di essi per qualche ragione smette di funzionare, un altro settore riesce ad essere stimolato dai segnali elettrochimici adattando il proprio percorso decisionale a quello della parte non funzionante e riuscendo a sostituirsi in toto ad essa. Il processo di ri-adattamento e apprendimento richiede un certo lasso di tempo, poiché moltissime sono le interconnessioni da sistemare, proprio come avviene per un cervello giovane come quello di un neonato, ma alla fine queste cellule meravigliose e adattative riescono nell’impresa.
2. I neuroni artificiali (quelli dei computer)
Cellule così intriganti ed evolute non potevano che solleticare l’interesse e la fantasia degli Scienziati, non soltanto di quelli che studiano la fisiologia del corpo umano, ma anche degli ingegneri e degli informatici, che nominalmente ben poco avrebbero a che spartire con questo mondo biologico, dal quale invece hanno tratto una grande fonte di ispirazione, che poi ha portato all’AI.
Sono state così ideate entità adatte ad emulare in un computer le cellule neuronali biologiche, creando così i neuroni artificiali, la cui struttura è visibile in Figura 2:
Figura 2. Il neurone artificiale emula la cellula neuronale. Gli stimoli in ingresso si associano a quelli dei dendriti, la decisionalità è affidata ad una funzione di attivazione mentre le sinapsi sono rappresentate dall’output.
In alto in Figura 2 sono indicate con frecce gialle le parti di un neurone naturale a cui, in quello artificiale, corrispondono quelle scritte in basso.
Il funzionamento è molto semplice: gli ingressi vengono ‘soppesati’ ovvero moltiplicati per un proprio peso w e poi vengono sommati tutti insieme:
La funzione di attivazione φ è altrettanto banale: a seconda del valore assunto dalla somma, propaga o meno l’informazione. Ad esempio se è inferiore ad una certa soglia assegna 0 all’uscita y, se è superiore le assegna 1.
Tutto qui. Si capisce quindi che una struttura così semplice da sola non può certo risolvere problemi difficili e che il ‘trucco’ deve stare da un’altra parte. E difatti, l’efficacia non è insita nel singolo neurone, ma nella rete di singoli neuroni che viene costruita collegandoli fra loro alla stessa stregua di quanto avviene per quelli naturali [3].
Ecco così la rete neuronale, che possiamo disegnare come un insieme di pallini connessi da segmenti come in Figura 3. Ciascun pallino rappresenta una cellula neuronale e funziona come appena descritto:
Figura 3. La rete neuronale è costituita da vari strati di neuroni, in questo caso 3: un input layer che riceve le informazioni da elaborare, uno strato così detto nascosto, hidden layer e un output layer che fornisce il risultato dell’elaborazione.
La rete di Figura 3 è solo una delle tante possibili. Siccome ogni neurone è collegato a tutti i neuroni che lo seguono, si dice ‘completamente interconnessa’, ma sono ovviamente costruibili reti con un numero parziale di connessioni. Inoltre, questa rete ha un solo strato nascosto, ma è possibile prevederne molti, per di più ciascuno dei quali con un diverso numero di neuroni. Spazio alla fantasia.
3. La programmazione classica
Fino allo sviluppo di questa nuova branca del sapere i programmi per computer seguivano una stringente logica causa-effetto tipica del nostro quotidiano ed erano articolati secondo istruzioni che portavano a risultati prevedibili, riscontrabili e verificabili passo passo.
Ad esempio un possibile metodo per trovare la posizione di un elemento in una lista di numeri ordinata in modo crescente è questo: si divide la lista in due e ci si chiede se il numero cercato sia nella metà inferiore o in quella superiore, scartando tutti i numeri della metà in cui non si trova; poi il processo si ripete nella metà ‘valida’. Come visibile nell’esempio di Figura 4, dopo qualche iterazione si finisce con l’individuare il numero cercato e quindi la sua posizione nell’elenco. Questo semplice algoritmo si chiama “dicotomico” perché ad ogni passo divide in due l’insieme su cui opera e scarta la metà non interessante.
Figura 4. Esempio di un algoritmo classico per la ricerca della posizione di un numero in una lista ordinata in modo crescente.
Analizzando questa semplice sequenza di istruzioni si osserva che ad ogni passo è noto dove l’algoritmo sta operando, quanto valgono gli estremi dell’intervallo, quanto grande esso è: in poche parole tutto è determinato e riscontrabile.
Ma la cosa più importante non è questa, bensì il fatto che la sequenza stessa delle istruzioni è ciò che rende funzionante il metodo. Vedremo presto che gli algoritmi neuronali invece sono in un certo senso lasciati liberi di agire, scegliendo i propri valori (precisamente i pesi w) non in base alla sequenza delle nostre istruzioni ma in base ai valori contingenti dei segnali che giungono loro in quel preciso momento. Noi non abbiamo un controllo puntuale su quali dati siano privilegiati in un determinato istante, ma è la rete che adatta i propri pesi per risolvere il problema che le è stato sottoposto.
4. Come funziona l’AI
L’intelligenza artificiale lavora con reti neuronali di grandi o perfino enormi dimensioni, con centinaia di hidden layers e questa potente struttura computazionale è il motore senza il quale non potrebbe operare [4]. Tuttavia è il metodo con cui questa impalcatura viene utilizzata a rendere straordinariamente efficiente l’AI. Vediamo come funziona…
Tanto per cominciare, ogni rete non è generalizzata, bensì risponde ad un problema specifico. Ad esempio riconoscere se una fotografia di animali contiene una tigre.
Quando nasce, una rete neuronale non sa fare nulla, è un libro aperto. Occorre addestrarla affinché, esempio dopo esempio, modifichi i propri pesi wi di ogni ingresso di ogni neurone per rispondere in modo ottimale alla richiesta.
Prendiamo dunque un’immagine che noi umani sappiamo contenere una tigre e la diamo in ingresso alla rete neuronale, alla quale diciamo che con quella immagine dovrà risponderci: “Si, contiene una tigre al 100%”.
La rete processerà il nostro input e si calcolerà i pesi per ogni neurone di cui è composta. Questo passo di apprendimento si chiama feed-forward cioè apprendimento “in avanti”, in direzione dell’output.
A questo punto confronta la propria risposta con quella nostra. Supponiamo che la sua sia: “Forse, contiene una tigre al 53%”.
La rete, evidenziando una consistente disparità fra la propria risposta e quella che noi umani le abbiamo detto essere quella corretta, cerca di capire quali fra tutti i pesi wi che ha calcolato abbiano maggiormente contribuito a questa disparità.
Partendo dall’uscita, torna verso l’ingresso e riaggiusta quei pesi wi che maggiormente hanno causato la discrepanza fra risposta corretta e risposta calcolata. Questo processo si chiama back-propagation, poiché va in direzione opposta a prima, dall’output verso l’input.
L’intera sequenza è mostrata nella seguente Figura 5:
Figura 5. Metodo di apprendimento di una rete neurale con riaggiustamento dei pesi wi.
La rete è stata così addestrata e i suoi pesi sono stati ottimizzati per rispondere correttamente qualora le si ripresenti quella stessa immagine.
Ma non è questo il nostro obiettivo: noi vogliamo infatti che l’AI ci risponda correttamente quando in input riceve una qualunque immagine.
Ciò si rende possibile ripetendo il processo di apprendimento somministrando alla rete un gran numero di immagini e indicandole di volta in volta se in esse c’è o no una tigre. Più immagini forniamo, migliore sarà l’apprendimento e maggiormente affidabili i risultati. L’insieme di dati con cui la rete viene allenata si chiama training-set, ovvero insieme di apprendimento.
Alla fine, i pesi risulteranno così ottimizzati che la rete potrà essere considerata funzionante e pronta a ricevere un’immagine non facente parte del training-set, una qualunque fotografia di animali, e a darci una risposta convincente se contiene o meno una tigre.
È importante notare la differenza con gli algoritmi classici visti più sopra: ora i pesi non cambiano in modo prevedibile e stabilito a priori dal programmatore, bensì si adattano autonomamente al caso particolare esprimendo una capacità decisionale indipendente dalle righe di programma software. È questa la parte che fa paura a chi non è del mestiere, come sempre alimentata da giornalisti di dubbia professionalità che cercano lo scoop invece di dare informazioni e conoscenze. Ma ho detto di non occuparmi degli aspetti sociologici e mantengo l’impegno.
Fondamentale per il successo dell’AI è la disponibilità di grandi quantità di dati di tutti i tipi. La sete di informazioni è enorme e tutti noi contribuiamo ad alimentare banche dati di dimensioni incredibili ogni vota che aggiungiamo un contenuto sui nostri ‘social’ o che semplicemente guardiamo un sito Internet. Ciò accade anche quando siamo costretti a rispondere alla perniciosa domanda sul web: “Noi diamo molta importanza alla tua privacy. Clicca OK per accettare i cookies del nostro sito”. Domanda assolutamente ipocrita alla quale siamo in realtà costretti a rispondere OK, pena il non aver accesso a un bel niente, dando così contestualmente il permesso di carpire nostre informazioni. Altro che preoccuparsi della nostra privacy, l’esatto opposto. Ma pensiamo positivamente: anche sulla base di questa mole di dati le reti neuronali vengono addestrate sempre meglio e così i software di AI sono sempre più efficienti nel darci risposte nei campi più svariati.
Marco Sartore
Riferimenti bibliografici:
1. “Towards a Neural Networks based AFM”, M.Salerno and M. Sartore, Probe Microscopy, 1:333, 1999
2. “From Neuron to Brain: A Cellular and Molecular Approach to the Function of the Nervous System”, John G. Nicholls, Bruce G. Wallace, A. Robert Martin, Paul A. Fuchs
3. “Neural Networks and Deep Learning”, Charu C. Aggarval, 2nd edition, Ed. Springer.
4. “The Cambridge Handbook of Artificial Intelligence”, Keith Frankish, ISBN 9781139046855