fbpx

Intelligenza Artificiale: apriamo la scatola

da | 29 Mar 2021 | Blog

Possiamo dire, senza timore di essere smentiti, che l’intelligenza artificiale sta entrando in tutti gli aspetti della nostra vita. Spesso non ce ne rendiamo neanche conto, trattando i dispositivi che usiamo e le applicazioni con cui interagiamo come scatola nere di cui non ci interessa il funzionamento.

Il problema di questo approccio è quello di lasciare alla nostra immaginazione il principio di funzionamento interno, a cui facciamo caso o su cui riflettiamo di solito quando qualcosa non va. E’ un po’ come per l’auto: a scuola guida ci spiegano i principi di funzionamento di un motore a scoppio, ma finché l’auto non si rompe ci basta sapere come utilizzarla per vivere felici. Quando però si rompe, cerchiamo di capire cosa può essere successo, ed è in quel momento che cominciamo a immaginare come possa funzionare internamente per provare a trovare una soluzione che risolva il problema. Nei casi semplici magari ci riusciamo pure. Se una gomma è bucata, ad esempio, ci arriviamo facilmente al fatto che dobbiamo sostituirla con quella di scorta. Ma se sentiamo un rumore metallico, si accende una spia o l’auto non va in moto, ci affidiamo o alle nostre esperienza passate o a quelle di un amico “che ne capisce”. Nei casi peggiori ci affidiamo a uno specialista, che sa esattamente come funziona, e può risolvere il problema per noi.

Ora, nessuno dice che per avere un’auto bisogna essere dei meccanici, ma sapere un minimo di come funziona ci aiuta a non farci fregare da un “addetto ai lavori” poco onesto, e magari risolvere i problemi più semplici in autonomia. Proviamo quindi a capire i principi di funzionamento delle applicazioni dell’intelligenza artificiale, a livello più alto possibile, con lo scopo almeno di escludere la paura di essere annientati da una fantomatica sinistra coscienza artificiale e non sgranare gli occhi quando sentiamo parole come Deep Learning e Machine Learning, allo stesso modo in cui magari ci capita di fare quando il meccanico ci parla di sonda lambda, biella o collettore. 

Cosa c’è nella scatola

Nonostante sia un termine tecnico, la parola algoritmo è entrata a far parte del parlare comune, come sequenza finita di passi da seguire per implementare una funzionalità. Un po’ come una ricetta da cucina, in cui seguo passo passo le indicazioni per realizzare il mio piatto. Una caratteristica degli algoritmi è che possono accettare in ingresso dei dati e fornire un risultato preciso.

L’intelligenza artificiale viene invece utilizzata quando non possiamo definire questi passi in maniera precisa e accettiamo l’idea di avere un risultato accompagnato da un valore che ci indica l’affidabilità con cui dobbiamo prenderlo in considerazione. Per capirci, accettiamo l’idea che la macchina ci dica che in un foto c’è un gatto con una affidabilità dell’80%, mentre un algoritmo classico ci direbbe che nella foto c’è o non c’è un gatto.

Nonostante ci piacerebbe avere sempre delle risposte certe, in molte applicazioni ci basta un’informazione del genere, che ci permette di prendere una decisione o richiedere l’intervento umano nei casi in cui questo valore percentuale non sia sufficiente per una decisione automatica. Prendete il caso in cui volete consentire agli utenti del vostro sito di caricare una foto, ma volete essere sicuri che non vengano caricate immagine violente o offensive: con l’intelligenza artificiale potete scartare subito le foto o potete richiedere l’intervento di un amministratore, salvando il dato in pending, se la percentuale di affidabilità della rilevazione è, ad esempio, tra il 50% e l’80%.

Come si riesce a ottenere una cosa del genere? Abbiamo due possibilità: una è insegnare alla macchina a riconoscere un gatto in una foto, dandogli in pasto tantissime foto e l’indicazione della presenza o meno del gatto; l’altra è affidarci alle similitudini tra i dati, cercando degli schemi. Nel primo caso parliamo di apprendimento supervisionato, nel secondo caso invece si parla di apprendimento non supervisionato.

In realtà esiste un terzo approccio, detto apprendimento per rinforzo, in cui si insegna al sistema a rispondere correttamente dando un feedback positivo ogni volta che indovina un risultato. Questo approccio è molto utilizzato ad esempio nei giochi come gli scacchi (se non l’avete già fatto, date una lettura all’articolo di Salvatore su scacchi e intelligenza artificiale).

Quindi distinguiamo due momenti importanti nella realizzazione della nostra applicazione di intelligenza artificiale: la fase di apprendimento, in cui viene creato un modello sulla base dei dati a disposizione, e una fase di predizione, in cui utilizziamo il modello creato per valutare dei nuovi dati. Come già spiegato da Salvatore, i principali Cloud provider hanno addestrato per voi i loro servizi e vi permettono con un semplice end-point di fare la vostra predizione.

Le principali applicazioni dell’intelligenza artificiale che usiamo ogni giorno si basano sull’apprendimento supervisionato, dove abbiamo a disposizione sia i dati di ingresso (le famose foto con gatti e senza) che il risultato (se il gatto c’è o non c’è). Il meccanismo interno è basato su un sistema di pesi, il cui valore viene cambiato a ogni dato che forniamo durante l’apprendimento. Se ci pensate è quello che facciamo con i bambini quando gli insegniamo a riconoscere gli animali: gli mostriamo diverse immagini di animali e gli diciamo a voce alta il nome dell’animale, dopo un po’ il bambino impara a riconoscerli anche su immagini che non ha mai visto prima.

IA, Machine Learning, Deep Learning, Reti Neurali: che differenza c’è?

Se vi state interessando a questo settore avrete sicuramente sentito i termini AI, Machine Learning, Reti Neurali e Deep Learning, spesso usati erroneamente come sinonimi.

Partiamo dal termine Intelligenza Artificiale, abbreviato spesso con IA, che è il più generico tra tutti e che racchiude tutte le tecniche e le applicazioni di questa scienza interdisciplinare. In questo grande contenitore abbiamo le cosiddette tecniche di Machine Learning, cioè le tecniche con cui insegniamo a una macchina a predire valori a partire dall’addestramento basato su un set di dati (supervisionato, non supervisionato o per rinforzo).

Nell’ambito del Machine Learning è possibile utilizzare le Reti Neurali, un modello ispirato (ma assolutamente diverso) al modo in cui sono fatti i nostri neuroni. Immaginate una rete fatta a strati in cui, nel caso più semplice avete uno strato di ingresso, uno strato interno e uno strato di uscita.  Per ottenere buoni risultati di solito non basta una rete così piccola, quindi andiamo ad aumentare il numero di elementi in ingresso e gli strati interni. La rete diventa quindi più profonda, portandoci in quello che viene chiamato Deep Learning.

Purtroppo è impossibile andare più nel dettaglio senza introdurre un po’ di matematica, ma per il momento vi lascio un video di un minuto che può essere un primo approccio:

Conclusioni

Per semplicità non ci lanciamo in una descrizione più accurata delle reti neurali, che magari riprenderemo in un articolo futuro, ma volevo giusto darvi i concetti fondamentali per poter parlare con il meccanico di turno e capire, ad alto livello, cosa vi sta dicendo. Inoltre, spero sia chiaro adesso che di intelligente nel senso umano del termine qui non c’è assolutamente nulla e che stiamo semplicemente sfruttando la grande potenza di calcolo a cui possiamo accedere oggi per applicare modelli matematici/statistici degli anni cinquanta a un grossissima mole di dati.

Delusi? Non preoccupatevi, perché anche solo con questi strumenti possiamo fare cose molto interessanti: continuate a seguirci per scoprire quali!

Scritto da

Scritto da

Michele Aponte