---
title: "Top-k sampling (CS)"
source: "https://systems-analysis.info/int/Top-k_sampling_(CS)"
wiki: "systems-analysis.info/int"
article: "Top-k_sampling_(CS)"
language: "cs"
categories:
  - "Category:Core LLM concepts"
  - "Category:Czech"
  - "Category:Large language models"
  - "Category:Machine learning"
revision_id: 8181
wiki_created_at: 2026-09-07T01:13:30Z
wiki_modified_at: 2026-09-07T01:13:30Z
downloaded_at: 2026-09-07T23:23:48Z
---

# Top-k sampling (CS)

**Top-k vzorkování** — je stochastická metoda dekódování používaná v autoregresivních jazykových modelech, včetně velkých jazykových modelů (LLM), pro generování textu. Jejím hlavním cílem je omezit výběr dalšího tokenu na pevný počet ($k$) nejpravděpodobnějších kandidátů, čímž se zabraňuje generování málo pravděpodobných a často nevhodných slov. Tato metoda byla jedním z prvních vylepšení prostého náhodného vzorkování a po dlouhou dobu představovala oblíbený způsob zlepšení koherence generovaného textu.

## Jednoduché vysvětlení

Top-k vzorkování lze představit jako výběr dalšího slova nikoli ze **všech** možných variant, ale pouze z **omezeného seznamu nejpravděpodobnějších**.

Například model dopisuje větu „Dnes venku bylo silné…". V jeho slovníku jsou tisíce pokračování: „déšť", „vítr", „sníh", „liják" — a někde daleko „kvantový" nebo náhodný symbol. Bez omezení je generování textu náchylné k různým formám **degenerace** (text degeneration). Maximalizační metody (greedy decoding, beam search) produkují nudný, opakující se text, zatímco čisté vzorkování bez ořezání riskuje ztrátu soudržnosti kvůli výběru málo pravděpodobných tokenů z „nespolehlivého chvostu" distribuce. Top-k bojuje především s tímto druhým problémem — odříznutím chvostu snižuje riziko nesmyslných pokračování, ačkoli sám o sobě neeliminuje opakování. Top-k říká: „Vezmi jen $k$ nejpravděpodobnějších slov, zapomeň na ostatní, přepočítej pravděpodobnosti mezi nimi a vyber jedno náhodně".

Jednoduše řečeno:

- model sestaví seznam nejpravděpodobnějších pokračování;
- vezme pouze prvních $k$ variant;
- náhodně vybere jedno z nich.

Čím menší $k$, tím opatrnější a předvídatelnější výsledek. Čím větší $k$, tím volnější a rozmanitější generování.

**Analogie:**

- **Restaurační menu:** místo náhodného výběru z 5 000 položek (riziko, že dostanete nepoživatelné) nebo vždy jednoho nejpopulárnějšího jídla (nudné) číšník přinese pouze top-40 doporučených — vybírejte z rozumného seznamu. Pravda, někdy se v odříznuté části menu mohlo nacházet právě to neobvyklé jídlo, které by vám chutnalo — to je cena za předvídatelnost.
- **Krátký seznam finalistů:** z 1 000 uchazečů o práci se ponechá 40 nejlepších životopisů a teprve pak se provádějí pohovory.

## Koncept a matematika

V každém kroku generování textu standardní jazykový model vydává pravděpodobnostní distribuci $P(x|x_{1:i - 1})$ přes celý slovník $V$. Top-k vzorkování tento proces modifikuje následovně:

- **Výběr kandidátů:** Z celého slovníku se vybere podmnožina $V^{(k)}$ sestávající z $k$ tokenů s nejvyššími pravděpodobnostmi.
- **Ořezání:** Logitům (surowym predikcím modelu před aplikací Softmax) všech tokenů, které se nedostaly do $V^{(k)}$, je přiřazena hodnota $- \infty$, což po normalizaci dává pravděpodobnost striktně rovnou 0.
- **Přerozdělení (normalizace):** Pravděpodobnosti zbývajících $k$ tokenů jsou škálovány tak, aby jejich nový součet byl roven 1.
- **Vzorkování:** Další token je náhodně vybrán z tohoto nového, ořezaného rozdělení.

Top-k tak zavádí **pevný práh** podle počtu kandidátů: slova s pořadím pravděpodobnosti nižším než $k$ nebudou nikdy vybrána.

### Vliv parametru $k$

- **Malé $k$ (například $k = 5$ – $10$):** Generování je **konzervativnější** a **předvídatelnější**. Model vybírá pouze z velmi omezeného souboru nejpravděpodobnějších slov. To zvyšuje koherenci, ale může vést k opakujícímu se a nudnému textu.
- **Velké $k$ (například $k = 50$ – $100$):** Zvyšuje **rozmanitost** a **kreativitu** textu, protože do výběru se dostane více variant. To však také zvyšuje riziko zahrnutí méně relevantních nebo nevhodných tokenů.
- **Hraniční případy:**
  - **$k = 1$:** Ekvivalentní **greedy decoding**. Model vždy vybere nejpravděpodobnější token.
  - **$k$ = velikost slovníku:** Ekvivalentní standardnímu vzorkování z úplného rozdělení, bez ořezání.

## Historický význam

Top-k vzorkování jako metoda dekódování bylo jedním z prvních úspěšných použití v práci Angely Fan a jejích kolegů (2018) „Hierarchical Neural Story Generation", kde autoři využili top-k random sampling (s $k = 10$) v systému hierarchického generování příběhů a ukázali, že tato strategie je výrazně efektivnější než beam search a úplné náhodné vzorkování, které riskuje vnášení málo pravděpodobných slov.

Klíčovou prací, která systematicky analyzovala problém **degenerace textu** a ukázala, že metody ořezání včetně top-k podstatně zlepšují kvalitu generování, se stala studie Holtzman et al. (2019) „The Curious Case of Neural Text Degeneration". Autoři přitom navrhli **top-p (nucleus sampling)** jako adaptivnější alternativu k top-k a na základě vlastní metriky HUSE ukázali, že nucleus sampling dosahuje lepších výsledků mezi porovnávanými strategiemi.

Například v raných demonstracích a doporučeních pro GPT-2 se hojně používala hodnota \`top_k=40\` (je zmíněna v kódu OpenAI jako „generally a good value"), což pomáhalo generovat dlouhé a koherentní texty.

## Srovnání s jinými metodami dekódování

### Top-k vs. Top-p

Top-k bylo z velké části doplněno, a v řadě úloh nahrazeno pokročilejší metodou — **Top-p (nucleus) vzorkováním**.

- **Hlavní nevýhodou Top-k je jeho neadaptivnost.** Pevná hodnota $k$ nezohledňuje tvar pravděpodobnostní distribuce:
  - Když je distribuce **ostrá** (model si je jistý několika tokeny), Top-k může uměle rozšířit výběr zahrnutím málo pravděpodobných kandidátů.
  - Když je distribuce **plochá** (model si není jistý a mnoho tokenů má podobnou pravděpodobnost), Top-k může předčasně odříznout mnoho vhodných variant.
  - Navíc Top-k pevně odřezává „chvost" distribuce (tail truncation), kvůli čemuž mohou být kontextově vhodné, ale vzácné tokeny ztraceny — metoda obětuje potenciální kreativitu ve prospěch soudržnosti.
- **Top-p** naproti tomu **dynamicky adaptuje** velikost výběru tím, že vybírá tokeny na základě jejich kumulativní pravděpodobnosti. To jej činí flexibilnějším a spolehlivějším.
- V praxi se obě metody nezřídka používají **společně** jako sekvenční filtry: jedna hrubě omezuje počet kandidátů, druhá dynamicky zužuje výběr podle jistoty modelu. Přesné pořadí jejich aplikace závisí na implementaci konkrétního frameworku.

### Top-k vs. Teplota

- **Teplota** mění tvar celého pravděpodobnostního rozdělení, ale tokeny neořezává. Ovlivňuje relativní pravděpodobnosti všech kandidátů.
- **Top-k** zavádí **pevné ořezání**, zcela vylučující tokeny mimo top-$k$.

V praxi lze Top-k kombinovat s teplotou a Top-p. Přesné pořadí aplikace filtrů závisí na frameworku: například v Hugging Face Transformers vypadá pipeline jako **Teplota → Top-k → Top-p**, tedy teplota nejprve škáluje logity ($l^{\prime} = l/au$), poté Top-k odřízne dlouhý „chvost" nežádoucích tokenů a teprve poté Top-p dynamicky zúží výběr v závislosti na jistotě modelu. Přitom jednotlivé kroky mohou být přeskočeny v závislosti na nastavení: pokud $top\_ k = 0$, krok Top-k se neaplikuje; pokud $top\_ p = 1.0$, krok Top-p se neaplikuje.

## Praktické použití

Přestože Top-p je adaptivnější metodou a často se používá jako výchozí pro otevřené generování textu, univerzálně nejlepší metoda dekódování neexistuje — optimální volba závisí na úloze, modelu a prioritách (kvalita, rychlost, robustnost). Top-k zůstává široce podporovaným parametrem ve všech hlavních frameworcích (Hugging Face Transformers, vLLM a další) a aktivně se používá jak samostatně, tak v kombinaci s jinými metodami.

- **Typické hodnoty:** V praxi se často používají hodnoty $k$ v řádu desítek tokenů (například 10, 40, 50), ale optimum závisí na modelu a úloze.
- **Doporučení:** Pro otevřené generování textu se často preferuje Top-p. Pokud se používá Top-k, mělo by být kombinováno s mírnou teplotou a hodnota $k$ by měla být pečlivě nastavena pro konkrétní úlohu. Top-k je také vhodný jako dodatečný „pojistný ventil" při vysoké teplotě.
- **Poznámka:** Ve frameworcích lze Top-k kombinovat s **Repetition Penalty** (penalizací za opakování) a parametrem `no_repeat_ngram_size`, aby se zabránilo zacyklení modelu na stejných slovech z top-$k$ seznamu.

## Literatura

### Základní práce

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

### Doporučená literatura

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

## Viz také

- Velké jazykové modely
