Non serve che sia io a spiegarvi quanto i modelli di intelligenza artificiale abbiano e stiano tuttora permeando ogni aspetto della nostra vita: dal celeberrimo Chat-GPTยฎ alla funzione di dettatura automatica di Wordยฎ passando per il generatore di immagini Dall-Eยฎ arrivando al sistema di riconoscimento facciale che ci permette di sbloccare il nostro smartphone.
Sono quasi certo che la maggior parte di voi si trovi a fruire di queste tecnologie stupendosi di quanto siano efficaci senza essere in grado di comprenderne la natura, dandosi come unica e sufficiente spiegazione lโesistenza di qualche miracoloso algoritmo dietro le quinte.
Questo articolo nasce con lโintenzione di provare a rendere piรน chiaro il funzionamento di questi modelli ipotizzando di voler creare un modello di intelligenza artificiale in grado di distinguere la foto di un cane da quella di un gatto.
Reti Neurali
Tutte le applicazioni sopra citate si basano sullโimplementazione di modelli chiamati reti neurali.
Quando nello scorso secolo i primi ricercatori si interrogavano su come rendere i computer โintelligentiโ non sapevano come poter indurre i computer a ragionare e apprendere. Il primo tentativo fu fatto imitando quello che era stato il modello dominante fino a quel momento: il cervello umano.
Come saprete, nel cervello umano si trovano miliardi di neuroni che si scambiano impulsi elettrici lโun l’altro mediante le sinapsi che portano ad eccitare o inibire i neuroni vicini: fu deciso di implementare degli applicativi che simulassero questo fenomeno costruendo una rete di neuroni artificiali.Nacque cosรฌ, nel 1958, il primo modello di neurone artificiale che prese il nome di Perceptron. Il suo funzionamento รจ molto semplice: riceve in ingresso una serie di input numerici, ne esegue una somma pesata (tenete a mente questo concetto) e poi verifica che il risultato ottenuto superi un valore di soglia preimpostato; in caso affermativo darร in output +1 altrimenti restituirร il valore โ1.
La piรน semplice delle reti neurali prende il nome di Multi Layer Perceptron e, come si intuisce dal nome, non รจ altro che una rete composta da vari Perceptron impilati su piรน strati dove i valori di uscita dei neuroni allo strato precedente rappresentano gli ingressi dei neuroni dello strato successivo.
Dati necessari per lโapprendimento
Adesso che abbiamo a disposizione una rete neurale dobbiamo fare in modo che questโultima impari a discernere tra lโimmagine di un cane e quella di un gatto.
Pensate a voi stessi in prima persona, comโรจ che avete imparato a riconoscere un cane da un gatto? Nel corso della vostra infanzia, quando incontravate un esemplare, gli adulti intorno a voi vi suggerivano se lโanimale in questione fosse un cane oppure un gatto. Reiterando questo semplice processo avete dedotto e definito una serie di vostre regole interne che vi permettono adesso di distinguere senza problemi le due specie. Non cโรจ stato bisogno che vi spiegassero che in media i gatti siano piรน piccoli dei cani, che i primi abbiano i baffi piรน lunghi o che i secondi siano generalmente piรน pelosi.
ร a questo meccanismo che si ispira il processo di addestramento supervisionato (esistono anche altri metodi ma sono meno comuni) delle reti neurali. Si dice supervisionato perchรฉ, per ogni animale sottoposto alla rete durante lโaddestramento, questโultima conoscerร esattamente la specie a cui esso corrisponde e la utilizzerร per affinare le sue abilitร .
Una volta compreso il meccanismo รจ il momento di recuperare la piรน grande quantitร possibile di immagini rappresentanti cani e gatti: piรน immagini saranno disponibili, migliore sarร il risultato conseguito. Non รจ sufficiente perรฒ avere a disposizione una grande quantitร di immagini per far s`ฤฑ che lโapprendimento sia efficace, รจ fondamentale anche la varietร delle immagini raccolte. Dovete capire che la conoscenza e le abilitร della rete saranno limitate a ciรฒ che le sarร fornito in fase di addestramento: se la rete vedrร solo cani di una razza farร sicuramente fatica a riconoscere le altre, se vedrร solo gatti seduti non distinguerร quelli sulle zampe, se vedrร solo cani sullโerba non capirร che un cane puรฒ trovarsi anche sulla neve.
Non possiamo esplicitamente descrivere ad un modello quali siano le caratteristiche che differenziano i due animali perchรฉ sarebbe un processo lunghissimo e sicuramente non andremmo a coprire tutte le casistiche: si preferisce che sia il modello a dedurre le caratteristiche che li separano mediante lโosservazione di migliaia di esemplari. Capirete quindi quanto sia importante scegliere dati giusti in modo che siano i piรน generali possibile e rappresentino il mondo in maniera completa, senza introdurre bias di alcun tipo.
Lโinsieme di dati utilizzati per lโaddestramento di un modello รจ comunemente chiamato dataset.
Da immagini a numeri
Arrivati a questo punto disponiamo di una rete neurale e di un dataset di qualitร . Come facciamo a dare in input unโimmagine alla rete e come facciamo a capire se creda che si tratti di un cane o un gatto?
Facciamo riferimento allโimmagine della rete precedente dove abbiamo un insieme di neuroni di input ed un solo neurone di output.
Come detto, i neuroni accettano valori numerici quindi dobbiamo convertire una foto in un insieme di valori numerici. Niente di piรน semplice: unโimmagine รจ composta da migliaia di pixel ed ogni pixel ha un colore che puรฒ essere rappresentato da tre valori numerici che indicano la concentrazione dei tre colori primari che lo formano (RGB: red green blu). Possiamo suddividere lโimmagine in tante regioni uguali quanti sono i neuroni in input e fornire ad ogni neurone lโinsieme di valori RGB che descrivono i pixel appartenenti alla regione di immagine corrispondente.
Una volta ottenuto lโinput lโinformazione si propagherร come descritto in precedenza mediante una serie di somme pesate (tenetele a mente) fino a produrre il valore del neurone di output. Per il nostro caso possiamo arbitrariamente decidere che se il valore รจ +1 la rete dichiari la presenza di un cane nellโimmagine sottoposta e con โ1 indicherร la presenza di un gatto.
Imparare dai propri errori
Adesso cโรจ tutto lโoccorrente necessario: abbiamo una rete, abbiamo dei dati e sappiamo come fornire questi dati alla rete. Non resta che rendere la rete
โintelligenteโ!
Quando la rete neurale sarร costruita i pesi inizialmente utilizzati dai neuroni per combinare gli input ricevuti saranno casuali e, di conseguenza, lo sarร il comportamento della rete: prima del processo di apprendimento รจ come se tirasse ad indovinare.
Lโalgoritmo iterativo che si utilizza per addestrare una rete segue questi passi:
- si mostrano alla rete tutte le immagini del dataset, una alla volta;
- per ogni immagine osservata si salva quale animale la rete crede sia presente;
- si calcola quanti animali sono stati riconosciuti in maniera errata sul totale (il nome tecnico di questo valore รจ detto funzione di perdita);
- tramite un calcolo matematico (si calcola il gradiente della funzione di perdita), lโalgoritmo riconosce quali siano i pesi dei neuroni da essere modificati per fare in modo che allโiterazione successiva la rete riesca a riconoscere correttamente piรน animali di quanto non abbia fatto al passo corrente. Modificare i pesi di un neurone significa fare in modo che esso consideri in maniera differente gli input ricevuti, modificandone di conseguenza il valore di uscita. Visto che i valori di uscita di un neurone diventano gli input di quelli successivi, modificare anche solo lโuscita di un neurone modifica a cascata il comportamento dei neuroni dipendenti da quello in questione potendo anche causare un eventuale cambiamento del valore finale di uscita della rete.
Per farvi comprendere meglio, immaginate di essere un DJ che, avendo a disposizione un mixer, deve replicare esattamente un suono desiderato avendo in input un certo numero di suoni. Tutto ciรฒ che fa รจ ruotare le varie rotelline al fine di emulare il piรน fedelmente possibile il suono obiettivo, ripetendo questo processo piรน e piรน volte fino al risultato sperato.
Fate un parallelismo tra il mixer e la rete neurale, ruotare una rotellina รจ lโequivalente di modulare la risposta di un certo neurone rispetto ai valori di input nella speranza che la rete riesca a riconoscere meglio i due animali.
Questo algoritmo viene eseguito varie volte andando a correggere via via gli errori di riconoscimento che la rete commette. Ad ogni passo lโobiettivo รจ di far s`ฤฑ che alcune immagini che erano classificate erroneamente al passo precedente siano riconosciute in modo corretto al passo successivo.
Il tutto si ripete finchรฉ non si arriva ad uno stallo ovvero quando, anche modificando impercettibilmente la risposta di qualche neurone, non si riescono a migliorare le prestazioni del modello.
Conclusioni
E cosรฌ che una rete diventa intelligente: ad ogni analisi del dataset corregge` se stessa, carpendo e affinando le nozioni apprese puntando ad unโaccuratezza sempre maggiore. Per chi addestra una rete รจ sconosciuto ciรฒ che essa analizza in unโimmagine ovvero quali dettagli siano piรน rilevanti o quali siano le discriminanti che essa usa per la classificazione. I modelli addestrati spesso sono, anche per chi li ha creati, delle scatole nere di cui non si riesce a spiegare esattamente il perchรฉ di tutte le scelte ma non ci si interroga troppo fintanto che si ha lโimpressione che funzionino a dovere (implicando una serie infinita di controversie etiche e legali).
Una volta addestrato unโintelligenza con questo procedimento ci si auspica che questa riesca correttamente a distinguere le foto esemplari che non si trovavano nel dataset ovvero che vengono viste per la prima volta e che quindi funzioni con tutti i cani ed i gatti del mondo.