Immaginate di prendere appunti a una conferenza che dura tutto il giorno, e di avere a disposizione un solo foglio. Ogni volta che arriva un’idea nuova dovete riscrivere il foglio da capo, condensando quello che avevate già scritto per far posto. A metà pomeriggio il vostro foglio è un riassunto denso e utile del discorso generale, ma i dettagli della mattina — il nome citato in apertura, la cifra esatta della seconda slide — sono ormai evaporati. È esattamente il dilemma di una rete neurale ricorrente: una memoria di dimensione fissa che comprime il passato e, per forza di cose, prima o poi lo dimentica.
La strategia opposta è quella dei transformer: non buttare via niente, conservare ogni foglio scritto e, quando serve, sfogliarli tutti. Ricordi perfetti, ma un costo che cresce con il quadrato della lunghezza del discorso. Un articolo pubblicato su arXiv il 27 febbraio 2026 da sei ricercatori coordinati da Ali Behrouz di Google propone una terza via, disarmante nella sua semplicità: alla fine di ogni sezione della conferenza, fai una fotocopia del tuo foglio riassuntivo e la archivi. Continui a scrivere sul foglio corrente, ma quando devi ricordare qualcosa consulti sia il foglio di adesso sia tutte le fotocopie archiviate. Gli autori chiamano questa tecnica Memory Caching.
Il collo di bottiglia è la memoria fissa
Per capire perché la proposta conti, bisogna sapere cosa vuole aggiustare. Da qualche anno le architetture ricorrenti — RetNet, DeltaNet, RWKV, Titans e parenti — sono tornate di moda come alternativa efficiente ai transformer. La loro promessa è un costo lineare: comprimono tutta la storia passata in uno stato di memoria di taglia costante, aggiornato un token alla volta. In termini di linear attention, la memoria è una matrice che si accumula così:
$$M_t = M_{t-1} + v_t\,\phi(k_t)^\top$$
Elegante ed economico. Ma quella taglia costante è anche la sua condanna. Quando la sequenza diventa lunga, in quello stato non ci sta più tutto, e il modello è costretto a scordare. Sui compiti che richiedono di ripescare un’informazione precisa da un testo lungo — quelli che in gergo si chiamano recall-intensive — le reti ricorrenti restano indietro rispetto ai transformer, e la ragione, ripetono gli autori, è sempre quella: la memoria non cresce.
Memory Caching interviene proprio qui. L’idea è spezzare la sequenza in segmenti, comprimere ciascun segmento nel suo stato di memoria, e poi archiviare un’istantanea di quello stato prima di passare al segmento successivo. Alla fine, ogni token non interroga più soltanto la memoria del momento — che gli autori chiamano memoria online — ma anche l’intera pila delle memorie archiviate. La capacità effettiva del modello smette di essere fissa e cresce con la lunghezza del testo, un blocco alla volta.
I segmenti già visti vengono compressi ciascuno nel suo stato di memoria e messi da parte. Il token corrente non guarda solo la memoria del segmento in corso, ma tutte le istantanee archiviate: la capacità effettiva cresce con la sequenza.
Una manopola tra due estremi
La forza dell’idea è che non è né carne né pesce, ed è esattamente questo il punto. Detto in termini di costo computazionale, Memory Caching ha una complessità di $O(N L)$, dove $L$ è la lunghezza della sequenza e $N$ il numero di segmenti. Girando la manopola di $N$ si scorre lungo tutto lo spettro. Con un solo segmento ($N = 1$) non si archivia nulla e si torna a una normale rete ricorrente, con il suo costo lineare $O(L)$. All’estremo opposto, se ogni token diventa un segmento a sé ($N = L$), si finisce per archiviare tutto: il costo sale a $O(L^2)$ e il comportamento coincide con quello dell’attention. La ricorrenza pura e i transformer, in altre parole, non sono due mondi separati, ma i due capi di una stessa corda.
Questa lettura ha un corollario elegante che gli autori non si lasciano sfuggire: spiega perché i cosiddetti modelli ibridi — quelli che alternano blocchi ricorrenti e blocchi di attention, oggi molto in voga — funzionino così bene. Un blocco di attention piazzato dopo un modulo ricorrente si comporta, sotto le giuste semplificazioni, proprio come un Memory Caching che archivia le memorie passate. Un trucco empirico diventa così un caso particolare di un principio più generale.
Quattro modi di rileggere l’archivio
Il cuore tecnico dell’articolo sta nel decidere come il token corrente combina la memoria online con quelle archiviate. Gli autori propongono quattro varianti. La più semplice è la memoria residuale: si sommano e basta le risposte di tutte le memorie, come una connessione residua che scavalca il tempo. Con una memoria lineare, però, questa somma è onestamente poco più di un trucco — matematicamente collassa di nuovo in una memoria di taglia fissa, perché le istantanee si possono pre-sommare in anticipo. Serve qualcosa che pesi le memorie in modo diverso a seconda della domanda.
Da qui la seconda variante, la memoria residuale con gate, che è quella che rende di più negli esperimenti. A ogni memoria archiviata viene assegnato un peso $\gamma$ che dipende dal contesto, e l’output diventa una somma pesata:
$$y_t = \gamma_t^{(s)}\,M_t^{(s)}(q_t) + \sum_{i=1}^{s-1}\gamma_t^{(i)}\,M_{L^{(i)}}^{(i)}(q_t)$$
Il dettaglio che fa la differenza è come si calcola $\gamma$: non in base alla sola posizione del segmento, ma alla somiglianza tra il token corrente e il contenuto medio del segmento archiviato, cioè $\gamma_t^{(i)} = \langle u_t, \mathrm{MeanPooling}(S^{(i)})\rangle$. Il modello impara così a dare più voce alle porzioni di passato che c’entrano davvero con quello che sta leggendo adesso. Le altre due varianti battono strade parallele: la Memory Soup media direttamente i parametri delle memorie archiviate — un’idea presa in prestito dal weight souping — costruendo al volo una memoria su misura per ogni token; il Sparse Selective Caching aggiunge invece un router in stile Mixture-of-Experts che, per ogni token, seleziona solo le poche memorie più pertinenti anziché tutte, tenendo sotto controllo il costo sulle sequenze molto lunghe.
I numeri, senza arrotondare per eccesso
Gli autori mettono alla prova la tecnica su tre architetture ricorrenti — Sliding Window Linear Attention, Deep Linear Attention e Titans — addestrando modelli da 760 milioni e 1,3 miliardi di parametri rispettivamente su 30 e 100 miliardi di token del dataset FineWeb. Il primo risultato è che Memory Caching migliora in modo consistente ogni modello a cui viene applicato. Su Titans, la variante con gate porta la media sui benchmark di ragionamento di senso comune da 51,56 a 52,55, e abbassa la perplexity su Wikitext da 20,04 a 19,14.
Il guadagno più netto arriva dove serviva: nei compiti di recupero da testi lunghi. Sul test dell’ago nel pagliaio più difficile — cercare un codice alfanumerico in un contesto da 16 mila token — Deep Linear Attention da sola arriva a 4 punti di accuratezza, ma con la memoria caching a gate sale a 18,2; Titans passa da 21,2 a 32,2. Sul pagliaio numerico alla stessa lunghezza, Titans migliora da 75,4 a 88,2. Sono salti larghi, che confermano l’intuizione di partenza.
La ricorrenza pura e i transformer non sono due mondi separati, ma i due capi di una stessa corda. Memory Caching è la manopola per scegliere il punto giusto in mezzo.
E qui viene la parte che gli autori non nascondono. Su quei compiti di recupero, il transformer resta davanti: sull’ago numerico a 16 mila token segna 94,2, un margine che Memory Caching riduce ma non annulla. La frase ricorre più volte nell’articolo, con un candore che fa piacere leggere: le varianti proposte «avvicinano il divario» con i transformer e battono le migliori reti ricorrenti, ma non le superano. La memoria che cresce a scatti è più capiente di una fissa, non ancora capiente quanto una che conserva ogni token.
I limiti dichiarati
La segmentazione stessa è un compromesso, non un pasto gratis. Segmenti tutti della stessa lunghezza mantengono buona risoluzione sul passato ma costano di più; una segmentazione logaritmica scende a $O(L \log L)$ ma concede pochissima nitidezza ai token più lontani, e infatti rende peggio sui compiti di recupero. Archiviare le memorie di tutti i segmenti, poi, occupa spazio: è la ragione per cui il Sparse Selective Caching esiste, ed è più una toppa efficiente che una soluzione definitiva. Gli stessi autori chiudono ammettendo che molte scelte sono state fatte «per tenere il modello il più semplice possibile», per isolare l’effetto dell’idea, e che meccanismi di selezione più sofisticati potrebbero spremere di più. È un proof of concept onesto, non un annuncio.
Quello che resta, al netto dei numeri, è un modo di pensare. Per anni la scelta tra reti ricorrenti e transformer è stata raccontata come uno scontro di filosofie: comprimere contro memorizzare, efficienza contro fedeltà. Memory Caching suggerisce che fosse una falsa opposizione, e che tra i due estremi ci sia un continuo percorribile a piccoli passi. Vale la pena tenerlo a mente ogni volta che il campo sembra costringere a una scelta secca: spesso la domanda giusta non è «quale dei due», ma «dove, lungo la corda che li unisce, conviene fermarsi».
Il paper
Ali Behrouz, Zeman Li, Yuan Deng, Peilin Zhong, Meisam Razaviyayn, Vahab Mirrokni, Memory Caching: RNNs with Growing Memory, arXiv:2602.24281, 27 febbraio 2026. Disponibile su arXiv: arxiv.org/abs/2602.24281.
I commenti sono riservati agli iscritti.
Accedi per commentare