Deep learning: introduzione

Il deep learning è uno strumento che ha invaso la vita di tutti i giorni. Molte delle applicazioni che usiamo quotidianamente si basano su modelli costruiti con tecniche specifiche che accumulano esperienza osservando i dati a nostra disposizione. Scopriamo cos'è e come influenza l'utilizzo e l'esperienza delle nostre applicazioni.

Share

Tempo di lettura: 5 minuti

La maggior parte dei programmi che usiamo tutti i giorni sono codificati come un insieme rigido di regole che specificano esattamente come l’utente deve comportarsi e il sistema rispondere alle richieste. Supponiamo di voler scrivere un’applicazione per gestire una piattaforma di e-commerce. Dopo aver riflettuto a tavolino un bel pò, potremmo definire le regole che governeranno una soluzione funzionante, ad esempio: (i) gli utenti interagiscono con l’applicazione attraverso un’interfaccia in un browser o in un’applicazione mobile; (ii) la nostra applicazione interagisce con un database per tenere traccia delle operazioni effettuate da ciascun utente e conservare le transazioni storiche; e (iii) nel cuore della nostra applicazione, implementeremo la logica aziendale della nostra applicazione per definire un insieme di regole che mappano ogni evento all’azione corrispondente che la nostra piattaforma dovrà effettuare.

Per costruire la logica aziendale, ossia il “cervello” della nostra applicazione, potremmo enumerare tutti gli eventi che il nostro programma deve gestire. Per esempio, ogni volta che un cliente fa clic per aggiungere un articolo al suo carrello, il programma deve aggiungere una voce alla tabella del database del carrello, associando l’identificativo dell’utente all’identificativo del prodotto richiesto. Potremmo quindi tentare di esaminare tutti i casi possibili, verificando l’adeguatezza delle nostre regole e apportando le eventuali modifiche necessarie. Ci vorranno diversi test e ore di implementazione per arrivare ad un prodotto funzionante. Nonostante ciò, nella maggior parte dei casi possiamo scrivere programmi di questo tipo e lanciarli con sicurezza.

La progettazione di sistemi automatizzati che si adattino a nuovi dati e/o situazioni richiederebbe un notevole sforzo cognitivo e difficilmente otterremmo dei prodotti funzionanti al 100%. Pensate, ad esempio, di voler scrivere un programma che preveda il tempo di domani sulla base di informazioni geografiche, immagini satellitari e una finestra di tempo passato, oppure di creare un chatbot che risponda ad una domanda scritta in linguaggio naturale. Per questi problemi, è estremamente difficile trovare una soluzione con regole rigide come nell’esempio della piattaforma di e-commerce. Le ragioni possono essere diverse a seconda del contesto. Per esempio, il programma che stiamo sviluppando usa uno schema che cambia nel tempo, quindi non c’è una risposta giusta e fissa! Altre volte, le relazioni tra i dati possono essere troppo complicate e/o richiedere migliaia o milioni di calcoli e seguire principi sconosciuti. Nel caso del riconoscimento delle immagini, i passi precisi necessari per eseguire il compito vanno oltre la nostra comprensione, anche se i nostri processi cognitivi subconsci eseguono il compito senza sforzo.

L’apprendimento automatico è lo studio e sviluppo di algoritmi che possono imparare dall’esperienza. Quando un algoritmo di apprendimento automatico accumula più esperienza, ossia “osserva” più dati/eventi, le sue prestazioni migliorano. Questo è in contrasto con la nostra piattaforma di e-commerce deterministica, che segue la stessa logica di business, indipendentemente dall’esperienza accumulata, fino a quando gli sviluppatori stessi non decidono che è il momento di aggiornare il software.

Questo articolo è l’introduzione ad una serie di altri articoli che affronteranno i concetti principali del machine learning e più nel dettaglio del deep learning. Mediante alcuni esempi che possono essere replicati a casa impareremo ciò che è utile sapere se si vuole diventare un data scientist o elevare le proprie conoscenze informatiche.

Il deep learning nella vita reale

Quante volte interagiamo con modelli di machine learning o deep learning ogni giorno? Difficile a dirsi ma sicuramente più di quante volte immaginiamo. Facciamo un esempio così da capire come ciò che abitualmente facciamo sia influenzato da sistemi di apprendimento automatico.

Saliamo in macchina  per dirigerci ad un incontro di lavoro e iniziamo a guidare. Dal momento che non conosciamo la strada parliamo con il nostro smartphone (ormai non è così strano al giorno d’oggi vedere persone in macchina che parlano da sole!). Supponiamo di avere un iPhone, diremo “Ehi Siri” per sbloccare il sistema di riconoscimento vocale del telefono. A questo punto chiediamo le “indicazioni per l’azienda Crazy Cats”. Il telefono visualizza rapidamente la trascrizione del comando e riconoscendo che abbiamo chiesto indicazioni stradali, lancia l’applicazione Maps per soddisfare la nostra richiesta. Una volta avviata, l’applicazione Maps identifica il percorso migliore e le alternative mostrandoci il tempo di percorrenza previsto. Questo esempio dimostra come una semplice iterazione con il nostro smartphone possa coinvolgere diversi sistemi di apprendimento automatico.

Immaginate ora di scrivere un programma che risponda a una parola d’ordine come “Alexa”, “OK Google” e “Ehi Siri”. Come fareste a scrivere un programma di questo tipo partendo da zero? Pensateci… il problema è difficile per non dire impossibile. Ogni secondo, il microfono raccoglie circa 44.000 campioni. Ogni campione è una misura dell’ampiezza dell’onda sonora. Quale regola potrebbe mappare in modo affidabile un frammento di audio grezzo a previsioni affidabili per determinare  se il frammento contiene o meno la parola per attivare il programma? Sarebbe molto difficile riuscirlo a fare e poi successivamente dovremmo capire come riconoscere le altre parole per lanciare le app che servono. Per questo motivo utilizziamo il machine learning.

L’utilizzo del machine learning è il trucco per dire esplicitamente a un computer come mappare dagli input agli output. In altre parole, anche se non sapete come programmare un computer per riconoscere la parola “Alexa”, voi stessi siete in grado di riconoscerla. Armati di questa capacità, possiamo collezionare un enorme set di dati contenente esempi di frammenti audio ed etichette associate, che indicano quali frammenti contengono la parola Alexa. Nell’approccio attualmente dominante all’apprendimento automatico, non cerchiamo di progettare un sistema esplicitamente in grado di riconoscere una parola. Al contrario, definiamo un programma flessibile il cui comportamento è determinato da una serie di parametri. Poi usiamo il set di dati per determinare i migliori valori possibili dei parametri, cioè quelli che migliorano le prestazioni del nostro programma rispetto a una misura di performance scelta.

Si può pensare ai parametri come a delle manopole che possiamo girare per cambiare il comportamento del programma. Una volta fissati i parametri, il programma definisce un modello. L’insieme di tutti i programmi (mappature input-output) che possiamo produrre semplicemente manipolando i parametri è chiamato famiglia di modelli. Il “metaprogramma” che utilizza il nostro insieme di dati per scegliere i parametri si chiama algoritmo di apprendimento.

Prima di procedere con l’algoritmo di apprendimento, dobbiamo definire con precisione il problema, stabilendo la natura esatta degli input e degli output e scegliendo una famiglia di modelli appropriata. In questo caso, il nostro modello riceve in ingresso un frammento di audio e genera in uscita una scelta tra sì e no come output. Se tutto va secondo i piani, le ipotesi del modello saranno in genere corrette per quanto riguarda il fatto che il frammento contenga la parola Alexa.

Se scegliamo la giusta famiglia di modelli, dovrebbe esistere un’impostazione delle manopole tale per cui il modello fornisce “sì” ogni volta che sente la parola “Alexa”. Poiché la scelta esatta della parola d’ordine è arbitraria, probabilmente avremo bisogno di una famiglia di modelli sufficientemente ricca che, tramite un’altra impostazione delle manopole, possa fornire come output “sì” solo quando sente la parola “Albicocca”. Ci aspettiamo che la stessa famiglia di modelli sia adatta al riconoscimento di “Alexa” e a quello di “Albicocca”, perché intuitivamente sembrano compiti simili. Tuttavia, potremmo aver bisogno di una famiglia di modelli completamente diversa se volessimo gestire input o output fondamentalmente diversi, ad esempio se volessimo mappare da immagini a didascalie o da frasi inglesi a frasi italiane.

Come si può intuire, se impostiamo tutte le manopole in modo casuale, è improbabile che il nostro modello riconosca “Alexa”, “Albicocca” o qualsiasi altra parola. Nell’apprendimento automatico, l’apprendimento è il processo attraverso il quale scopriamo la giusta impostazione delle manopole per ottenere il comportamento desiderato dal nostro modello. In altre parole, addestriamo il nostro modello con i dati. Il processo di addestramento è solitamente il seguente:

  1. Iniziare con un modello inizializzato a caso che non può fare nulla di utile.
  2. Prendete alcuni dati (ad esempio, frammenti audio e le etichette corrispondenti).
  3. Modificare le manopole per migliorare le prestazioni del modello in base agli esempi.
  4. Ripetere le fasi 2 e 3 fino a quando il modello non raggiunge delle prestazioni soddisfacenti.

In sintesi, anziché creare un riconoscitore di parole, creiamo un programma che impari a riconoscere le parole di nostro interesse. Si può pensare a tutto ciò come ad una programmazione con i dati. In altre parole, possiamo “programmare” un rilevatore di cani e gatti fornendo al nostro sistema di apprendimento automatico molti esempi di cani e gatti. In questo modo il rilevatore imparerà a emettere un numero positivo molto grande se si tratta di un gatto, un numero negativo molto grande se si tratta di un cane e qualcosa di più vicino allo zero se non è sicuro. Questo è solo un esempio di ciò che l’apprendimento automatico è in grado di fare. Il deep learning, che spiegheremo in dettaglio in altri articoli, è solo uno dei tanti metodi per risolvere i problemi di apprendimento automatico.

More To Explore

Intelligenza artificiale

Sentiment Analysis e Topic Modeling: cosa dicono davvero i tuoi clienti

Hai 200 recensioni, 500 ticket di supporto, 1.000 commenti. Leggerli tutti richiederebbe giorni — e alla fine non saresti neanche sicuro di aver colto i pattern più importanti. Sentiment Analysis e Topic Modeling risolvono esattamente questo: in dieci minuti identifichi il tono emotivo di ogni testo, raggruppi i temi ricorrenti e ottieni una sintesi strategica che la lettura manuale non avrebbe mai prodotto.

Intelligenza artificiale

AI Multimodale: analizza PDF, immagini e documenti con Claude, GPT-4 e Gemini

L’AI non legge più solo testo. Claude riassume un preventivo di 10 pagine in 30 secondi. GPT-4 Vision trascrive i dati da uno screenshot di dashboard in formato tabella pronta all’uso. Gemini 1.5 Pro naviga documenti da 1.000 pagine citando le fonti. Questa guida mostra come funzionano, quando usare quale tool e dove il risparmio di tempo è misurabile — con screenshot reali di sessioni operative.

Una risposta

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Progetta con MongoDB!!!

Acquista il nuovo libro che ti aiuterà a usare correttamente MongoDB per le tue applicazioni. Disponibile ora su Amazon!