La creazione di modelli a partire dai dati può essere basata su diverse tecniche. Gli esempi visti negli articoli precedenti Deep learning: Apprendimento supervisionato [parte 1] e Deep learning: Apprendimento supervisionato [parte 2], ci siamo concentrati sull’apprendimento supervisionato, in cui si dà in pasto al modello un enorme set di dati contenente sia le caratteristiche che i corrispondenti valori di etichetta. Per questi problemi l’output desiderato è già noto a priori: vogliamo etichettare nuovi dati con le stesse etichette a nostra disposizione e raggiungere un alto livello di accuratezza del nostro modello. Tuttavia, in molti contesti l’obiettivo non è chiaro oppure non si ha a disposizione un set di dato già etichettato.
Come facciamo in questi casi? Useremo tecniche diverse che ricadono sotto il nome di apprendimento non supervisionato.
Unsupervised e Self-Supervised Learning
Nei problemi di apprendimento non supervisionato, il tipo e il numero di domande che possiamo porci sono limitati solo dalla nostra creatività. Affronteremo le tecniche di apprendimento non supervisionato in articoli successivi. Tuttavia, per stuzzicare la vostra curiosità, descriviamo alcune delle domande che si possono porre.
- Possiamo trovare un piccolo numero di esempi che riassumano accuratamente i dati? Dato un insieme di foto, possiamo raggrupparle in diverse categorie in base a ciò che rappresentano (ad esempio foto di paesaggi, di animali, di bambini, ecc.)? Allo stesso modo, data una collezione di attività di navigazione degli utenti, possiamo definire alcuni gruppi di utenti che hanno comportamenti simili? Questo problema è tipicamente noto come clustering.
- Possiamo trovare un piccolo numero di parametri che catturino accuratamente le proprietà rilevanti dei dati? Le traiettorie di una palla sono ben descritte dalla velocità, dal diametro e dalla massa della palla. Diversamente, i sarti hanno sviluppato un piccolo numero di parametri che descrivono in modo abbastanza accurato la forma del corpo umano per adattare i vestiti. Questi problemi vengono definiti stima del sottospazio. Se la dipendenza è lineare, si parla di analisi delle componenti principali.
- Esiste una descrizione delle cause principali di molti dei dati che osserviamo? Ad esempio, se disponiamo di dati demografici sui prezzi delle case, sull’inquinamento, sulla criminalità, sull’ubicazione, sull’istruzione e sugli stipendi, possiamo scoprire come sono correlati tra loro semplicemente basandoci sui dati empirici? I campi che si occupano di causalità e di modelli grafici probabilistici affrontano queste domande.
- Un altro importante ed entusiasmante sviluppo recente nell’apprendimento non supervisionato è l’avvento dei deep generative models. Questi modelli stimano la densità dei dati, in modo esplicito o implicito. Una volta addestrati, possiamo usare un modello generativo sia per assegnare un punteggio agli esempi in base alla loro probabilità, sia per campionare esempi sintetici dalla distribuzione appresa. Le prime scoperte del deep learning nella modellazione generativa sono arrivate con l’invenzione degli autoencoder variazionali (Kingma e Welling, 2014, Rezende et al., 2014) e sono proseguite con lo sviluppo delle reti generative avversarie (Goodfellow et al., 2014). I progressi più recenti includono la normalizzazione dei flussi (Dinh et al., 2014, Dinh et al., 2017) e i modelli di diffusione (Ho et al., 2020, Sohl-Dickstein et al., 2015, Song and Ermon, 2019, Song et al., 2021).
Un ulteriore sviluppo dell’apprendimento non supervisionato è stata l’ascesa dell’apprendimento auto-supervisionato, tecniche che sfruttano alcuni aspetti dei dati non etichettati per fornire una supervisione. Per il testo, possiamo addestrare i modelli a “riempire gli spazi vuoti” prevedendo parole mascherate a caso utilizzando le parole circostanti (contesti) in grandi corpora senza alcuno sforzo di etichettatura (Devlin et al., 2018)! Per quanto riguarda le immagini, possiamo addestrare i modelli a distinguere la posizione relativa tra due regioni ritagliate della stessa immagine (Doersch et al., 2015), a prevedere una parte occlusa di un’immagine in base alle porzioni rimanenti dell’immagine o a prevedere se due esempi sono versioni perturbate della stessa immagine sottostante. I modelli auto-supervisionati spesso apprendono rappresentazioni che vengono successivamente sfruttate per affinare i modelli risultanti su qualche compito di interesse a valle.
Interagire con l’ambiente
Finora non abbiamo parlato della provenienza dei dati o di cosa succede quando un modello di apprendimento automatico genera un output. Questo perché l’apprendimento supervisionato e l’apprendimento non supervisionato non affrontano questi temi in modo molto sofisticato. In ogni caso, si raccoglie una grande quantità di dati e si mettono in moto le macchine per la creazione dei modelli senza interagire più con l’ambiente. Poiché tutto l’apprendimento avviene dopo che l’algoritmo è stato scollegato dall’ambiente, questo viene talvolta chiamato apprendimento offline. Ad esempio, l’apprendimento supervisionato presuppone il semplice schema di interazione illustrato qui di seguito.
Questa semplicità dell’apprendimento offline ha il suo fascino. Il vantaggio è che possiamo occuparci della costruzione dei modelli in modo isolato, senza preoccuparci delle complicazioni derivanti dalle interazioni con un ambiente dinamico. Ma questa formulazione del problema è limitante. Se siete cresciuti leggendo i romanzi robotici di Asimov, probabilmente vi immaginate agenti artificialmente intelligenti in grado non solo di fare previsioni, ma anche di intraprendere azioni nel mondo. Noi vogliamo pensare ad agenti intelligenti, non solo a modelli predittivi. Ciò significa che dobbiamo pensare a scegliere le azioni, non solo a fare previsioni. A differenza delle semplici previsioni, le azioni hanno un impatto effettivo sull’ambiente. Se vogliamo addestrare un agente intelligente, dobbiamo tenere conto del modo in cui le sue azioni potrebbero avere un impatto sulle osservazioni future dell’agente, per cui l’apprendimento offline è inappropriato.
Considerare l’interazione con l’ambiente apre una serie di nuove questioni di modellazione. Di seguito sono riportati solo alcuni esempi.
- L’ambiente ricorda ciò che abbiamo fatto in precedenza?
- L’ambiente vuole aiutarci, ad esempio un utente che legge un testo in un riconoscitore vocale?
- L’ambiente vuole batterci, ad esempio gli spammer che adattano le loro e-mail per eludere i filtri antispam?
- L’ambiente ha dinamiche mutevoli? Ad esempio, i dati futuri assomiglieranno sempre al passato o i modelli cambieranno nel tempo, in modo naturale o in risposta ai nostri strumenti automatizzati?
Queste domande sollevano il problema del cambiamento di distribuzione, in cui i dati di addestramento e di test sono diversi. Un esempio di questo tipo, che molti di noi possono aver incontrato, è quello degli esami scritti da un docente, mentre i compiti sono stati composti dai suoi assistenti. Di seguito descriveremo l’apprendimento con rinforzo, un framework per risolvere problemi di apprendimento in cui un agente interagisce con un ambiente.
Apprendimento per rinforzo
Se siete interessati a utilizzare l’apprendimento automatico per sviluppare un agente che interagisce con un ambiente e compie azioni, probabilmente finirete per concentrarvi sull’apprendimento per rinforzo. Ciò potrebbe includere applicazioni alla robotica, ai sistemi di dialogo e persino allo sviluppo di intelligenza artificiale (AI) per i videogiochi. Il Deep reinforcement learning è diventato sempre più popolare negli ultimi anni. La rivoluzionaria rete profonda Q, che ha battuto gli esseri umani ai giochi Atari utilizzando solo l’input visivo (Mnih et al., 2015), e il programma AlphaGo, che ha detronizzato il campione mondiale del gioco da tavolo Go (Silver et al., 2016), sono due famosi esempi.
L’apprendimento per rinforzo fornisce una descrizione molto generale di un problema in cui un agente interagisce con un ambiente in una serie di fasi temporali. A ogni passo temporale, l’agente riceve un’osservazione dall’ambiente e deve scegliere un’azione che viene successivamente ritrasmessa all’ambiente tramite un meccanismo (talvolta chiamato attuatore). Dopo ogni ciclo, l’agente riceve una ricompensa dall’ambiente in base alla sua azione. L’agente riceve successivamente una nuova osservazione e sceglie un’azione proseguendo l’interazione con l’ambiente. Il comportamento di un agente che apprende per rinforzo è regolato da una policy. In breve, una policy non è altro che una funzione che mappa dalle osservazioni dell’ambiente alle azioni. L’obiettivo dell’apprendimento per rinforzo è produrre buone policy.
L’apprendimento per rinforzo può essere usato in vari contesti. Ad esempio, l’apprendimento supervisionato può essere riformulato come apprendimento per rinforzo. Supponiamo di avere un problema di classificazione. Potremmo creare un agente di apprendimento per rinforzo con un’azione corrispondente a ciascuna classe. Potremmo quindi creare un ambiente che dia una ricompensa esattamente uguale alla funzione di perdita del problema di apprendimento supervisionato originale.
Inoltre, l’apprendimento per rinforzo può risolvere molti problemi che l’apprendimento supervisionato non può risolvere. Per esempio, nell’apprendimento supervisionato ci aspettiamo sempre che l’input di addestramento venga associato all’etichetta corretta. Nell’apprendimento per rinforzo, invece, non si presuppone che per ogni osservazione l’ambiente ci indichi l’azione ottimale. In generale, otteniamo solo una ricompensa. Inoltre, l’ambiente può anche non dirci quali azioni hanno portato alla ricompensa.
Consideriamo il gioco degli scacchi. L’unico vero segnale di ricompensa arriva alla fine della partita, quando vinciamo, guadagnando una ricompensa pari a 1, o quando perdiamo, ricevendo una ricompensa pari a -1. Bisogna, quindi, affrontare il problema dell’assegnazione delle ricompense: determinare quali azioni accreditare o incolpare per un risultato.
Questi modelli possono anche dover affrontare il problema dell’osservabilità parziale. In altre parole, l’osservazione corrente potrebbe non dire tutto sullo stato attuale. Supponiamo che il vostro robot delle pulizie sia rimasto intrappolato in uno dei tanti armadi identici della vostra casa. Per salvare il robot è necessario dedurre la sua posizione precisa, il che potrebbe richiedere di considerare le osservazioni precedenti all’ingresso nell’armadio.
Infine, in qualsiasi momento, il modello potrebbe conoscere una buona policy, ma potrebbero esserci molte altre policy migliori che l’agente non ha mai provato. L’agente deve costantemente scegliere se sfruttare la migliore strategia (attualmente) conosciuta come policy, o se esplorare lo spazio delle strategie, rinunciando potenzialmente a qualche ricompensa a breve termine in cambio della conoscenza.
Il problema generale dell’apprendimento per rinforzo ha un’impostazione molto generale. Le azioni influenzano le osservazioni successive. Le ricompense vengono osservate solo quando corrispondono alle azioni scelte. L’ambiente può essere osservato completamente o parzialmente. Tenere conto di tutta questa complessità in una volta sola potrebbe essere una richiesta eccessiva. Inoltre, non tutti i problemi pratici presentano tutta questa complessità. Di conseguenza, i ricercatori hanno studiato una serie di casi speciali di problemi di apprendimento per rinforzo.
Quando l’ambiente è completamente osservato, chiamiamo il problema di apprendimento per rinforzo un processo decisionale di Markov. Quando lo stato non dipende dalle azioni precedenti, lo chiamiamo contextual bandit problem. Quando non esiste uno stato, ma solo un insieme di azioni disponibili con ricompense inizialmente sconosciute, abbiamo il classico multi-armed bandit problem.