Un insegnante ritira i compiti di una classe e li corregge. Prima di restituirli prende due decisioni distinte, che di solito confonde in un gesto solo. La prima: a quali risposte dare peso, quali premiare perché migliori. La seconda: quanto, concretamente, cambiare la propria spiegazione la volta successiva sulla base di quelle correzioni. Sono cose diverse. Stabilire che un tema merita otto e un altro quattro non dice ancora di quanto riscrivere la lezione: se esageri, stravolgi un metodo che funzionava per colpa di un singolo compito storto; se sei timido, il voto resta lettera morta. Questo nodo — decidere cosa premiare è un problema, decidere quanto muoversi è un altro — sta al cuore di come oggi si addestrano i modelli linguistici con il reinforcement learning. Un preprint di Jean Kaddour, Target Policy Optimization, propone semplicemente di sciogliere quel nodo tenendo le due domande separate.
Cosa fondono i metodi standard
Il contesto è quello dell’RL a gruppi, la ricetta con cui si rifinisce un LLM dopo il pre-addestramento. Dato un prompt, si campionano dal modello alcune risposte candidate — un gruppo — e le si valuta con un punteggio. Quando il punteggio è verificabile in modo automatico (la soluzione di un problema di matematica è giusta o sbagliata, il codice passa i test) si parla di RLVR, reinforcement learning con reward verificabile. Il metodo dominante per farlo su modelli da miliardi di parametri si chiama GRPO: prende i punteggi del gruppo, li trasforma in un peso scalare per ogni risposta e li infila dentro un passo di policy gradient, con clipping e un termine di penalità KL a fare da stabilizzatori.
Il punto del paper è che questo singolo gesto tiene insieme due cose che potrebbero stare separate: la redistribuzione desiderata — verso quali risposte spostare probabilità — e la meccanica dell’ottimizzatore che la realizza. Con le due cose intrecciate, l’aggiornamento può eccedere o restare corto a seconda del learning rate, del clipping e delle altre scelte, e la cosa diventa fragile proprio quando il reward è sparso. L’idea di «prima costruisci un bersaglio, poi avvicinaci la policy» non è nuova: risale a Dayan e Hinton nel 1997 ed è stata istanziata da metodi come REPS e MPO. Ma quelli richiedevano una funzione di valore appresa e un’ottimizzazione vincolata sullo spazio delle azioni. La mossa di TPO è osservare che, quando il gruppo di candidati è finito e già valutato, il bersaglio esiste in forma chiusa — senza critico, senza ottimizzazione annidata.
Il bersaglio e la cross-entropy
Il meccanismo si legge in poche righe. Per ogni prompt si campionano $K$ candidati dalla policy di rollout $\pi_{\text{old}}$ e si assegna a ciascuno un punteggio grezzo. I punteggi vengono standardizzati dentro il gruppo, ottenendo valori $u_i$ centrati; il caso in cui tutti i candidati prendono lo stesso voto viene mappato a $u = 0$. La standardizzazione non è un dettaglio cosmetico: il bersaglio esponenzia i punteggi, e senza normalizzare i gruppi $(1, 0, -1)$ e $(100, 0, -100)$ — stesso ordinamento, scala diversa — produrrebbero bersagli radicalmente diversi, uno morbido e uno quasi deterministico.
A questo punto si costruisce il bersaglio $q$: la vecchia distribuzione del modello sul gruppo, inclinata verso i candidati migliori.
$$q_i = \frac{p^{\text{old}}_i \, \exp(u_i/\eta)}{\sum_{j=1}^{K} p^{\text{old}}_j \, \exp(u_j/\eta)}$$
La probabilità vecchia $p^{\text{old}}_i$ è il punto di partenza — l’áncora — e l’esponenziale del punteggio standardizzato è l’inclinazione; $\eta$ è una temperatura, fissata a $1$ in tutti gli esperimenti. In una sola lettura: sposta massa verso chi ha risposto meglio, ma partendo da ciò che il modello già faceva. La stessa formula ha una lettura pulita: $q$ è la distribuzione che massimizza il punteggio atteso meno un guinzaglio KL verso $\pi_{\text{old}}$ — ci si muove verso i candidati migliori, non così lontano da buttare via ciò che la policy vecchia sapeva.
Costruito il bersaglio, si adatta la policy avvicinandola a $q$ con una banale cross-entropy, trattando $q$ come fisso.
$$\mathcal{L}_{\text{TPO}}(\theta) = -\sum_{i=1}^{K} q_i \log p^{\theta}_i$$
Qui sta l’eleganza. Il gradiente della cross-entropy rispetto ai logit del gruppo è esattamente $\partial \mathcal{L}/\partial \ell^{\theta}_i = p^{\theta}_i – q_i$: la differenza tra dove la policy è e dove il bersaglio la vuole. Si annulla da solo nell’istante in cui la policy raggiunge il bersaglio. È la differenza tra un termostato e un piede sull’acceleratore: il termostato smette di correggere quando la stanza è alla temperatura giusta, mentre un policy gradient continua a spingere anche dopo che l’errore si è appiattito.
GRPO condensa in un gesto la scelta di cosa premiare e il modo di muovere i pesi. TPO le separa: prima disegna un bersaglio — la distribuzione ideale $q$ sul gruppo di candidati — poi ci avvicina la policy con una cross-entropy, il cui gradiente si estingue una volta raggiunto il bersaglio.
I numeri, onesti
La prima cosa che il paper dichiara è quello che TPO non fa: sui compiti facili, con reward denso, non regala miglioramenti. Li pareggia. Su un bandit contestuale costruito da MNIST converge un filo prima (5% di errore allo step 1.600 contro 2.200 di un concorrente) e chiude al 2,9% di errore, ma è nel dominio del «sostanzialmente alla pari». Anche su GSM8K, il benchmark di problemi di matematica, TPO e GRPO arrivano entrambi allo stesso tetto — intorno all’85-87% di accuratezza — con TPO che tocca il 50% una decina di step prima. Quando il segnale è abbondante, tenere separate le due domande cambia poco.
Il quadro si ribalta quando il reward è sparso, cioè quando la ricompensa arriva rara e tardi. Sul compito di inversione di sequenze, con il vocabolario più grande testato, TPO raggiunge l’1% di errore allo step 102, contro i 148 di GRPO, i 259 di PPO e i 393 di DG. Con reward terminale — la ricompensa arriva solo alla fine della sequenza, il caso più duro di assegnazione del merito — su sequenze di lunghezza 7 TPO chiude al 6,9% di errore, contro il 14,5% di GRPO, il 12,0% di PPO e il 33,8% di DG. Un dettaglio rivelatore: togliere a GRPO la penalità KL fa schizzare il suo errore al 66,6%. Sotto reward sparso, insomma, ciò che tiene in piedi GRPO è proprio il guinzaglio KL — lo stesso ingrediente che in TPO è incorporato nella forma del bersaglio.
Il test che conta di più è il trasferimento ai modelli veri. Sui modelli da 1,5-1,7 miliardi di parametri (Qwen3-1.7B e una distillazione di DeepSeek-R1) e su compiti di ragionamento come la colorazione di grafi, il divario diventa netto: su Qwen3-1.7B GRPO fallisce del tutto — punteggio quasi nullo per 300 step — mentre TPO arriva intorno a 0,96. Una serie di ablazioni conferma che non è un trucco isolato: rimuovere l’áncora $p^{\text{old}}$ peggiora i risultati, tornare al peso scalare al posto del bersaglio è la variante peggiore, e il riuso dello stesso batch per più epoche di gradiente funziona senza far divergere l’addestramento — cosa che i concorrenti non reggono.
Perché regge dove gli altri crollano
Il paper è cauto: non c’è una singola proprietà che spieghi il vantaggio, ma un insieme che si rinforza a vicenda. La prima è il gradiente che si autoestingue: quando la policy raggiunge il bersaglio la spinta va a zero, mentre GRPO continua a muovere i pesi anche dopo che il suo errore si è appiattito. La seconda riguarda i gruppi «tutti falliti». All’inizio dell’addestramento, con reward sparso, la stragrande maggioranza dei gruppi — circa il 90% in una delle configurazioni — non contiene nessun candidato riuscito. Per TPO questi gruppi sono automaticamente neutri: varianza nulla dei punteggi significa $u = 0$, quindi $q = p^{\text{old}}$ e il loro contributo è esattamente zero. Il segnale, scarso, viene così speso solo sui pochi gruppi che distinguono davvero una risposta buona da una cattiva. La terza è il riuso multi-epoca: avendo un bersaglio $q$ fisso come punto di attrazione, lo stesso batch può essere sfruttato più volte senza i problemi di regione di fiducia che fanno divergere gli altri.
Separare cosa si vuole redistribuire da come l’ottimizzatore lo realizza non è un nuovo trucco: è igiene concettuale. Sotto reward denso quasi non si nota. Sotto reward sparso è ciò che permette al poco segnale disponibile di sopravvivere.
I limiti, dichiarati dall’autore
Il paper è esplicito sui propri confini. TPO può solo redistribuire probabilità tra i candidati che gli vengono dati: se il gruppo campionato è poco diversificato o uniformemente scadente, il bersaglio è altrettanto poco informativo. Nei compiti di sequenza servono comunque $K$ rollout per prompt, esattamente come GRPO: TPO li usa meglio, non li rende più economici. La standardizzazione dei punteggi, utile per dare una scala stabile, può anche amplificare differenze minuscole — un candidato a 0,001 e gli altri a 0 producono un bersaglio quasi deterministico dopo la normalizzazione — riproponendo lo stesso bias di difficoltà noto per GRPO. E la scala di valutazione resta piccola: i test su LLM si fermano a 1,5-1,7 miliardi di parametri su tre compiti. Se il vantaggio regga su modelli da 7 miliardi in su e su benchmark più duri come MATH o AIME è la domanda aperta che l’autore stesso pone.
Perché leggerlo
Il valore del lavoro non sta in un ottimizzatore più furbo, ma in una distinzione tenuta pulita. La maggior parte dei perfezionamenti recenti di GRPO — clipping asimmetrico, correzioni dei rapporti di importanza, normalizzazioni disaccoppiate — restano metodi a peso scalare che aggiustano un dettaglio della stessa macchina. TPO cambia la primitiva: al posto di un peso per ogni risposta, una distribuzione bersaglio sull’intero gruppo, senza rapporti di importanza e senza clipping. È un preprint di un solo autore, su scala contenuta, e sarebbe fuori registro annunciarlo come una svolta. Ma è una sostituzione diretta — nelle prove appaiate l’unica cosa che cambia è la funzione di loss — e l’RL di post-addestramento è oggi il luogo dove si forgia buona parte delle capacità dei modelli di frontiera. Una primitiva più ordinata lì non è una questione accademica: è il tipo di semplificazione che, come è già successo altre volte in questo campo, si giudica non da quanto aggiunge ma da quanto toglie.
Il paper
Jean Kaddour, Target Policy Optimization, arXiv:2604.06159 (preprint, aprile 2026). Codice disponibile su github.com/JeanKaddour/tpo.
I commenti sono riservati agli iscritti.
Accedi per commentare