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.

reti neurali esempio di perceptron Midable Magazine

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.

reti neruali esempio di multi layer perceptron Midable Magazine

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.

esempio di conversione di pixel in RGB Midable Magazine

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:

  1. si mostrano alla rete tutte le immagini del dataset, una alla volta;
  2. per ogni immagine osservata si salva quale animale la rete crede sia presente;
  3. si calcola quanti animali sono stati riconosciuti in maniera errata sul totale (il nome tecnico di questo valore รจ detto funzione di perdita);
  4. 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.

esempio mixer rete neurale Midable Magazine

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.

funzionamento rete neurale Midable Magazine