Paithon Book Paithon Book
Esegui il codice

Auto-supervisione: il segnale è già nei dati#

Una fila di tessere come le parole di una frase, con una tessera mancante che una mano sta rimettendo al suo posto. Una fila di tessere come le parole di una frase, con una tessera mancante che una mano sta rimettendo al suo posto.

Wilson Taylor studiava giornalismo, non calcolatori, e nel 1953 aveva un problema pratico: misurare quanto un testo sia facile da leggere. Le formule in circolazione contavano sillabe e lunghezza delle frasi, e a lui non convincevano. Propose allora un metodo diverso e quasi brutale [Tay53]: prendere il testo, cancellare una parola ogni tante e darlo da completare a dei lettori. Più parole indovinavano, più quel testo era prevedibile per loro, e quindi facile. Chiamò la procedura cloze, dalla chiusura percettiva di cui parlavano gli psicologi della forma: la tendenza a completare da sé una figura interrotta.

Taylor misurava i testi, e per farlo metteva alla prova i lettori. Sessantasei anni dopo, lo stesso identico gioco (coprire una parola e farla indovinare) è diventato il modo in cui si addestrano i modelli di linguaggio, e gli autori di BERT lo dicono in chiaro, rimandando proprio a Taylor: quel loro esercizio, scrivono, in letteratura si chiama compito cloze [DCLT19]. Nel mezzo sono cambiati chi lo fa e a che scopo, non l’esercizio. Non si mette più alla prova il lettore, lo si fabbrica.

Il gioco di Taylor è la prima metà della risposta alla domanda con cui si sono congedati i modelli a energia, e la stessa mossa è già comparsa in quattro campi (il linguaggio, la visione, l’audio, la visione insieme al linguaggio), più un quinto, i modelli del mondo, che viene subito dopo. Ogni volta aveva il pretesto che serviva lì ed era descritta nel lessico di quel campo; oggi regge il pre-addestramento dei modelli di linguaggio, di visione e di parlato più usati. Che cosa hanno in comune quei cinque casi, e perché funzionano senza che nessuno etichetti niente?

Un compito la cui risposta è già nei dati#

Il nome è apprendimento auto-supervisionato, e la definizione, che Imparare a vedere senza etichette ha già dato per le immagini, sta in una riga: si costruisce un compito, il pretesto (pretext task), il cui bersaglio si ricava dal dato con un’operazione meccanica, senza che nessuno lo annoti. Risolvere il pretesto non interessa a nessuno; interessa la rappresentazione che il modello deve costruirsi per riuscirci.

La prima differenza con l’apprendimento supervisionato dei capitoli precedenti sta in chi scrive la risposta giusta. Là la scriveva una persona, esempio per esempio; qui la si ricava dal dato stesso: quale parola avevo coperto, quale pezzo di immagine avevo ritagliato, quale fotogramma viene dopo. Nei modelli che indovinano la parola coperta o la parola successiva il resto non cambia: la rete è quella del supervisionato, la perdita è la stessa cross-entropia, e il bersaglio prende il posto dell’etichetta. Nei metodi che confrontano due versioni della stessa immagine cambiano invece anche la perdita e l’architettura, ed è la materia delle quattro famiglie. In tutti i casi la risposta c’era già, e la si è solo nascosta per un momento.

Detta così sembra un trucco: che cosa resta da imparare, da una risposta che si conosceva già? Lo dice la quantità di informazione che il bersaglio può portare.

Quanta informazione porta una risposta#

Le tre grandi famiglie di apprendimento (supervisionato, per rinforzo, auto-supervisionato) si distinguono di solito per come sono fatte. Conviene invece guardarle da un’altra parte: per quanto dice la risposta con cui il modello si corregge. Non quanto è giusta: quanto è grande.

Ci sono tre modi di imparare a riconoscere gli uccelli.

Nel primo, qualcuno ti mostra una fotografia e ti dice una parola: «cardellino». Hai imparato qualcosa, ma quella parola è tutto quello che hai ricevuto per quella fotografia: una parola sola, scelta da un elenco di nomi che qualcuno ha compilato prima.

Nel secondo, ti mostrano la stessa fotografia con mezza immagine coperta e ti chiedono di disegnare quello che manca. Adesso la risposta giusta è tutta la metà nascosta e non una parola: con la forma del becco, il colore delle ali, il ramo che continua, l’ombra che cade dalla parte giusta. Per riempire quel buco devi aver capito parecchio, e ogni singolo dettaglio che indovini o sbagli ti dice qualcosa.

Nel terzo, giri tutto il giorno in un bosco a osservare uccelli e la sera qualcuno ti dice: «oggi hai fatto bene». Punto. È stata una giornata intera, e di ritorno hai avuto una frase sola, che vale per tutto. Fosse durata un’ora, o una settimana, la frase sarebbe stata comunque una. Quali degli sguardi che hai dato erano quelli buoni? Nessuno te lo dice.

La fotografia con la sua parola è l’apprendimento supervisionato. La giornata nel bosco è l’apprendimento per rinforzo. Il buco da riempire è l’auto-supervisione, ed è il solo dei tre in cui la correzione che ricevi è grande quanto la cosa che stai guardando.

La quantità da guardare è l’informazione portata dal bersaglio, cioè dalla risposta corretta su cui si calcola la perdita. Una scelta fra \(K\) possibilità porta in media al più \(\log_2 K\) bit, che è l’entropia del caso equiprobabile e il tetto di tutti gli altri, e la ricava Teoria dell’informazione.

Da qui tre conti, e sono conti di tetto, non di sostanza:

  • un’etichetta su \(K = 1000\) classi porta al più \(\log_2 1000 \approx 10\) bit, e li porta per immagine;

  • un token su un vocabolario di \(V = 128\,000\) porta al più \(\log_2 128\,000 \approx 17\) bit, ma li porta per token, e un esempio di pre-addestramento è una finestra di migliaia di token;

  • una ricompensa binaria porta al più 1 bit, e lo porta per episodio, cioè per l’intera traiettoria, comunque lunga sia.

L’ultima riga è quella che decide tutto, e non per la dimensione del numero ma per il denominatore: nel supervisionato e nell’auto-supervisionato il bersaglio si misura per esempio o per token, nel rinforzo per episodio. Un episodio può essere una mossa oppure diecimila.

L’unità di misura è il bit, quella del gioco delle venti domande della teoria dell’informazione: una risposta scelta fra mille possibilità si indovina con dieci domande da sì o no (mille, cinquecento, duecentocinquanta, e avanti a dimezzare), quindi vale al più dieci bit; un vinto-o-perso ne vale uno.

from math import log2

# Quanta informazione porta AL PIU' il bersaglio, cioe' la risposta giusta su
# cui il modello si corregge. E' un tetto: quanto ne passa davvero e' un'altra
# domanda.

def bit_per_scelta(n):
    """Una scelta fra n possibilita' equiprobabili vale log2(n) bit."""
    return log2(n)

CLASSI = 1000         # ImageNet: una foto, una categoria fra mille
VOCABOLARIO = 128000  # un tokenizzatore di oggi
FINESTRA = 8192       # token in un esempio di pre-addestramento
PASSI = 10000         # passi di una partita prima del verdetto

etichetta = bit_per_scelta(CLASSI)
token     = bit_per_scelta(VOCABOLARIO)
testo     = token * FINESTRA
rinforzo  = bit_per_scelta(2)   # vinto o perso: una risposta binaria

print(f"{'compito':34s} {'tetto in bit':>16s}")
print("-" * 51)
print(f"{'etichetta su ' + str(CLASSI) + ' classi, per foto':34s} "
      f"{etichetta:16.1f}")
print(f"{'un token su ' + str(VOCABOLARIO):34s} {token:16.1f}")
print(f"{'una finestra di ' + str(FINESTRA) + ' token':34s} {testo:16.1f}")
print(f"{'vinto o perso, a fine partita':34s} {rinforzo:16.1f}")
print()
print(f"la finestra di testo vale {testo/etichetta:,.0f} etichette".replace(",", "."))
print(f"e {testo/rinforzo:,.0f} verdetti di fine partita".replace(",", "."))
print(f"spalmato sui {PASSI} passi della partita, il verdetto")
print(f"vale {rinforzo/PASSI:.4f} bit per passo")
compito                                tetto in bit
---------------------------------------------------
etichetta su 1000 classi, per foto             10.0
un token su 128000                             17.0
una finestra di 8192 token                 138983.7
vinto o perso, a fine partita                   1.0

la finestra di testo vale 13.946 etichette
e 138.984 verdetti di fine partita
spalmato sui 10000 passi della partita, il verdetto
vale 0.0001 bit per passo

L’etichetta e il verdetto di fine partita, la prima riga e l’ultima, distano appena un fattore dieci. Il salto sta nella terza riga, il brano di testo che il modello legge in un colpo solo, ottomila pezzetti di parola: vale quasi quattordicimila etichette e centotrentanovemila verdetti di fine partita, come mostrano i due rapporti appena calcolati. Un brano che nessuno ha annotato offre quindi un tetto di informazione migliaia di volte più alto di una fotografia con la sua etichetta; quanto di quel tetto il modello usi davvero è un’altra domanda.

Senza una precisazione, però, questi numeri prometterebbero più di quanto possono mantenere.

Le quattordicimila etichette e i centotrentanovemila verdetti dicono quanto è grande la risposta giusta, ma tacciono su quanto il modello ne abbia capito. Sono il diametro del tubo, non l’acqua che ci passa.

E il diametro è già generoso. Il conto tratta ogni dettaglio della metà coperta come una sorpresa, e sorprese non sono: se il ramo si vede per un tratto, l’altro tratto lo disegni senza pensarci, e da quel pezzo non hai imparato niente.

Anche dove la sorpresa c’è, chi riempie il buco può cavarne pochissimo: sfuma tutto, azzecca una macchia del colore giusto e passa oltre. La risposta era grande, quello che ha imparato è piccolo. E all’opposto, un solo «hai sbagliato» detto al momento giusto può insegnare più di mille foto etichettate male; solo che il momento giusto è la parte difficile, perché nel bosco quella frase arriva la sera, quando gli sguardi da correggere sono ormai centinaia.

Il confronto regge sui rapporti grossi, quelli da dieci volte in su, e sulla tendenza; non sui decimali. E va usato per quello: dice dove c’è spazio per imparare, non quanto si impara davvero.

Tre precisazioni, e sono tutte nella stessa direzione.

La prima: \(\log_2 K\) è l’entropia della distribuzione uniforme, cioè un massimo. Le etichette reali non sono uniformi e i token nemmeno: l’entropia condizionata di un token dato il contesto è molto minore di \(\log_2 V\), ed è il limite sotto cui la perdita di un modello linguistico, misurata su testo che non ha visto, non può scendere. Quindi i numeri della tabella sono tetti, e il tetto vero è più basso. Quanto più basso lo dice una stima classica: per l’inglese Shannon dà fra \(0{,}6\) e \(1{,}3\) bit per carattere [Sha51], e con circa quattro caratteri per token sono fra \(2{,}4\) e \(5{,}2\) bit per token invece di \(17\). La finestra da \(8192\) token porta allora fra \(8192 \cdot 2{,}4 \approx 2 \cdot 10^4\) e \(8192 \cdot 5{,}2 \approx 4 \cdot 10^4\) bit, non \(1{,}4 \cdot 10^5\): un tetto da tre a sette volte più basso, che resta di quattro ordini di grandezza sopra il bit della ricompensa binaria.

La seconda: l’informazione del bersaglio è un limite superiore sull’informazione che il gradiente può trasportare, non una misura di ciò che la rete acquisisce. Fra le due c’è di mezzo l’ottimizzazione, l’architettura e la scelta del pretesto, e quanto quella scelta pesi lo ha già mostrato Imparare a vedere senza etichette: con le trasformazioni sbagliate un modello risolve il pretesto per scorciatoia e non impara niente. Una misura di quanto la rete ha davvero acquisito esiste, ed è la lunghezza di descrizione prequenziale di Capire è accorciare: quanti bit si risparmiano, rispetto al codice uniforme, prevedendo i dati con un modello che li impara mentre li legge.

La terza, che tornerà nel dibattito sul rinforzo: la povertà del segnale nel rinforzo non è solo una questione di quantità. Un bit per episodio va anche assegnato, cioè distribuito fra i passi che hanno contribuito, e quel problema (l’assegnazione del credito) è duro in modo indipendente dal numero di bit.

La torta, e la parola che ci hanno cambiato dentro#

L’argomento ha una forma celebre, e la sua storia dice qualcosa sul campo.

Il capitolo sui modelli a energia l’ha già citata di passaggio, per la sua ciliegina; eccola per intero. Nel dicembre del 2016, a un convegno, Yann LeCun mostra una diapositiva con una fetta di torta e una frase: «se l’intelligenza è una torta, il grosso della torta è l’apprendimento non supervisionato, la glassa è l’apprendimento supervisionato, e la ciliegina è l’apprendimento per rinforzo» [LeC16]. L’immagine fa il giro del mondo, e la ciliegina diventa un modo di dire.

All’ISSCC del 2019, un convegno sui circuiti integrati, LeCun mostra la stessa diapositiva con una parola cambiata: dove diceva «non supervisionato» adesso dice «auto-supervisionato». Il cambio è di sostanza, e la ragione l’ha scritta lui stesso, insieme a Ishan Misra, in un testo del 2021 che è la formulazione più chiara di tutta questa faccenda [LM21]: «non supervisionato» è un termine mal definito e fuorviante, perché suggerisce che l’apprendimento non usi supervisione affatto, mentre in realtà l’auto-supervisione «usa molti più segnali di correzione di quanti ne usino i metodi supervisionati e per rinforzo standard».

Quella frase dice in parole quello che il conto sull’informazione del bersaglio dice in numeri, e la dice la persona che ha disegnato la torta.

Il nome tradizionale, del resto, non sparisce: resta giusto per il raggruppamento, la riduzione della dimensionalità e la stima di densità, che ottimizzano una funzione del solo dato invece di prevederne una parte dal resto, e la distinzione, con le sue zone di confine, sta in Valutare un raggruppamento.

Una nota sulla fonte

Della diapositiva del 2016 circolano moltissime riproduzioni e la frase è riportata in modo concorde, ma le lastre originali non sono più reperibili online. L’argomento non poggia su di esse: poggia sul testo del 2021, che è firmato, datato e leggibile da chiunque. La torta serve come immagine e come cronologia, non come prova.

Cinque pretesti, un solo meccanismo#

Pretesti se ne sono già costruiti parecchi, senza chiamarli per nome, e messi in fila stanno così. Le prime quattro righe sono strada percorsa; l’ultima è quella che viene subito dopo.

dove

il pretesto

che cosa se ne tiene

GPT, BERT, T5: tre esercizi di pre-addestramento

coprire una parola, o indovinare la prossima

un modello di linguaggio

Imparare a vedere senza etichette

ritrovare il ritaglio gemello, oppure ricostruire i tre quarti coperti

un encoder di immagini

Imparare senza etichette, nell’audio

indovinare il tratto di parlato mascherato

rappresentazioni del suono

Allineare due spazi

riappaiare l’immagine con la sua didascalia

uno spazio comune fra vista e lingua

World model

prevedere come continua la scena

un simulatore interno

Cinque pretesti diversi e un meccanismo solo, con il linguaggio che ci arriva per due strade, la parola coperta e la parola successiva. La colonna di mezzo cambia sempre; quella di destra dice quasi sempre la stessa cosa, una rappresentazione: il vettore \(\mathbf{h} = f_\theta(\mathbf{x})\) che la parte di rete chiamata encoder, \(f_\theta\), calcola da ogni dato \(\mathbf{x}\), e che i compiti successivi usano come ingresso. L’encoder è quello che si tiene quando il pretesto si scarta. Fa eccezione il modello di linguaggio che indovina la parola successiva: lì il pretesto coincide con l’uso, perché generare un testo vuol dire proprio prevederne la parola dopo, e del modello si tiene tutto, compresa la parte che fa la previsione.

Una riga della tabella sta sul confine. Nell’allineamento fra immagini e didascalie la risposta giusta non l’ha ricavata una regola meccanica: la didascalia l’ha scritta una persona, anche se per altri scopi, e la letteratura parla di supervisione dal linguaggio naturale, o supervisione debole, cioè di una correzione che arriva dalle parole di qualcuno invece che dalla trasformazione del dato. Sta nella tabella perché il meccanismo con cui si addestra, ritrovare la coppia giusta in mezzo alle sbagliate, è lo stesso dei metodi contrastivi.

C’è poi un sesto caso: l’organismo vivo. Nelle neuroscienze teoriche c’è un modo di guardare al cervello, l’inferenza attiva, secondo cui percepire e agire sono due facce dello stesso mestiere: indovinare che cosa c’è là fuori, e muoversi per indovinare meglio; gli è dedicata Inferenza attiva. Per gli autori che l’hanno messa in sistema, imparare «non è fondamentalmente diverso dalla percezione; opera semplicemente su una scala di tempo più lenta» [PPF22].

In un essere vivente, secondo questa teoria, non esiste una fase di addestramento separata dall’uso, con le etichette da una parte e il lavoro dall’altra: c’è un processo unico che va avanti sempre, e il bersaglio su cui si corregge è il segnale successivo. La teoria è una delle ipotesi in campo, e come tale va presa; se ha ragione, l’auto-supervisione sarebbe anche il modo in cui impara un organismo, e l’ingegneria ci sarebbe arrivata per un’altra strada.

La quantità che l’organismo cerca di tenere bassa, il divario fra quello che si aspetta e quello che gli arriva, in quella letteratura circola sotto più nomi che non sono sinonimi. La sorpresa è quanto era improbabile, per il modello che l’organismo ha del mondo, il segnale che gli è arrivato; la teoria non la sa calcolare, e al suo posto minimizza l’energia libera variazionale, un numero che le fa da tetto e che invece si calcola. Con l’energia dei modelli a energia, il voto dato a una risposta, ha poco da spartire oltre al nome. L’errore di predizione e l’entropia, che è la sorpresa media, ne discendono sotto ipotesi che Inferenza attiva scrive per esteso.

Il capitolo prosegue in quattro sezioni. Le quattro famiglie mettono in fila i modi di fabbricare un pretesto come risposte a una domanda sola: che cosa impedisce al modello di rispondere sempre la stessa cosa. Il collasso e la misura guardano che cosa va storto, e come si capisce se ha funzionato quando il punteggio del pretesto non dice niente. Capire è accorciare affronta la domanda più scomoda, perché indovinare la parola coperta dovrebbe insegnare anche qualcos’altro, con la risposta che una parte del campo dà: prevedere bene obbliga a comprimere, e comprimere obbliga a cogliere la struttura dei dati. Infine la ciliegina, il dibattito su quanto conti l’apprendimento per rinforzo se il grosso lo fa già l’auto-supervisione: è la parte in cui ricercatori autorevoli non sono d’accordo fra loro, e ogni posizione vi è riportata col nome di chi l’ha sostenuta.

Da ricordare

  • Auto-supervisione vuol dire inventarsi un esercizio la cui risposta giusta è già dentro i dati: coprire una parola e farla indovinare, ritagliare un pezzo di foto e farlo ritrovare. Nessuno scrive la risposta, si nasconde e basta. Di solito l’esercizio si butta via e si tiene quello che il modello ha dovuto capire per farlo; quando l’esercizio è indovinare la parola dopo, invece, si tiene tutto, perché scrivere un testo vuol dire proprio quello.

  • Il gioco è più vecchio dei calcolatori: nel 1953 serviva a misurare quanto un testo fosse facile da leggere. Oggi serve a fabbricare chi lo legge.

  • La differenza che conta con gli altri modi di imparare è quanto è grande la correzione che il modello riceve. Una parola sola («cardellino») per una fotografia intera; oppure mezza fotografia da ricostruire, cioè migliaia di dettagli; oppure un «bravo» a fine giornata, che vale per tutta la giornata.

  • Il conto lo fa per bene un programma che si può rilanciare, e lo fa su un caso solo: il brano di testo che il modello legge in un colpo, ottomila pezzetti di parola. Quel brano vale quasi quattordicimila parole scritte sotto una foto e centotrentanovemila «bravo» di fine giornata, cioè quattro zeri di differenza da una parte e cinque dall’altra. La parola e il «bravo», invece, distano appena dieci volte.

  • Attenzione a non chiedere troppo a quei numeri: dicono quanto è grande la risposta, non quanto il modello ne ha capito. Sono il diametro del tubo, non l’acqua che ci passa.

  • L’immagine famosa è la torta di Yann LeCun: il grosso è l’auto-supervisione, la glassa è imparare dalle etichette, la ciliegina è imparare per tentativi e premi. Nel 2016 la fetta grossa si chiamava «non supervisionata»; è LeCun stesso ad averle cambiato nome, perché di supervisione ce n’è, e ce n’è molta di più.

Da ricordare

  • L’apprendimento auto-supervisionato costruisce un pretesto il cui bersaglio è ricavabile dal dato con un’operazione meccanica, e ne conserva l’encoder \(f_\theta\), non il compito; nel modello di linguaggio autoregressivo il pretesto coincide con l’uso, e si conserva anche la testa di previsione. Nel linguaggio e nei metodi a maschera la perdita è la cross-entropia del supervisionato e cambia solo chi produce il bersaglio; nei metodi a due viste cambiano anche perdita e architettura.

  • Il criterio discriminante è l’informazione del bersaglio, e soprattutto il suo denominatore: \(\log_2 K \approx 10\) bit per immagine per un’etichetta su \(K = 1000\) classi; \(\log_2 V \approx 17\) bit per token per un vocabolario da \(V = 128\,000\), cioè circa \(1{,}4 \cdot 10^5\) bit per una finestra da 8192 token; 1 bit per episodio per una ricompensa binaria, indipendentemente dalla lunghezza dell’episodio.

  • Sono limiti superiori in ipotesi uniforme, quindi tetti e non misure: l’entropia condizionata reale è più bassa (con le stime di Shannon per l’inglese, \(0{,}6\)-\(1{,}3\) bit per carattere, la finestra scende fra \(2 \cdot 10^4\) e \(4 \cdot 10^4\) bit), e fra informazione del bersaglio e informazione acquisita ci sono ottimizzazione, architettura e qualità del pretesto. Il confronto vale sugli ordini di grandezza.

  • Nel rinforzo alla scarsità si somma un problema indipendente, l’assegnazione del credito fra i passi di una traiettoria: pochi bit, e per giunta da distribuire.

  • La torta di LeCun [LeC16] data la cornice al 2016 e la sua revisione al 2019, quando unsupervised diventa self-supervised. La motivazione è scritta in [LM21]: «unsupervised» è fuorviante perché l’auto-supervisione «usa molti più segnali di correzione» del supervisionato e del rinforzo.

  • Il meccanismo è già comparso in quattro ambiti (linguaggio, che ci arriva per due strade, visione, audio, visione e linguaggio, dove però la didascalia è una supervisione debole); il quinto, i world model, viene subito dopo. Qui non si ripetono: si mettono sotto uno stesso schema.