La via di LeCun: predire nello spazio delle idee#
Il 27 giugno 2022 Yann LeCun deposita su OpenReview (la piattaforma dove di solito si caricano gli articoli in attesa di revisione) un documento di 62 pagine intitolato A Path Towards Autonomous Machine Intelligence [LeC22]. Già il sottotitolo è insolito: «versione 0.9.2», come un software non ancora finito. E insolito è tutto il resto: non è un paper di risultati, con esperimenti e tabelle, ma un documento di posizione (la visione dell’autore su come costruire macchine intelligenti nei prossimi dieci anni) messo online apposta perché chiunque potesse commentarlo, criticarlo, smontarlo pubblicamente. Un premio Turing che espone il proprio programma di ricerca, in bozza dichiarata, alle obiezioni di tutti: in un’epoca in cui si tende a mostrare solo ciò che già funziona, è una mossa da notare.
Dentro c’è il disegno di una macchina autonoma, fatta di sei pezzi che si passano il lavoro. La percezione guarda i sensori e ricostruisce com’è messo il mondo adesso. Il world model, che è il cuore del progetto, dice come quel mondo andrà avanti, anche se l’azione è soltanto immaginata. Il modulo di costo misura quanto la situazione sia sgradita all’agente: una parte è scritta una volta per tutte da chi progetta e l’esperienza non la cambia (l’analogo del dolore e del piacere), l’altra si impara ed è un critico, cioè una rete il cui unico mestiere è prevedere quanto costerà il seguito, così che l’agente sappia se una mossa conviene senza aspettarne le conseguenze. Poi ci sono l’attore, che propone le azioni, la memoria a breve termine, che tiene il filo di quel che è appena successo, e il configuratore, che sovrintende e regola gli altri a seconda del compito.
Un agente così può agire in due modi. Di riflesso, con la percezione che pilota direttamente l’azione; oppure di testa, usando il world model per provare le sequenze di azioni e scegliere quella dal costo previsto più basso. È un’eco della distinzione fra pensiero veloce e pensiero lento resa celebre da Daniel Kahneman, che LeCun richiama esplicitamente.
Sei pezzi sono tanti, e in gran parte sono ancora sulla carta. Ma tutto il progetto sta o cade su una domanda sola: come si addestra il world model? La risposta di LeCun è: guardando, come il neonato dell’inizio del capitolo. Enormi quantità di video senza che nessuno ci abbia scritto sopra niente, e un solo esercizio, indovinare ciò che viene dopo; la correzione arriva da sé, perché il futuro arriva. È l’apprendimento auto-supervisionato di cui parlava l’apertura del capitolo, e fin qui non c’è niente di nuovo: anche i mondi in miniatura di Ha e Schmidhuber facevano qualcosa di simile. La rottura è nel dove si fa la previsione.
Perché non predire i pixel#
Anche nei mondi in miniatura la previsione non avveniva sui puntini dello schermo: avveniva sui 32 numeri in cui V, la rete che guardava, riassumeva il fotogramma. Quel riassunto, però, era stato addestrato a rimettere insieme i puntini: era bravo nella misura in cui il disegno rifatto somigliava all’originale. LeCun propone di tagliare anche quel cordone. Il futuro, osserva, ha due proprietà che rendono una pessima idea provare a disegnarlo: è molteplice (da uno stesso presente possono seguire tanti futuri diversi, tutti plausibili) ed è pieno di dettagli irrilevanti. Il suo esempio ricorrente è un albero in un video: nessun modello potrà mai prevedere la posizione esatta di ogni foglia mossa dal vento, e soprattutto non serve a niente provarci.
Un bicchiere è in bilico sul bordo del tavolo. «Cadrà e andrà in pezzi»: lo prevedi in un decimo di secondo, e questa previsione ti basta per allungare la mano. Ora prova invece a prevedere la fotografia esatta della scena tra due secondi: dove sarà ogni scheggia, come si rifletterà la luce su ogni frammento, che forma avrà la macchia d’acqua sul pavimento. Impossibile, e del tutto inutile: nessuna decisione sensata dipende dalla forma della terza scheggia. Un modello costretto a prevedere l’immagine pixel per pixel ha esattamente questo problema, due volte. Primo: spreca quasi tutta la sua capacità a studiare dettagli che non contano nulla. Secondo: siccome i futuri possibili sono tanti (le schegge possono disporsi in mille modi) e lui deve produrre una immagine sola, quella che gli costa meno errori è la media di tutti i futuri; una foto fantasma, sfocata, in cui mille rotture diverse si sovrappongono. La proposta di LeCun: non prevedere la foto, prevedere il succo («bicchiere in pezzi sul pavimento, acqua sparsa»), cioè prevedere nello spazio delle idee, dove i mille futuri diversi nei dettagli diventano un futuro solo, quello che conta.
Un futuro solo, però, non sempre basta. La mano l’hai allungata: se il bicchiere lo prendi al volo, il succo giusto diventa un altro, e non per una scheggia in più o in meno. Nel disegno del 2022 c’è una manopola apposta per scegliere quale dei due esiti raccontare; nei sistemi costruiti finora quella manopola non c’è, e la risposta resta una sola.
Se si addestra un predittore \(g\) a minimizzare l’errore quadratico \(\mathbb{E}\,\lVert \mathbf{y} - g(\mathbf{x}) \rVert^2\) su un futuro \(\mathbf{y}\) intrinsecamente stocastico, l’ottimo è la media condizionata \(g^*(\mathbf{x}) = \mathbb{E}[\mathbf{y} \mid \mathbf{x}]\): quando i modi della distribuzione sono molti e distinti, la loro media è un’immagine sfocata che non corrisponde a nessun futuro reale; è la ragione per cui la predizione video nei pixel produce fantasmi lattiginosi. La proposta di [LeC22] è la JEPA (Joint-Embedding Predictive Architecture): due encoder mappano contesto e target nello spazio delle rappresentazioni, \(\mathbf{s}_x = f_\phi(\mathbf{x})\) e \(\mathbf{s}_y = \bar{f}_{\bar{\phi}}(\mathbf{y})\) (la barra dice che il secondo encoder è una copia dell’altro tenuta indietro, e la sezione sul collasso spiega perché), e un predictor \(g_\theta\) opera interamente lì:
dove \(\mathbf{z}\) è una variabile latente che assorbe la molteplicità dei futuri (quale dei tanti esiti plausibili si è realizzato) e \(\phi\), \(\bar{\phi}\), \(\theta\) sono i parametri dei due encoder e del predictor. L’energia della coppia è la seconda quantità, \(E^\star\) (nel documento del 2022 si chiama energia libera e si scrive \(F\), ma quella lettera nella sezione sull’inferenza attiva farà un altro mestiere, l’energia libera variazionale, che misura un’altra cosa): si sceglie la \(\mathbf{z}\) che spiega meglio il futuro osservato, e quel minimo misura la compatibilità tra \(\mathbf{x}\) e \(\mathbf{y}\). Il collegamento con il capitolo sui modelli a energia è letterale: una JEPA è un modello a energia non normalizzato; la compatibilità tra presente e futuro è l’errore di predizione nello spazio latente, l’inferenza è la solita \(\arg\min\) (qui, il minimo su \(\mathbf{z}\)), e della funzione di partizione non c’è alcun bisogno.
Una precisazione, perché altrimenti quel \(\min_{\mathbf{z}}\) resta un debito: \(\mathbf{z}\) è la forma generale dello schema proposto nel 2022, non la ricetta che poi è stata implementata. I due sistemi costruiti da Meta (I-JEPA per le immagini, V-JEPA per i video) istanziano il caso senza latente: il predictor è deterministico, \(g_\theta(\mathbf{s}_x)\), quindi \(E^\star(\mathbf{x}, \mathbf{y}) = E(\mathbf{x}, \mathbf{y})\) e non c’è alcun minimo da calcolare, né in addestramento né a inferenza. Quel poco di «quale futuro» che serve è passato al predictor come informazione esplicita (i token posizionali che dicono dove prevedere), non inferito come variabile nascosta: nei paper quella grandezza si chiama \(\mathbf{z}\) lo stesso, e la differenza è che gliela si passa invece di cercarla. Una JEPA con \(\mathbf{z}\) vero, capace di produrre più esiti plausibili invece di uno solo, resta al momento programma di ricerca.
La libertà nuova sta nell’encoder del target: poiché \(\mathbf{y}\) non va ricostruito ma solo rappresentato, \(\bar{f}\) può legittimamente buttare via informazione. I gradi di libertà imprevedibili e irrilevanti (le foglie, i riflessi) possono semplicemente non arrivare nello spazio in cui si calcola la loss: è una scelta d’architettura, non una speranza.
La Fig. 30.4 mette i due mondi uno sopra l’altro, e conviene sciogliere prima le parole che porta scritte dentro, perché da qui in poi tornano a ogni riga. Il contesto è la parte che il modello vede; il target (bersaglio) è la parte nascosta, quella su cui deve indovinare. Un encoder è la rete che guarda qualcosa e ne produce il riassunto; quel riassunto è una fila di numeri e si chiama embedding (in italiano sarebbe «immersione»: la scena è stata immersa in uno spazio fatto di numeri). Il predictor è la rete che, dal riassunto di quel che si vede, tira fuori il riassunto di quel che non si vede. Un decoder, invece, è la rete che dal riassunto ridisegna un’immagine intera, puntino per puntino. E la loss (in inglese «perdita») è il voto: il numero che misura quanto la risposta data si discosta da quella giusta, e che l’addestramento passa il tempo ad abbassare.
Una parola sulle parole, già che ci siamo. Riassunto, embedding, rappresentazione e «spazio delle idee», in questo capitolo, indicano la stessa cosa: la manciata di numeri in cui una rete ha condensato quello che ha guardato. Cambia il registro, non l’oggetto. Fa eccezione latente, che nei paper indica anche un’altra cosa: la variabile \(\mathbf{z}\), la manopola che non riassume niente di visto ma dice quale dei futuri possibili si è realizzato.
Fig. 30.4 Generativa contro JEPA: la prima predice il futuro nei pixel (e deve indovinare anche l’irrilevante), la seconda lo predice nello spazio delle rappresentazioni, dove l’irrilevante non è mai entrato.#
Adesso la figura si legge da sé. Nel pannello A il decoder deve tornare fino ai singoli puntini, e la loss lo punisce anche su ogni foglia che trema; nel pannello B la previsione parte dal contesto e arriva al target senza mai uscire dallo spazio delle rappresentazioni, che è lo spazio delle idee del titolo: i dettagli irrilevanti restano fuori dalla porta. Quello del pannello B è lo schema che dà il nome a tutta questa linea di ricerca: JEPA, Joint-Embedding Predictive Architecture, cioè «architettura che predice fra due riassunti»: la parola joint, congiunto, dice che i due riassunti vivono nello stesso spazio, ed è lì che si possono confrontare.
Il ritorno del collasso#
La trappola è la stessa del buttafuori pigro, e chi ha letto la sezione sull’energia come compatibilità sa già dove si nasconde. Quel buttafuori deve dare a ogni coppia un voto di compatibilità: là il voto si chiama energia, e più è basso più le due cose stanno bene insieme. E scopre presto che il modo più comodo di non sbagliare mai è dire sempre sì.
Qui la scorciatoia è la stessa. Se il voto premia soltanto la vicinanza fra il riassunto predetto e quello del bersaglio, la strada più comoda è appiattire il mondo, non capirlo: basta che i due encoder imparino a produrre sempre la stessa identica fila di numeri, qualunque cosa guardino. Predizione perfetta, voto pieno, energia zero dappertutto, e rappresentazioni che non distinguono un gatto da un lampadario. È il collasso, e per le JEPA è il pericolo numero uno, perché qui (a differenza dei modelli generativi, ancorati ai pixel veri) anche il bersaglio è prodotto da una rete che avrebbe tutto l’interesse a barare. Nel documento del 2022 LeCun indica la famiglia di rimedi che preferisce, quella già incontrata fra i modelli a energia: invece di fabbricare risposte sbagliate da bocciare, si toglie al modello la possibilità stessa di dare a tutto lo stesso riassunto, per esempio obbligandolo a tenerli diversi fra loro. Ma nei sistemi JEPA costruiti davvero da Meta la difesa concreta è un’altra, più semplice e più sottile.
L’allievo guarda la parte visibile della foto e prova a descrivere che cosa c’è nella parte coperta; l’insegnante, che vede la foto intera, scrive la descrizione giusta; il voto misura quanto le due descrizioni combaciano. Se allievo e insegnante potessero mettersi d’accordo, la truffa sarebbe immediata: rispondere entrambi, sempre, «boh» (descrizioni identiche, voti perfetti, e nessuno dei due che abbia mai guardato la foto). Il trucco che rompe la truffa è togliere all’insegnante ogni voce in capitolo: le lamentele sul voto non lo raggiungono mai. In gergo si dice che non riceve gradiente, cioè quella spinta a correggersi che dopo ogni voto torna indietro nella rete e le ritocca i numeri. Non potendo contrattare, l’insegnante non può accordarsi con l’allievo per abbassare l’asticella, e all’allievo non resta che inseguire le descrizioni dell’altro.
C’è poi una seconda accortezza: come insegnante si usa una copia lenta dell’allievo, non una seconda rete addestrata a parte ma l’allievo stesso com’era in media negli ultimi tempi, cioè i suoi numeri mescolati un pochino a ogni passo. Il dosaggio lo scelgono i ricercatori, e nel sistema vero è quattro parti su mille: se un numero dell’allievo passa da 10 a 20, quello dell’insegnante non salta a 20, diventa 10,04, cioè copre quattro millesimi dei dieci di divario. Per raggiungerlo davvero gli servono centinaia di passi, e nel frattempo il bersaglio cambia idea solo al ritmo a cui l’allievo migliora davvero; verso la fine il dosaggio scende a zero, e l’insegnante non cambia più idea affatto. Delle due accortezze, quella che impedisce la truffa è l’insegnante senza voce in capitolo: su un esercizio in miniatura la lentezza si può togliere e la truffa non ricomincia. Chi ha costruito questi sistemi la lentezza non la toglie e la dichiara necessaria; altri, su sistemi altrettanto veri, l’hanno tolta e la truffa non è ricominciata nemmeno lì. Quindi la lentezza serve a qualcosa, ma che cosa esattamente è ancora oggetto di studio.
Il rimedio usato dai sistemi JEPA di Meta è architetturale: asimmetria tra i due encoder. L’encoder del target non viene addestrato per retropropagazione ma mantenuto come media mobile esponenziale (EMA, exponential moving average) dei pesi dell’encoder di contesto:
dove \(\phi\) sono i pesi dell’encoder di contesto, \(\bar{\phi}\) quelli dell’encoder target e \(m\) un momento vicino a 1 (in BYOL e in parte della letteratura questo coefficiente si indica con \(\tau\), un simbolo che in questo capitolo è già occupato dalla temperatura del sogno; MoCo, come qui, usa \(m\)). In I-JEPA \(m\) parte da 0,996, quindi a ogni passo il target si sposta di una frazione millesimale verso l’encoder corrente, e cresce linearmente fino a 1 lungo l’addestramento: verso la fine il bersaglio smette del tutto di muoversi. All’EMA si accompagna lo stop-gradient: la loss non si propaga mai attraverso il ramo del target, che è puro riferimento. E c’è un terzo pezzo, che si dimentica volentieri perché sta dalla parte dell’allievo: il predictor, che esiste su un ramo solo ed è ciò che rende l’asimmetria un’asimmetria vera. I paper della famiglia li nominano tutti e tre insieme.
Dei tre, il candidato a impedire la discesa coordinata dei due encoder verso la costante è lo stop-gradient, perché il bersaglio insegue e non può contrattare: nella mini-JEPA in PyTorch, togliere l’EMA e tenere il resto non produce alcun collasso (la varietà delle rappresentazioni, anzi, sale da 1,0 a 1,6). Da un giocattolo ai sistemi veri, però, il passo non è automatico: I-JEPA chiama l’EMA «essenziale per addestrare» architetture come questa, e la difesa dal collasso la attribuisce all’asimmetria fra i due rami nel suo insieme. Fuori dalla famiglia JEPA la copia lenta è però già stata tolta senza che niente collassasse, ed è SimSiam [CH21], che la sezione sull’imparare a vedere senza etichette ha già raccontato. È comunque la stessa scoperta empirica che aveva sorpreso la comunità con BYOL nel 2020 [GSAltche+20]: niente coppie negative, niente termini contrastivi, eppure niente collasso. Una comprensione teorica completa del perché manca ancora, ed è giusto dirlo; il documento del 2022 [LeC22] discute anche l’alternativa esplicitamente regolarizzata (varianza mantenuta sopra una soglia, covarianze fuori diagonale penalizzate, alla VICReg [BPL22]), ma I-JEPA e V-JEPA, nei paper, si affidano all’asimmetria EMA.
I-JEPA: la scommessa alla prova delle immagini#
Nel documento del 2022 la JEPA è soprattutto un diagramma. La prima incarnazione che ne porta il nome arriva l’anno dopo, dal gruppo di LeCun a Meta AI: I-JEPA (Image-based JEPA, la JEPA per le immagini) [ADM+23], presentata alla conferenza CVPR. I pezzi sono quelli di poco fa. L’encoder è un Vision Transformer, la rete che nella sezione sui modelli multimodali tagliava l’immagine in tessere e le trattava come le parole di una frase [DBK+21]. Il compito è un indovinello: dato un solo blocco di contesto dell’immagine, prevedere che cosa c’è in quattro blocchi bersaglio nascosti. La novità è tutta nel che cosa si prevede: non i puntini dei blocchi mancanti, ma i loro riassunti, calcolati dalla copia lenta di poco fa. Quella copia, da qui in avanti, la chiameremo anche con la sua sigla, EMA (exponential moving average, media mobile esponenziale): è il nome tecnico di quel mescolare, a ogni passo, un pochino dei numeri dell’allievo in quelli dell’insegnante.
È il gioco della cartolina strappata. Ti mostro una cartolina a cui mancano quattro rettangoli e ti chiedo: che cosa c’era lì? Non ti chiedo di ridisegnare i pezzi mancanti: quello sarebbe il compito generativo, e ti costringerebbe a inventare dettagli che non puoi sapere. Ti chiedo di descriverli: «lì continua il muso del cane, girato verso destra». A correggerti è la copia lenta di te stesso, che ha visto la cartolina intera e ha scritto le sue descrizioni. Due dettagli fanno la differenza. Primo: i rettangoli nascosti sono grandi, per indovinare un pezzo grande devi aver capito la scena («è un cane, quindi là sotto c’è una zampa»), mentre per un buchino basta allungare i bordi, senza capire niente. Secondo: al modello non servono i trucchi artigianali con cui di solito si addestrano questi sistemi (versioni ritagliate, specchiate, ricolorate della stessa foto, scelte a mano da chi progetta). Basta l’indovinello. E i risultati danno ragione alla scommessa: con appena l’1% delle etichette di ImageNet (una dozzina di foto etichettate per categoria) I-JEPA classifica meglio dei metodi che ricostruiscono i pixel: 73 risposte giuste su cento contro poco più di 71. E ci arriva con molto meno calcolo. Quel risparmio è facile capirlo al contrario: non è che ogni ripasso costi meno (costa anzi un pelo di più, c’è una rete in più da far girare), è che di ripassi ne servono cinque volte meno.
L’encoder di contesto (un ViT) elabora solo le patch visibili del blocco di contesto; un predictor (un ViT più stretto) riceve \(\mathbf{s}_x\) e, per ciascuno dei \(M = 4\) blocchi bersaglio, token posizionali che indicano dove prevedere; la loss è la media sugli \(M\) blocchi delle distanze \(L_2\) al quadrato fra le rappresentazioni predette e quelle prodotte dall’encoder target:
dove \(B_i\) è l’insieme delle patch del blocco bersaglio \(i\), e \(\hat{\mathbf{s}}_{y,j}\) e \(\mathbf{s}_{y,j}\) sono le rappresentazioni predette e bersaglio della singola patch \(j\): il confronto avviene patch per patch, non fra due riassunti di blocco. Un dettaglio architetturale è decisivo: l’encoder target elabora l’immagine intera, e i bersagli si ottengono mascherando la sua uscita, non il suo ingresso; così ogni rappresentazione-bersaglio incorpora il contesto globale ed è semanticamente ricca. Niente augmentation artigianali: nessun crop multiplo, nessun jitter di colore. I numeri del paper [ADM+23]: su ImageNet-1K con l’1% delle etichette, un ViT-H/14 pre-addestrato con I-JEPA raggiunge il 73,3% di accuratezza top-1 (77,3% per il ViT-H/16 a risoluzione 448), contro il 71,5% di MAE (il metodo generativo che ricostruisce i pixel mascherati) e il 69,7% di iBOT (lì con un ViT-B/16, che è un modello molto più piccolo), e il pre-addestramento del ViT-H/14 richiede meno di 1200 ore-GPU (meno di 72 ore su 16 A100), oltre dieci volte meno di MAE a parità di architettura.
Il risparmio, però, non viene da dove sembra. Calcolare i bersagli nello spazio delle rappresentazioni, invece che nei pixel, aggiunge costo, perché c’è un secondo encoder da mandare avanti a ogni passo: il paper misura circa il 7% in più per iterazione. Quel che risparmia è il numero di iterazioni, di circa cinque volte (300 epoche di pre-addestramento contro le 1600 di MAE). Cinque volte meno passi non bastano però a fare un fattore dieci: quel rapporto confronta due addestramenti interi, che oltre alle epoche differiscono in ciò che sta attorno al backbone (un predictor fra embedding da una parte, un decoder di pixel dall’altra), non due costi per iterazione. La tesi giusta, che è anche la più interessante, suona così: spostare il bersaglio nello spazio delle rappresentazioni non rende più economico il singolo passo, rende necessari molti meno passi.
Dal fotogramma al film: V-JEPA#
Le immagini erano il primo collaudo; il progetto di LeCun, però, parla di futuro, e il futuro vive nei video. V-JEPA [BGP+24] (2024) trasporta lo schema dalla dimensione spaziale a quella spazio-temporale, cioè aggiunge il tempo all’altezza e alla larghezza: si copre una regione del video (in gergo si dice mascherare) e se ne prevedono le rappresentazioni a partire dal resto.
C’è una finezza che rivela quanto i video siano una bestia diversa. Un video è una pila di fotogrammi, e i vicini si somigliano quasi in tutto: se la maschera coprisse zone diverse in fotogrammi diversi, il modello potrebbe barare copiando dal fotogramma accanto quello che nel suo manca. La maschera è perciò un tubo: dentro una stessa clip la regione coperta sta ferma e attraversa la pila da parte a parte, come un foro che buca tutte le carte di un mazzo nello stesso punto (Fig. 30.5). Dove cade, quel foro, lo si sorteggia a ogni clip. Ed è una maschera generosa, perché in media copre circa il 90% del video, e il poco che resta non basta a completare i bordi di ciò che manca: per indovinare il resto bisogna aver capito la scena.
Due proprietà, però, non fanno una ricetta, e la differenza si paga cara. Coprire il 90% con tanti tubicini sottili sparsi lascia dappertutto un bordo da cui completare, e gli autori quella variante l’hanno provata: rende molto meno. Quello che funziona sono pochi tubi larghi, ciascuno un pezzo contiguo del fotogramma, la cui unione arriva al 90%: è la stessa ragione per cui sulle immagini i rettangoli nascosti sono grandi.
Fig. 30.5 Perché la maschera non si sposta. Sopra, una regione che cambia posto a ogni fotogramma: quello che nasconde in uno sta scoperto in quello accanto, e prevederlo è copiare. Sotto, la stessa regione tenuta ferma, che attraversa la clip da parte a parte: nessun fotogramma mostra quello che gli altri nascondono.#
Addestrato così su due milioni di video pubblici, senza etichette, senza testo e senza ricostruzione, V-JEPA produce rappresentazioni che a quel punto bisogna misurare, e il modo in cui le si misura conta quanto il risultato.
Come si controlla che cosa ha imparato un modello a cui nessuno ha insegnato niente? Prima si congela la rete, cioè la si blocca com’è e non la si addestra più, perché altrimenti non si saprebbe più che cosa sapeva prima dell’esame. Poi le si mette sopra un esaminatore, addestrato a parte, che riceve soltanto i riassunti e deve rispondere a una domanda utile: «che cosa sta facendo la persona in questo video?». Se ci riesce, l’informazione nei riassunti c’era.
Le collezioni di video su cui si dà l’esame sono sempre le stesse per tutti, così che i risultati di gruppi diversi si confrontino: si chiamano banchi di prova (in inglese benchmark), e qui sono due. Uno chiede di riconoscere che cosa succede nella scena: chi nuota, chi suona, chi taglia le verdure. L’altro, ed è quello che conta di più, misura la comprensione del movimento e non dell’aspetto: non basta riconoscere gli oggetti, bisogna distinguere «spingere qualcosa da sinistra a destra» da «spingere qualcosa da destra a sinistra», che sono la stessa scena al contrario. V-JEPA se la cava bene su tutti e due: otto risposte giuste su dieci sulla scena, sette su dieci sul movimento.
Un’avvertenza, però, e vale per tutti gli esami fatti così: più l’esaminatore è bravo, meno si capisce di chi sia il merito. Se è un programmino, quel che risponde lo ha trovato bell’e pronto nei riassunti; se è una rete capace, una parte del lavoro può averla fatta lui. E qui l’esaminatore è del secondo tipo: una piccola rete addestrata apposta, che nella versione successiva del sistema cresce ancora. Quindi quel «sette su dieci» dice quanto l’informazione sul movimento sia facile da tirare fuori dai riassunti, che non è la stessa cosa che dire che il modello «ha capito». Il confronto fra sistemi regge lo stesso, purché l’esaminatore sia identico per tutti: il punteggio si dà insieme al nome di chi ha corretto.
Con la rete congelata e una sonda addestrata a parte, V-JEPA raggiunge l’81,9% su Kinetics-400 (riconoscere l’azione: chi nuota, chi suona) e il 72,2% su Something-Something-v2, un banco di prova che richiede di capire il movimento («spingere qualcosa da sinistra a destra»), non solo l’aspetto.
Su che cosa sia quella sonda conviene essere precisi, perché la formula corrente («una piccola testa di classificazione») sottostima parecchio. Il protocollo di V-JEPA usa un attentive probe: uno strato di cross-attention con un token di query appreso, la cui uscita rientra nel token di query per connessione residua e finisce in un MLP a due strati. Uno strato di cross-attention è un aggregatore addestrato che decide quali token guardare, non un classificatore lineare: fra i due estremi «regressione logistica sopra feature congelate» e «fine-tuning completo» sta molto più vicino al secondo di quanto la parola «testa» lasci intendere. E in V-JEPA 2 la sonda cresce ancora: quattro blocchi transformer, l’ultimo dei quali sostituisce la self-attention con una cross-attention a query appresa. Quattro blocchi transformer sopra un backbone congelato non sono una testa, sono un modello.
Da qui la cautela sulla lettura, ed è la stessa che nell’ultima sezione applicheremo al probing di Othello-GPT: il protocollo misura quanto le rappresentazioni congelate rendano estraibile l’informazione sul movimento, non quanto il modello la «capisca», e fra le due ipotesi (l’informazione c’era nel backbone, oppure a costruirla è stata la sonda) non distingue. Più la sonda è capace, meno il merito è attribuibile al solo backbone; il confronto fra metodi resta valido finché la sonda è la stessa per tutti, ed è per questo che il protocollo va dichiarato insieme al numero.
V-JEPA 2: il world model tocca il mondo#
Nel giugno 2025 arriva il passo successivo, ed è quello che riporta tutta questa storia al punto di partenza del capitolo: usare il modello per agire. V-JEPA 2 [ABF+25] ingrandisce la ricetta, con un modello da oltre un miliardo di parametri addestrato su più di un milione di ore di video presi da internet, e i punteggi salgono di conseguenza. Sul banco di prova del movimento, quello dello «spingere da sinistra a destra», le risposte giuste passano da sette a quasi otto su dieci (77,3%, sul banco che porta il nome buffo di Something-Something-v2). Poi c’è un esame più difficile, l’anticipazione: guardando una cucina ripresa in soggettiva, indovinare che cosa farà la persona nel secondo che viene. Lì il modello può proporre cinque risposte e il punteggio conta quante volte quella giusta è fra le cinque, mediando poi fra i tipi di azione così che quelli rari pesino quanto i frequenti (in gergo recall@5): V-JEPA 2 arriva a 39,7 su cento, contro le 27,6 del miglior sistema precedente, che era grosso otto volte tanto. È un progresso grosso su un compito che resta largamente irrisolto, il che è già un buon motivo per diffidare di chi riassume queste cose con «ci riesce».
Ma la parte concettualmente nuova è V-JEPA 2-AC (action-conditioned, condizionato sulle azioni), ed è la parte in cui il capitolo arriva finalmente a un robot vero. Il meccanismo è quello dell’inizio, montato sopra un braccio meccanico: si dà al robot un’immagine-obiettivo (la tazza sopra il piatto), il modello immagina l’effetto di centinaia di comandi possibili e sceglie quello il cui esito previsto è più vicino all’obiettivo. Poi lo esegue, guarda com’è andata e ricomincia da capo, un comando alla volta. Dal progetto del 2022 la distanza è netta: là l’agente immaginava intere sequenze di azioni prima di muoversi, il robot vero ne immagina per ora una sola per volta, e già così ci mette sedici secondi. Immaginare prima, muovere poi: è il cinema interiore dell’apertura del capitolo, e questa volta muove qualcosa di fisico.
A questo robot nessuno mostra come si fa. Gli si fanno guardare delle registrazioni di bracci robotici al lavoro: una sessantina d’ore, prese da una raccolta pubblica che chiunque può scaricare (una raccolta di dati fatta apposta per addestrare si chiama dataset). Le registrazioni dicono anche come si è mosso il braccio istante per istante, perché è un’informazione che la macchina scrive da sé mentre lavora. Quel che nessuno ha annotato è tutto il resto: che compito si stesse svolgendo, se sia riuscito, se chi guidava fosse bravo. Quei video vengono descritti come «non etichettati», e vuol dire esattamente questo: manca il giudizio su che cosa si stesse facendo e su come è andata, non l’informazione sui movimenti. Il pezzo che guarda i video resta com’era, con quello che aveva imparato da internet: si addestra soltanto il pezzo che immagina l’effetto di un comando.
Poi lo si mette in due laboratori che non aveva mai visto, senza un solo minuto di pratica lì dentro. Si chiama zero-shot, «a colpo zero»: nemmeno un tentativo di prova.
Qui però serve la cifra, non l’aggettivo, perché «riesce» dice troppo. Raggiungere un punto gli riesce sempre. Posare un oggetto dove va, circa tre volte su quattro. Afferrare una tazza, due volte su tre. Afferrare una scatola, una volta su quattro. Posare, però, non gli riesce con una foto sola dell’obiettivo: gliene servono tre, e a sceglierle è una persona. E per ogni singolo gesto il robot passa sedici secondi a immaginare, perché non prova un comando alla volta: ne sorteggia ottocento, tiene i dieci il cui esito finisce più vicino all’obiettivo, e sorteggia gli ottocento del giro dopo tutti attorno a quei dieci. Dieci giri, ottomila futuri immaginati per muovere un dito. È un inizio notevole; non è un maggiordomo.
Sopra l’encoder congelato viene addestrato un predictor condizionato sulle azioni, usando meno di 62 ore di video del dataset pubblico DROID. La parola «non etichettati» che il paper usa è facilissima da fraintendere, perché le azioni ci sono eccome e sono l’ingrediente su cui poggia tutta la variante AC: il predictor riceve mappe di feature, stato dell’end-effector (posizione, tre angoli di Eulero, apertura della pinza) e azioni, interlacciati nel tempo, con l’azione definita come la variazione dello stato dell’end-effector fra fotogrammi adiacenti. Unlabeled, nel paper, vuol dire un’altra cosa, dichiarata a chiare lettere: nessun meta-dato su ricompensa, su quale compito fosse in corso, o su se il tentativo sia riuscito. È una distinzione che tornerà utile davanti a Genie, che le azioni davvero non ce le ha e deve inferirsele.
La pianificazione è controllo predittivo a orizzonte recedente: si ottimizza una sequenza di azioni su un orizzonte \(T\), se ne esegue soltanto la prima, si osserva il nuovo stato e si ripianifica. A ottimizzare è il Cross-Entropy Method: si campionano 800 candidate da gaussiane, si tengono le dieci migliori, se ne ricalcolano media e varianza e si ripete per dieci giri. Nei compiti riportati l’orizzonte è \(T = 1\), cioè si ottimizza una sola azione per volta: gli autori lo dichiarano sufficiente perché i compiti considerati sono ingordi, e osservano che orizzonti più lunghi funzionano anch’essi ma costano di più. Il costo è 16 secondi di calcolo per ogni singola azione, su una sola scheda grafica da gioco. E i tassi di successo, medi sui due laboratori, dicono a che punto siamo davvero: reach 100%, pick-and-place della tazza 80% e della scatola 65%, presa della tazza 65%, presa della scatola 25%. Afferrare una scatola riesce una volta su quattro. E il pick-and-place, che è il numero più alto, non si guida con un’immagine sola: gli autori ne danno tre (oggetto afferrato, oggetto vicino alla meta, oggetto posato) e passano dall’una all’altra a passi fissi. A scomporre l’obiettivo è una persona, ed è il conto che presenta l’orizzonte \(T = 1\): fra i limiti gli autori mettono proprio il pick-and-place senza sotto-obiettivi. Il sistema regge anche compiti di video question answering, una volta allineato con un modello di linguaggio. È il punto esatto in cui la via di LeCun smette di essere un diagramma e tocca, letteralmente, il mondo fisico; non è il punto in cui la partita è vinta.
Tre famiglie per imparare senza etichette#
Fermiamoci a mettere ordine, perché a questo punto i tre grandi modi di imparare senza annotatori umani li abbiamo incontrati tutti. Una precisazione prima di cominciare, perché queste famiglie si contano anche in un altro modo: qui il taglio è dove avviene la previsione, e dà tre famiglie; nel capitolo sull’auto-supervisione il taglio è che cosa impedisce al modello di rispondere sempre la stessa cosa, e dà quattro famiglie. I due elenchi non si contraddicono: sono due assi, e ogni metodo ha una posizione su ciascuno.
Tre studenti, stessi libri, nessun professore. Il primo studia ricopiando con i buchi: cancella pezzi del testo e si allena a riscriverli identici, parola per parola o pixel per pixel; è il metodo generativo, quello di BERT con le frasi (gli «esercizi a buchi» del capitolo sui Transformer) e di MAE con le foto (Masked Autoencoder, «autoencoder mascherato»: gli si copre un pezzo di immagine e deve ridisegnarlo). Il secondo studia col gioco delle coppie: mescola foto e didascalie e impara a dire quali vanno insieme e quali no; è il metodo contrastivo, quello di CLIP (Contrastive Language–Image Pre-training, addestramento per contrasto di lingua e immagini), che avvicina ogni immagine alla sua descrizione e la allontana dalle altre. Il terzo (la via JEPA) studia prevedendo il riassunto: copre un pezzo e, invece di ricopiarlo, ne prevede la descrizione, confrontandola con quella di una copia lenta di sé. Non è una classifica: ricopiare con i buchi ha vinto nel linguaggio, il gioco delle coppie ha unito immagini e parole, prevedere il riassunto scommette sul futuro e sul video. Sono tre risposte diverse alla stessa domanda: di ciò che manca, che cosa serve davvero prevedere?
Generativa: si ricostruisce l’input nello spazio dell’input. Il masked language modeling di BERT [DCLT19] predice i token mascherati con una cross-entropia sul vocabolario; MAE fa lo stesso con i pixel delle patch mascherate, con loss \(L_2\). Funziona magnificamente sul testo (dove i token sono discreti e la softmax rappresenta senza sforzo l’incertezza) e resta più goffa su segnali continui ad alta dimensione, dove l’equivalente della softmax non esiste e ricostruire costringe a modellare l’irrilevante: è l’argomento centrale di [LeC22]. Contrastiva: si impara una geometria, avvicinando le coppie compatibili e allontanando quelle incompatibili (CLIP [RKH+21] con la loss InfoNCE su coppie immagine–didascalia). Nel lessico dei modelli a energia: energia abbassata sulle coppie giuste e alzata esplicitamente sui controesempi, con la nota difficoltà di trovarne mai abbastanza in alta dimensione. Predittiva nello spazio latente: la famiglia JEPA; energia = errore di predizione tra embedding, nessuna ricostruzione, nessuna coppia negativa, collasso evitato per asimmetria architetturale (lo stop-gradient, con l’EMA a stabilizzare) o per regolarizzazione esplicita (varianza/covarianza), che è poi lo stesso mestiere che la famiglia contrastiva svolge per un’altra via, alzando l’energia sui controesempi. È la più giovane delle tre, e quella su cui pesa la scommessa più grossa.
Una scommessa aperta#
Chiudiamo con l’onestà dovuta. Quella raccontata fin qui è una linea di ricerca in corso, non un traguardo raggiunto. Le rappresentazioni JEPA sono eccellenti e costano poco, e V-JEPA 2-AC ha mostrato che un world model auto-supervisionato può guidare un robot vero. Ma dell’architettura a sei moduli del 2022 la maggior parte resta sulla carta: la JEPA gerarchica, cioè fatta a livelli, dove quello alto pianifica a grandi passi («esco di casa, vado alla stazione») e quelli sotto ne riempiono i dettagli, ciascuno sulla propria scala di tempo; il configuratore; il ragionamento a lungo orizzonte, cioè su catene lunghe di conseguenze.
I critici, dal canto loro, fanno notare che la storia recente non è stata tenera con le previsioni di insufficienza: i modelli generativi, cresciuti abbastanza in taglia e in dati, continuano a esibire capacità che «non avrebbero dovuto» avere. L’argomento più forte di quella sponda non è un’impressione, ed è nella sezione seguente: un modello addestrato soltanto a indovinare la mossa successiva si costruisce dentro una rappresentazione dello stato del gioco, e la usa [LHB+23]. Sull’idea che la coerenza fisica dei generatori di video migliori da sé man mano che li si ingrandisce, invece, conviene essere cauti quanto lo siamo con l’altra sponda: le fonti su cui poggia sono, per i sistemi più spinti, gli annunci aziendali con dimostrazioni scelte di cui parla la prossima sezione. È un’affermazione da verificare, non da concedere. Se per capire il mondo serva davvero smettere di generarlo, o se generare sia un modo di capire, è esattamente la domanda su cui il campo è spaccato. LeCun, come ricordato in apertura di capitolo, ci ha scommesso la carriera: ha lasciato Meta per una startup dedicata ai world model. La prossima sezione attraversa il fronte opposto del dibattito: i simulatori generativi di video, da Sora a Genie, e la domanda se un modello che disegna futuri plausibili abbia capito la fisica o abbia solo imparato a imitarla.
Una mini-JEPA in PyTorch#
Tutti i pezzi della sezione (encoder, copia lenta EMA, predictor, loss tra embedding) stanno comodamente in una pagina di PyTorch. L’esperimento è volutamente in miniatura: ogni «immagine» è una scena finta fatta di 8 patch, cioè di 8 tessere (è il modo in cui i Vision Transformer tagliano un’immagine; qui le tessere nascono da un contenuto comune più rumore). Il modello vede 6 tessere di contesto e deve prevedere l’embedding (non i valori!) delle 2 tessere coperte. Il commento chiave è sull’asimmetria: il bersaglio non riceve gradiente, e per questo non può mettersi d’accordo con l’encoder. Quel «non riceve gradiente» ha un nome, stop-gradient, ed è la traduzione in codice dell’insegnante che non può lamentarsi del voto: è lui a tenere il sistema lontano dal collasso. L’EMA rende il bersaglio più lento e più stabile, cosa che nei sistemi veri conta parecchio, ma non è lei a reggere il muro, e qui sotto lo si misura.
import copy
import torch
from torch import nn
torch.manual_seed(0)
DIM_PATCH, DIM_EMB = 16, 32
N_PATCH, N_CONTESTO = 8, 6 # per scena: 6 patch visibili, 2 mascherate
# Mappa fissa dal "contenuto" della scena all'aspetto delle patch
PROIEZIONE = torch.randn(4, DIM_PATCH)
def genera_batch(n=256):
"""Ogni scena nasce da un contenuto nascosto comune alle sue 8 patch."""
contenuto = torch.randn(n, 1, 4) # il "succo" della scena
patch = contenuto @ PROIEZIONE # come il succo appare
return patch + 0.25 * torch.randn(n, N_PATCH, DIM_PATCH) # dettagli casuali
# Encoder (l'allievo), predictor, ed encoder target (la copia lenta)
encoder = nn.Sequential(
nn.Linear(DIM_PATCH, 64), nn.ReLU(), nn.Linear(64, DIM_EMB))
predictor = nn.Sequential(
nn.Linear(DIM_EMB, 64), nn.ReLU(), nn.Linear(64, DIM_EMB))
encoder_target = copy.deepcopy(encoder)
for p in encoder_target.parameters():
p.requires_grad_(False) # stop-gradient: il bersaglio non si allena
@torch.no_grad()
def aggiorna_target(m=0.996):
"""EMA: il target insegue lentamente l'encoder, e non ne riceve mai
il gradiente. L'anti-collasso è proprio quel 'mai': senza gradiente
il target non può accordarsi con l'encoder per appiattire tutti gli
embedding sulla stessa costante. L'EMA aggiunge la lentezza."""
for p, p_t in zip(encoder.parameters(), encoder_target.parameters()):
p_t.mul_(m).add_((1.0 - m) * p)
opt = torch.optim.Adam(
list(encoder.parameters()) + list(predictor.parameters()), lr=1e-3)
for passo in range(1, 601):
patch = genera_batch() # (256, 8, 16)
# contesto -> embedding riassuntivo (media delle 6 patch visibili)
s_x = encoder(patch[:, :N_CONTESTO]).mean(dim=1) # (256, 32)
# target -> embedding calcolato dalla copia lenta, senza gradiente
with torch.no_grad():
s_y = encoder_target(patch[:, N_CONTESTO:]).mean(dim=1) # (256, 32)
s_y_pred = predictor(s_x) # predizione tra embedding
loss = nn.functional.mse_loss(s_y_pred, s_y) # voto fra riassunti
opt.zero_grad()
loss.backward()
opt.step()
aggiorna_target() # un passetto di EMA
if passo in (1, 100, 200, 400, 600):
# se gli embedding collassassero, questa varietà scenderebbe verso 0
varieta = s_y.std(dim=0).mean().item()
print(f"passo {passo}: loss {loss.item():.4f} "
f"varietà degli embedding {varieta:.3f}")
Eseguendolo, la loss crolla in un centinaio di passi, da circa 0,23 a meno di 0,01. Nel frattempo la «varietà» degli embedding, cioè quanto i riassunti di scene diverse restano diversi fra loro, non scende affatto verso zero, che è quel che farebbe se le rappresentazioni si stessero appiattendo: nei numeri stampati passa da circa 0,4 a 1,0, e cioè cresce. Il modello impara a prevedere il contenuto delle tessere coperte (che è condiviso con il contesto) e ignora il rumore (che non è prevedibile), senza appiattire le rappresentazioni.
Il modo di convincersene, però, è spegnere il meccanismo e guardare che cosa
succede, più che leggere quei numeri. Sostituendo la riga del bersaglio con
s_y = encoder(patch[:, N_CONTESTO:]).mean(dim=1), cioè togliendo in un colpo
solo la copia lenta e il torch.no_grad(), i due rami tornano a essere la
stessa rete e possono accordarsi: dopo 600 passi la loss scende a cinque
decimillesimi e la varietà crolla a 0,05, cioè i riassunti di scene diverse
sono diventati quasi lo stesso riassunto. Quello è il collasso, ed è l’energia
zero ovunque di cui parlava la sezione. Se invece si toglie la sola
EMA, calcolando il bersaglio dall’encoder vivo ma sempre dentro
torch.no_grad(), non succede niente di male: la varietà arriva a 1,64,
più alta che nel codice qui sopra. Non è un miglioramento da inseguire (in un
giocattolo del genere una varietà più alta non vuol dire rappresentazioni
migliori): è la prova che senza l’EMA il collasso non arriva lo stesso, e che
quindi il muro lo regge l’altro ingrediente.
Ciò che qui manca (il ViT al posto del piccolo MLP, i token posizionali che dicono al predictor dove prevedere, milioni di immagini e di ore di video) è ingegneria; la logica è tutta in queste righe.
Da ricordare
Nel 2022 LeCun mette online un documento di 62 pagine [LeC22] che non contiene nessun risultato: è un progetto, il disegno di come dovrebbe essere fatta secondo lui una macchina che capisce il mondo. Sei pezzi, e al centro un modello del mondo che impara guardando, senza che nessuno gli spieghi niente.
Prevedere l’immagine esatta è la strada sbagliata, ed è la storia del bicchiere in bilico: il futuro può andare in mille modi e nessuna decisione dipende dalla forma della terza scheggia, quindi un modello obbligato a disegnare una foto finisce per disegnare la media sfocata di tutte. La proposta è prevedere il succo, non la foto.
Il pericolo di prevedere il succo è che allievo e insegnante si accordino per rispondere sempre «boh»: si chiama collasso. A impedirlo è una cosa sola, che l’insegnante non riceva mai lamentele sul voto: non potendo contrattare, non può accordarsi al ribasso. Che sia anche una copia lenta dell’allievo serve a rendere l’esercizio stabile; chi ha costruito questi sistemi non la toglie, ma altrove è stata tolta e la truffa non è ricominciata.
La prova sulle immagini è il gioco della cartolina strappata: si coprono quattro rettangoli grandi e si chiede di descriverli, non di ridisegnarli. Funziona, e impara con molto meno calcolo dei metodi che ridisegnano; ma non perché ogni passo costi meno, perché ne servono molti meno.
Sui video la copertura diventa un tubo, ferma nello stesso punto per tutta la clip, così che il modello non possa copiare dal fotogramma accanto. E l’ultima versione arriva a guidare un braccio robotico in due laboratori mai visti, con un’immagine dell’obiettivo al posto delle istruzioni: immagina prima, muove poi. Con i piedi per terra, però: afferrare una tazza gli riesce due volte su tre, una scatola una volta su quattro, e ogni gesto gli costa sedici secondi di calcolo.
Tre modi di studiare senza professore, e sono tre studenti diversi: ricopiare con i buchi, il gioco delle coppie, prevedere il riassunto. Prevedere il riassunto è la via JEPA, ed è la più giovane delle tre. La prossima sezione va a sentire l’altra campana.
Da ricordare
Nel 2022 LeCun pubblica su OpenReview A Path Towards Autonomous Machine Intelligence [LeC22]: non un paper di risultati ma un progetto di architettura; sei moduli (percezione, world model, costo, attore, memoria a breve termine, configuratore) attorno a un world model appreso per auto-supervisione.
Predire nei pixel è la strada sbagliata: il futuro è molteplice e pieno di dettagli irrilevanti; la minimizzazione dell’errore quadratico produce la media sfocata dei futuri. La JEPA predice nello spazio delle rappresentazioni: è un’architettura a energia non normalizzata, dove l’energia è l’errore di predizione tra embedding.
Il pericolo è il solito collasso (embedding costanti, energia bassa ovunque); la difesa dei sistemi reali è l’asimmetria fra i due rami, fatta di tre pezzi (EMA, stop-gradient, predictor su un ramo solo), e il muro sembra lo stop-gradient: il ramo del target non riceve gradiente e non può colludere. Che a impedire il collasso non sia l’EMA lo dice SimSiam, che la toglie senza conseguenze.
I-JEPA [ADM+23] (CVPR 2023): un ViT predice le rappresentazioni di quattro blocchi mascherati dal contesto; niente augmentation artigianali; con l’1% delle etichette di ImageNet batte i metodi a ricostruzione di pixel (73,3% contro 71,5% di MAE) con oltre dieci volte meno calcolo. Non per un costo unitario più basso: il singolo passo costa il 7% in più, i passi sono cinque volte meno, e il fattore dieci confronta due addestramenti interi, non due iterazioni.
V-JEPA [BGP+24] porta lo schema al video (maschere a tubo estese su tutta la clip); V-JEPA 2 [ABF+25] scala a oltre un milione di ore di video e, con meno di 62 ore di video DROID privi di annotazione su compito, ricompensa ed esito (ma con le azioni registrate), ottiene pianificazione robotica zero-shot su bracci Franka mai visti: successo fra il 25% e il 100% secondo il compito, con 16 secondi di calcolo per azione.
I numeri a rete congelata vanno letti insieme al protocollo: la sonda è un attentive probe (per V-JEPA 2, quattro blocchi transformer), quindi misurano quanto l’informazione sia estraibile, non quanto il modello «capisca».
Tre famiglie di auto-supervisione, classificate secondo dove avviene la previsione: generativa (ricostruisci il dato: BERT, MAE), contrastiva (avvicina/allontana: CLIP), predittiva nello spazio latente (JEPA). È un asse diverso da quello del capitolo sull’auto-supervisione, che taglia invece secondo che cosa impedisce il collasso e ottiene quattro famiglie: i due elenchi non si contraddicono, si incrociano. La partita tra generare e predire-nelle-idee è aperta: la prossima sezione visita l’altra sponda.