Top-k sampling (IT)
Il campionamento Top-k è un metodo di decodifica stocastico utilizzato nei modelli linguistici autoregressivi, inclusi i modelli linguistici di grandi dimensioni (LLM), per la generazione di testo. Il suo obiettivo principale è limitare il campionamento del token successivo a un numero fisso () di candidati più probabili, consentendo di evitare la generazione di parole poco probabili e spesso inappropriate. Questo metodo è stato uno dei primi miglioramenti al semplice campionamento casuale e per molto tempo ha rappresentato un modo popolare per migliorare la coerenza del testo generato.
Spiegazione semplice
Il campionamento Top-k può essere immaginato come la scelta della parola successiva non da tutti i possibili candidati, ma solo da un elenco ristretto dei più probabili.
Ad esempio, il modello sta completando la frase «Oggi in strada cadeva una forte…». Nel suo vocabolario esistono migliaia di continuazioni: «pioggia», «vento», «neve», «acquazzone» — e da qualche parte più in là «quantistica» o un simbolo casuale. Senza restrizioni, la generazione di testo è soggetta a varie forme di degenerazione (text degeneration). I metodi di massimizzazione (greedy decoding, beam search) producono testi noiosi e ripetitivi, mentre il campionamento puro senza troncatura rischia di scivolare nell'incoerenza a causa della selezione di token poco probabili dalla «coda inaffidabile» della distribuzione. Top-k combatte principalmente il secondo problema: tagliando la coda, riduce il rischio di continuazioni prive di senso, sebbene da solo non elimini la ripetitività. Top-k dice: «Prendi solo le parole più probabili, dimentica il resto, ricalcola le probabilità tra di esse e scegline una a caso».
In parole povere:
- il modello compila un elenco delle continuazioni più probabili;
- prende solo le prime opzioni;
- ne sceglie una a caso.
Minore è , più cauto e prevedibile sarà il risultato. Maggiore è , più libera e varia sarà la generazione.
Analogie:
- Menu del ristorante: invece di scegliere a caso tra 5.000 voci (rischio di ricevere qualcosa di immangiabile) o scegliere sempre il piatto più popolare (noioso), il cameriere porta solo i 40 piatti più consigliati — si sceglie da un elenco ragionevole. Certo, a volte nella parte esclusa del menu potrebbe trovarsi proprio quel piatto insolito che vi sarebbe piaciuto — questo è il prezzo della prevedibilità.
- Shortlist dei finalisti: da 1.000 candidati a un lavoro si selezionano i 40 migliori curriculum, e poi si conducono i colloqui.
Concetto e matematica
A ogni passo della generazione del testo, un modello linguistico standard produce una distribuzione di probabilità sull'intero vocabolario . Il campionamento Top-k modifica questo processo nel modo seguente:
- Selezione dei candidati: Dall'intero vocabolario viene selezionato un sottoinsieme , composto dai token con le probabilità più elevate.
- Troncatura: Ai logit (le predizioni grezze del modello prima dell'applicazione della Softmax) di tutti i token non inclusi in viene assegnato il valore , il che dopo la normalizzazione produce una probabilità strettamente uguale a 0.
- Ridistribuzione (normalizzazione): Le probabilità dei token rimanenti vengono scalate in modo che la loro nuova somma sia uguale a 1.
- Campionamento: Il token successivo viene scelto casualmente da questa nuova distribuzione troncata.
In questo modo, Top-k introduce una soglia rigida sul numero di candidati: le parole con rango di probabilità inferiore a non verranno mai selezionate.
Influenza del parametro
- piccolo (ad esempio, – ): Rende la generazione più conservativa e prevedibile. Il modello sceglie solo da un insieme molto ristretto delle parole più probabili. Ciò aumenta la coerenza, ma può portare a un testo ripetitivo e noioso.
- grande (ad esempio, – ): Aumenta la varietà e la creatività del testo, poiché nel campionamento rientrano più opzioni. Tuttavia, ciò aumenta anche il rischio di includere token meno rilevanti o inappropriati.
- Casi limite:
- : Equivale al greedy decoding. Il modello sceglie sempre il token più probabile.
- = dimensione del vocabolario: Equivale al campionamento standard dall'intera distribuzione, senza troncatura.
Significato storico
Il campionamento Top-k come metodo di decodifica è stato uno dei primi utilizzi di successo nel lavoro di Angela Fan e colleghi (2018) «Hierarchical Neural Story Generation», in cui gli autori hanno impiegato il top-k random sampling (con ) in un sistema di generazione gerarchica di storie, dimostrando che tale strategia è significativamente più efficace del beam search e del campionamento casuale completo, che rischia di introdurre parole poco probabili.
Tuttavia, il lavoro chiave che ha analizzato sistematicamente il problema della degenerazione del testo e ha mostrato che i metodi di troncatura, incluso top-k, migliorano sostanzialmente la qualità della generazione, è stato l'articolo di Holtzman et al. (2019) «The Curious Case of Neural Text Degeneration». In tale lavoro gli autori hanno proposto il top-p (nucleus sampling) come alternativa più adattiva a top-k, dimostrando, secondo la propria metrica HUSE, che il nucleus sampling produce risultati migliori tra le strategie confrontate.
Ad esempio, nelle prime dimostrazioni e raccomandazioni per GPT-2 veniva ampiamente utilizzato il valore `top_k=40` (menzionato nel codice OpenAI come «generally a good value»), che aiutava a generare testi lunghi e coerenti.
Confronto con altri metodi di decodifica
Top-k vs. Top-p
Top-k è stato in larga misura integrato, e in alcuni compiti sostituito, da un metodo più avanzato — il campionamento Top-p (nucleus).
- Il principale svantaggio di Top-k è la sua non adattatività. Il valore fisso non tiene conto della forma della distribuzione di probabilità:
- Quando la distribuzione è acuta (il modello è sicuro di pochi token), Top-k può ampliare artificialmente il campionamento, includendovi candidati poco probabili.
- Quando la distribuzione è piatta (il modello è incerto e molti token hanno probabilità simili), Top-k può eliminare prematuramente molte opzioni appropriate.
- Inoltre, Top-k tronca rigidamente la «coda» della distribuzione (tail truncation), per cui token contestualmente pertinenti ma rari possono andare perduti — il metodo sacrifica la potenziale creatività in favore della coerenza.
- Top-p, al contrario, adatta dinamicamente la dimensione del campionamento, selezionando i token in base alla loro probabilità cumulativa. Ciò lo rende più flessibile e affidabile.
- In pratica, entrambi i metodi vengono spesso utilizzati congiuntamente come filtri sequenziali: uno limita grossolanamente il numero di candidati, l'altro riduce dinamicamente il campionamento in base alla certezza del modello. L'esatto ordine di applicazione dipende dall'implementazione del framework specifico.
Top-k vs. Temperatura
- La Temperatura modifica la forma dell'intera distribuzione di probabilità, ma non tronca i token. Influisce sulle probabilità relative di tutti i candidati.
- Top-k introduce una troncatura rigida, escludendo completamente i token al di fuori del top-.
In pratica, Top-k può essere utilizzato congiuntamente con la temperatura e Top-p. L'esatto ordine di applicazione dei filtri dipende dal framework: ad esempio, in Hugging Face Transformers la pipeline è Temperatura → Top-k → Top-p, ovvero la temperatura scala prima i logit (), poi Top-k elimina la lunga «coda» dei token spazzatura, e solo dopo Top-p restringe dinamicamente il campionamento in base alla certezza del modello. Alcuni passaggi possono essere omessi a seconda delle impostazioni: se , il passaggio Top-k non viene applicato; se , il passaggio Top-p non viene applicato.
Applicazione pratica
Nonostante Top-p sia un metodo più adattivo e venga spesso usato come base per la generazione aperta di testo, non esiste un metodo di decodifica universalmente migliore — la scelta ottimale dipende dal compito, dal modello e dalle priorità (qualità, velocità, robustezza). Top-k rimane un parametro ampiamente supportato in tutti i principali framework (Hugging Face Transformers, vLLM e altri) ed è attivamente utilizzato sia autonomamente sia in combinazione con altri metodi.
- Valori tipici: In pratica vengono spesso utilizzati valori di dell'ordine di decine di token (ad esempio 10, 40, 50), ma l'ottimo dipende dal modello e dal compito.
- Raccomandazioni: Per la generazione aperta di testo si preferisce spesso Top-p. Se si utilizza Top-k, è consigliabile abbinarlo a una temperatura moderata e selezionare con cura il valore di per il compito specifico. Top-k è anche comodo come ulteriore «salvaguardia» a temperature elevate.
- Nota: Nei framework, Top-k può essere combinato con Repetition Penalty (penalità per le ripetizioni) e il parametro
no_repeat_ngram_sizeper evitare che il modello si inceppi sulle stesse parole dall'elenco top-.
Vedi anche
- Modelli linguistici di grandi dimensioni
Bibliografia
Lavori fondamentali
- Fan, A. et al. (2018). Hierarchical Neural Story Generation. ACL Anthology. arXiv:1805.04833.
- Holtzman, A. et al. (2019). The Curious Case of Neural Text Degeneration. arXiv:1904.09751 (ICLR 2020).
- Finlayson, M. et al. (2024). Closing the Curious Case of Neural Text Degeneration. OpenReview:dONpC9GL1o (ICLR 2024).
Letture di approfondimento
- Meister, C. et al. (2022). Locally Typical Sampling. arXiv:2202.00666 (TACL 2023).
- Su, Y.; Lan, T.; Wang, Y.; Yogatama, D.; Kong, L.; Collier, N. (2022). A Contrastive Framework for Neural Text Generation. arXiv:2202.06417 (NeurIPS 2022).
- O'Brien, S.; Lewis, M. (2023). Contrastive Decoding Improves Reasoning in Large Language Models. arXiv:2309.09117.
- Shi, C. et al. (2024). A Thorough Examination of Decoding Methods in the Era of Large Language Models. ACL Anthology. arXiv:2402.06925.
- Ravfogel, S.; Goldberg, Y.; Goldberger, J. (2023). Conformal Nucleus Sampling. arXiv:2305.02633.
- Chen, S. J. et al. (2024). Decoding Game: On Minimax Optimality of Heuristic Text Generation Strategies. arXiv:2410.03968 (ICLR 2025).
- Sen, J. et al. (2025). Advancing Decoding Strategies: Enhancements in Locally Typical Sampling for LLMs. arXiv:2506.05387.