Auto-supervisione: il segnale è già nei dati#
Nel 1953 Wilson Taylor, che studiava giornalismo e non calcolatori, 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.
Quella mossa torna in cinque campi diversi, ogni volta con il pretesto che serviva lì e ogni volta raccontata come una cosa di quel campo, e oggi regge il pre-addestramento di quasi tutti i modelli di cui si parla. Qui si guarda che cosa hanno in comune.
Un compito la cui risposta è già nei dati#
Il nome è apprendimento auto-supervisionato, e la definizione sta in una riga: ci si inventa un compito la cui risposta corretta è ricavabile dai dati stessi, senza che nessuno la scriva. Un compito così si chiama un pretesto, e il nome è onesto: risolverlo non interessa a nessuno. Interessa quello che il modello è costretto a capire per riuscirci, e che gli resta addosso quando il pretesto si butta via.
La differenza con l’apprendimento supervisionato dei capitoli precedenti non sta nell’algoritmo, che è lo stesso, e nemmeno nella rete, che è la stessa. Sta in chi scrive la risposta giusta. Là la scriveva una persona, una per esempio, a mano; qui la si ricava dal dato con un’operazione meccanica: quale parola avevo coperto, quale pezzo di immagine avevo ritagliato, quale fotogramma viene dopo. La risposta c’era già, e noi l’abbiamo solo nascosta per un momento.
Detta così sembra un trucco contabile. Non lo è, e la ragione è aritmetica.
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.
Il conto lo facciamo fare al calcolatore, così si può rifare e discutere.
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
Le due righe da confrontare non sono la prima e l’ultima, che stanno in un rapporto di dieci a uno: sono la terza e l’ultima. La 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, e sono i due rapporti che il programma stampa in fondo. È la ragione per cui una fotografia etichettata «vale» poco e ce ne vogliono milioni, mentre una pagina di testo che nessuno ha mai guardato può bastare a insegnare qualcosa.
Adesso però va detta la cosa che rende il conto onesto, perché senza di essa quei numeri prometterebbero più di quanto possono mantenere.
Quei numeri dicono quanto è grande la risposta giusta, non quanto il modello ne ha 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 verso cui un buon modello linguistico spinge la propria perdita, senza poterlo scendere. Quindi i numeri della tabella sono tetti, e il tetto vero è più basso.
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.
La terza, ed è quella che il dibattito sul rinforzo userà: 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.
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.
Nel 2019, alla stessa diapositiva, LeCun cambia una parola: dove diceva «non supervisionato» adesso dice «auto-supervisionato». Non è una limatura. 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 è il conto sull’informazione del bersaglio, detto in una riga e dalla persona che l’ha disegnata, la torta.
Conviene essere precisi su che cosa quell’obiezione colpisce, perché «non supervisionato» resta una parola giusta in un caso e fuorviante nell’altro. Colpisce l’uso del termine per i metodi che prevedono una parte del dato a partire dal resto: là un segnale di correzione c’è, ed è quello che rende l’espressione fuorviante. Non colpisce i metodi che non prevedono niente e si limitano a descrivere la forma dei dati, cioè il raggruppamento, la riduzione della dimensionalità e la stima di densità: lì la supervisione manca davvero, e il nome tradizionale non inganna nessuno. La distinzione è tenuta esplicita in Valutare un raggruppamento; qui basti sapere che dei due usi solo il primo è quello contestato, ed è l’unico che si evita.
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#
Se l’auto-supervisione è il paradigma, di 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 |
|---|---|---|
coprire una parola, o indovinare la prossima |
un modello di linguaggio |
|
ritrovare il ritaglio gemello, oppure ricostruire i tre quarti coperti |
un encoder di immagini |
|
indovinare il tratto di parlato mascherato |
rappresentazioni del suono |
|
riappaiare l’immagine con la sua didascalia |
uno spazio comune fra vista e lingua |
|
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 è sempre la stessa cosa, una rappresentazione, cioè il riassunto interno che il modello si costruisce e che tutto il resto usa come materia prima. Il pezzo di rete che produce quel riassunto si chiama encoder, ed è esattamente quello che si tiene quando il pretesto si butta.
C’è poi un sesto caso, che non è un capitolo ma un organismo vivo. Nelle neuroscienze teoriche c’è un modo di guardare al cervello, l’inferenza attiva, secondo cui percepire e agire non sono due mestieri distinti ma lo stesso mestiere: indovinare che cosa c’è là fuori, e muoversi per indovinare meglio; gli è dedicata Inferenza attiva. Qui serve una frase sola, perché dice del paradigma qualcosa che nessun sistema artificiale può dire: imparare «non è fondamentalmente diverso dalla percezione; opera semplicemente su una scala di tempo più lenta» [PPF22].
In un essere vivente, cioè, non esiste una fase di addestramento separata dall’uso, con le etichette da una parte e il lavoro dall’altra: c’è una cosa sola che va avanti sempre, e il bersaglio su cui si corregge è il segnale successivo. L’auto-supervisione non è quindi un espediente ingegneristico trovato quando le etichette sono finite: è il modo in cui funziona l’unico sistema che sappiamo imparare davvero, e che noi abbiamo raggiunto per un’altra strada.
Una nota di vocabolario, per non inciampare più avanti. Quel bersaglio, cioè il divario fra quello che l’organismo si aspetta e quello che gli arriva, in quella letteratura circola sotto molti nomi: minimizzare la sorpresa, l’entropia, l’errore di predizione oppure l’energia libera variazionale. Non sono la stessa quantità, e chi le tratta come sinonimi si perde il pezzo centrale di quella teoria: l’energia libera è un limite superiore sulla sorpresa, e le altre due ne discendono sotto ipotesi che vanno dette. Inferenza attiva scrive come stanno fra loro. Quale nome si usi dipende poi dal mestiere di chi parla: «errore di predizione» dove si spiegano segnali cerebrali, «energia libera variazionale» dove si fa apprendimento automatico.
Da qui il capitolo prosegue in quattro sezioni. Prima le famiglie: i quattro modi di fabbricare un pretesto, letti tutti come risposte diverse a una sola domanda, che è come si impedisce al modello di rispondere sempre la stessa cosa. Poi il collasso e la misura: che cosa va storto, e come si fa a sapere se ha funzionato quando non c’è nessun punteggio da guardare. Poi capire è accorciare, che affronta la domanda che le prime due si lasciano alle spalle, cioè perché tutto questo funzioni: la risposta che una parte del campo dà è che prevedere bene obbliga a comprimere, e comprimere obbliga a capire. Infine la ciliegina, cioè il dibattito su quanto conti l’apprendimento per rinforzo rispetto alla torta dell’auto-supervisione, che è la parte in cui persone molto autorevoli non sono d’accordo fra loro, e qui gli argomenti si riportano con i loro nomi giusti e basta.
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. L’esercizio si butta via; quello che il modello ha dovuto capire per farlo si tiene.
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, non il compito. Algoritmo e architettura restano quelli del supervisionato: cambia chi produce il bersaglio.
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, 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 paradigma è già istanziato in cinque ambiti (linguaggio, che ci arriva per due strade, visione, audio, visione-linguaggio, e i world model, che vengono subito dopo): qui non si ripetono, si unificano.