---
title: "Top-k sampling (IT)"
source: "https://systems-analysis.info/int/Top-k_sampling_(IT)"
wiki: "systems-analysis.info/int"
article: "Top-k_sampling_(IT)"
language: "it"
categories:
  - "Category:Core LLM concepts"
  - "Category:Italian"
  - "Category:Large language models"
  - "Category:Machine learning"
revision_id: 8191
wiki_created_at: 2026-09-07T01:13:38Z
wiki_modified_at: 2026-09-07T01:13:38Z
downloaded_at: 2026-09-07T23:23:51Z
---

# 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 ($k$) 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 $k$ 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 $k$ opzioni;
- ne sceglie una a caso.

Minore è $k$, più cauto e prevedibile sarà il risultato. Maggiore è $k$, 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à $P(x|x_{1:i - 1})$ sull'intero vocabolario $V$. Il campionamento Top-k modifica questo processo nel modo seguente:

- **Selezione dei candidati:** Dall'intero vocabolario viene selezionato un sottoinsieme $V^{(k)}$, composto dai $k$ 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 $V^{(k)}$ viene assegnato il valore $- \infty$, il che dopo la normalizzazione produce una probabilità strettamente uguale a 0.
- **Ridistribuzione (normalizzazione):** Le probabilità dei $k$ 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 $k$ non verranno mai selezionate.

### Influenza del parametro $k$

- **$k$ piccolo (ad esempio, $k = 5$ – $10$):** 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.
- **$k$ grande (ad esempio, $k = 50$ – $100$):** 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:**
  - **$k = 1$:** Equivale al **greedy decoding**. Il modello sceglie sempre il token più probabile.
  - **$k$ = 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 $k = 10$) 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 $k$ 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-$k$.

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 ($l^{\prime} = l/\tau$), 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 $top\_ k = 0$, il passaggio Top-k non viene applicato; se $top\_ p = 1.0$, 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 $k$ 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 $k$ 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_size` per evitare che il modello si inceppi sulle stesse parole dall'elenco top-$k$.

## 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.
