---
title: "Top-k sampling (BG)"
source: "https://systems-analysis.info/int/Top-k_sampling_(BG)"
wiki: "systems-analysis.info/int"
article: "Top-k_sampling_(BG)"
language: "bg"
categories:
  - "Category:Bulgarian"
  - "Category:Core LLM concepts"
  - "Category:Large language models"
  - "Category:Machine learning"
revision_id: 8179
wiki_created_at: 2026-09-07T01:13:28Z
wiki_modified_at: 2026-09-07T01:13:28Z
downloaded_at: 2026-09-07T23:23:47Z
---

# Top-k sampling (BG)

**Top-k семплиране** — това е стохастичен метод на декодиране, използван в авторегресивни езикови модели, включително големи езикови модели (LLM), за генериране на текст. Основната му цел е да ограничи избора на следващия token до фиксиран брой ($k$) най-вероятни кандидати, което позволява да се избегне генерирането на малко вероятни и често неуместни думи. Този метод беше едно от първите подобрения на простото случайно семплиране и дълго време беше популярен начин за подобряване на кохерентността на генерирания текст.

## Просто обяснение

Top-k семплирането може да се представи като избор на следващата дума не от **всички** възможни варианти, а само от **ограничен списък с най-вероятните**.

Например, моделът довършва изречението „Днес на улицата валеше силен…". В речника му има хиляди продължения: „дъжд", „вятър", „сняг", „порой" — и някъде далеч „квантов" или случаен символ. Без ограничения генерирането на текст е подложено на различни форми на **деградация** (text degeneration). Методите за максимизация (жадно декодиране, beam search) пораждат скучен, повтарящ се текст, докато чистото семплиране без отсичане рискува да стигне до безсвързност поради избора на малко вероятни token-и от „ненадеждната опашка" на разпределението. Top-k се бори преди всичко именно с втория проблем — като отсича опашката, намалява риска от безсмислени продължения, макар сам по себе си да не премахва повторяемостта. Top-k казва: „Вземи само $k$ най-вероятни думи, забрави за останалите, преизчисли вероятностите сред тях и избери една случайно".

Накратко:

- моделът съставя списък с най-вероятните продължения;
- взема само първите $k$ варианта;
- случайно избира един от тях.

Колкото по-малко е $k$, толкова по-предпазлив и предвидим е резултатът. Колкото по-голямо е $k$, толкова по-свободна и разнообразна е генерацията.

**Аналогии:**

- **Ресторантско меню:** вместо случаен избор от 5 000 позиции (риск от нещо негодно за ядене) или винаги едно и също най-популярно ястие (скучно), сервитьорът донася само топ-40 препоръчвани — избирате от разумен списък. Вярно е, че понякога в отрязаната част от менюто можеше да се окаже именно онова необичайно ястие, което би ви харесало — това е цената на предвидимостта.
- **Кратък списък с финалисти:** от 1 000 кандидати за работа се оставят 40-те най-добри автобиографии, след което се провеждат събеседвания.

## Концепция и математика

На всяка стъпка от генерирането на текст стандартният езиков модел дава вероятностно разпределение $P(x|x_{1:i - 1})$ върху целия речник $V$. Top-k семплирането модифицира този процес по следния начин:

- **Отбор на кандидати:** От целия речник се избира подмножество $V^{(k)}$, съставено от $k$ token-а с най-високи вероятности.
- **Отсичане:** На логитите (суровите предсказания на модела преди прилагане на Softmax) на всички token-и, невключени в $V^{(k)}$, се присвоява стойност $- \infty$, което след нормализация дава вероятност строго равна на 0.
- **Преразпределение (нормализация):** Вероятностите на останалите $k$ token-а се мащабират така, че новата им сума да е равна на 1.
- **Избор:** Следващият token се избира случайно от това ново, отсечено разпределение.

По този начин Top-k въвежда **твърд праг** по брой кандидати: думи с ранг на вероятност под $k$ никога няма да бъдат избрани.

### Влияние на параметъра $k$

- **Малко $k$ (например, $k = 5$ – $10$):** Прави генерацията по-**консервативна** и **предвидима**. Моделът избира само от много ограничен набор от най-вероятни думи. Това повишава кохерентността, но може да доведе до повтарящ се и скучен текст.
- **Голямо $k$ (например, $k = 50$ – $100$):** Увеличава **разнообразието** и **креативността** на текста, тъй като в избора влизат повече варианти. Въпреки това това също повишава риска от включване на по-малко релевантни или неуместни token-и.
- **Гранични случаи:**
  - **$k = 1$:** Еквивалентно на **жадно декодиране (greedy decoding)**. Моделът винаги избира най-вероятния token.
  - **$k$ = размер на речника:** Еквивалентно на стандартно семплиране от пълното разпределение, без отсичане.

## Историческо значение

Top-k семплирането като метод на декодиране беше едно от ранните успешни приложения в работата на Анджела Фан и нейните колеги (2018) „Hierarchical Neural Story Generation", където авторите използваха top-k random sampling (с $k = 10$) в система за йерархично генериране на истории и показаха, че тази стратегия е значително по-ефективна от beam search и пълното случайно семплиране, което рискува да внася малко вероятни думи.

Въпреки това ключовата работа, която систематично анализира проблема с **деградацията на текста** и показа, че методите за отсичане (truncation), включително top-k, съществено подобряват качеството на генерацията, беше статията на Holtzman et al. (2019) „The Curious Case of Neural Text Degeneration". При това авторите предложиха **top-p (nucleus sampling)** като по-адаптивна алтернатива на top-k, показвайки по своята HUSE-метрика, че nucleus sampling дава по-добри резултати сред сравняваните стратегии.

Например, в ранните демонстрации и препоръки за GPT-2 широко се използваше стойността \`top_k=40\` (тя се споменава в кода на OpenAI като „generally a good value"), което помагаше за генериране на дълги и кохерентни текстове.

## Сравнение с други методи на декодиране

### Top-k vs. Top-p

Top-k беше в голяма степен допълнен, а при редица задачи заменен от по-усъвършенствания метод — **Top-p (nucleus) семплиране**.

- **Главният недостатък на Top-k е неговата неадаптивност.** Фиксираната стойност $k$ не отчита формата на вероятностното разпределение:
  - Когато разпределението е **остро** (моделът е уверен в няколко token-а), Top-k може изкуствено да разшири избора, включвайки в него малко вероятни кандидати.
  - Когато разпределението е **плоско** (моделът не е уверен и множество token-и имат сходна вероятност), Top-k може преждевременно да отсече много подходящи варианти.
  - Освен това Top-k твърдо отсича „опашката" на разпределението (tail truncation), поради което контекстно уместни, но редки token-и могат да бъдат загубени — методът жертва потенциалната креативност в полза на свързаността.
- **Top-p**, напротив, **динамично адаптира** размера на избора, отбирайки token-и въз основа на тяхната съвкупна вероятност. Това го прави по-гъвкав и надежден.
- На практика двата метода нерядко се използват **съвместно** като последователни филтри: единият грубо ограничава броя на кандидатите, другият динамично стеснява избора според увереността на модела. Точният ред на прилагането им зависи от реализацията на конкретния framework.

### Top-k vs. Температура

- **Температурата** променя формата на цялото вероятностно разпределение, но не отсича token-и. Тя влияе на относителните вероятности на всички кандидати.
- **Top-k** въвежда **твърдо отсичане**, напълно изключвайки token-ите извън топ-$k$.

На практика Top-k може да се използва съвместно с температура и Top-p. Точният ред на прилагане на филтрите зависи от framework-а: например, в Hugging Face Transformers конвейерът изглежда като **Температура → Top-k → Top-p**, тоест температурата първо мащабира логитите ($l^{\prime} = l/au$), след това Top-k отсича дългата „опашка" от ненужни token-и, и едва след това Top-p динамично стеснява избора в зависимост от увереността на модела. При това отделни стъпки могат да се пропускат в зависимост от настройките: ако $top\_ k = 0$, стъпката Top-k не се прилага; ако $top\_ p = 1.0$, стъпката Top-p не се прилага.

## Практическо приложение

Въпреки че Top-p е по-адаптивен метод и често се използва като базов за отворено генериране на текст, универсално по-добър метод на декодиране не съществува — оптималният избор зависи от задачата, модела и приоритетите (качество, скорост, устойчивост). Top-k остава широко поддържан параметър във всички основни framework-ове (Hugging Face Transformers, vLLM и др.) и активно се прилага както самостоятелно, така и в комбинация с други методи.

- **Типични стойности:** На практика често се използват стойности $k$ от порядъка на десетки token-и (например 10, 40, 50), но оптимумът зависи от модела и задачата.
- **Препоръки:** За отворено генериране на текст често се предпочита Top-p. Ако се използва Top-k, трябва да се съчетава с умерена температура и внимателно да се подбира стойността $k$ за конкретната задача. Top-k е удобен и като допълнителен „предпазител" при висока температура.
- **Забележка:** Във framework-овете Top-k може да се съчетава с **Repetition Penalty** (наказание за повторения) и параметъра `no_repeat_ngram_size`, за да се предотврати зацикляне на модела върху едни и същи думи от топ-$k$ списъка.

## Литература

### Основополагащи трудове

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

### Допълнително четене

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

## Вижте също

- Големи езикови модели
