---
title: "Top-k sampling (PL)"
source: "https://systems-analysis.info/int/Top-k_sampling_(PL)"
wiki: "systems-analysis.info/int"
article: "Top-k_sampling_(PL)"
language: "pl"
categories:
  - "Category:Core LLM concepts"
  - "Category:Large language models"
  - "Category:Machine learning"
  - "Category:Polish"
revision_id: 8194
wiki_created_at: 2026-09-07T01:13:40Z
wiki_modified_at: 2026-09-07T01:13:40Z
downloaded_at: 2026-09-07T23:23:52Z
---

# Top-k sampling (PL)

**Próbkowanie Top-k** — to stochastyczna metoda dekodowania stosowana w autoregresyjnych modelach językowych, w tym w dużych modelach językowych (LLM), do generowania tekstu. Jej głównym celem jest ograniczenie wyboru następnego tokenu do ustalonej liczby ($k$) najbardziej prawdopodobnych kandydatów, co pozwala uniknąć generowania mało prawdopodobnych i często nieodpowiednich słów. Metoda ta była jednym z pierwszych udoskonaleń prostego losowego próbkowania i przez długi czas pozostawała popularnym sposobem poprawy spójności generowanego tekstu.

## Proste wyjaśnienie

Próbkowanie Top-k można wyobrazić sobie jako wybór następnego słowa nie spośród **wszystkich** możliwych wariantów, lecz tylko z **ograniczonej listy najbardziej prawdopodobnych**.

Na przykład model uzupełnia zdanie „Dziś na ulicy padał silny…". W jego słowniku znajdują się tysiące kontynuacji: „deszcz", „wiatr", „śnieg", „ulewa" — a gdzieś daleko „kwantowy" lub losowy symbol. Bez ograniczeń generowanie tekstu jest podatne na różne formy **degradacji** (text degeneration). Metody maksymalizacyjne (greedy decoding, beam search) produkują nudny, powtarzający się tekst, podczas gdy czyste próbkowanie bez obcinania ryzykuje utratę spójności wskutek wyboru mało prawdopodobnych tokenów z „zawodnego ogona" rozkładu. Top-k zwalcza przede wszystkim ten drugi problem — obcinając ogon, zmniejsza ryzyko bezsensownych kontynuacji, choć samo w sobie nie eliminuje powtarzalności. Top-k mówi: „Weź tylko $k$ najbardziej prawdopodobnych słów, zapomnij o reszcie, przelicz wśród nich prawdopodobieństwa i wybierz jedno losowo".

Mówiąc prościej:

- model tworzy listę najbardziej prawdopodobnych kontynuacji;
- bierze tylko pierwsze $k$ wariantów;
- losowo wybiera jeden z nich.

Im mniejsze $k$, tym ostrożniejszy i bardziej przewidywalny wynik. Im większe $k$, tym swobodniejsza i bardziej zróżnicowana generacja.

**Analogie:**

- **Menu restauracji:** zamiast losowego wyboru spośród 5 000 pozycji (ryzyko otrzymania czegoś niejadalnego) lub zawsze tego samego najpopularniejszego dania (nudne) kelner przynosi tylko top-40 rekomendowanych — wybierasz z rozsądnej listy. Prawda, że czasem w obciętej części menu mogło znajdować się właśnie to nietypowe danie, które by ci smakowało — to cena za przewidywalność.
- **Krótka lista finalistów:** spośród 1 000 kandydatów do pracy wybiera się 40 najlepszych CV, a dopiero potem przeprowadza rozmowy kwalifikacyjne.

## Koncepcja i matematyka

Na każdym kroku generowania tekstu standardowy model językowy zwraca rozkład prawdopodobieństwa $P(x|x_{1:i - 1})$ po całym słowniku $V$. Próbkowanie Top-k modyfikuje ten proces w następujący sposób:

- **Dobór kandydatów:** Z całego słownika wybiera się podzbiór $V^{(k)}$ składający się z $k$ tokenów o najwyższych prawdopodobieństwach.
- **Obcięcie:** Logitom (surowym przewidywaniom modelu przed zastosowaniem Softmax) wszystkich tokenów, które nie weszły do $V^{(k)}$, przypisuje się wartość $- \infty$, co po normalizacji daje prawdopodobieństwo ściśle równe 0.
- **Redystrybucja (normalizacja):** Prawdopodobieństwa pozostałych $k$ tokenów są skalowane tak, aby ich nowa suma wynosiła 1.
- **Próbkowanie:** Następny token jest losowo wybierany z tego nowego, obciętego rozkładu.

W ten sposób Top-k wprowadza **twardy próg** według liczby kandydatów: słowa o randze prawdopodobieństwa niższej niż $k$ nigdy nie zostaną wybrane.

### Wpływ parametru $k$

- **Małe $k$ (np. $k = 5$ – $10$):** Sprawia, że generacja jest bardziej **konserwatywna** i **przewidywalna**. Model wybiera tylko z bardzo ograniczonego zestawu najbardziej prawdopodobnych słów. Zwiększa to spójność, ale może prowadzić do powtarzającego się i nudnego tekstu.
- **Duże $k$ (np. $k = 50$ – $100$):** Zwiększa **różnorodność** i **kreatywność** tekstu, ponieważ do próbki trafia więcej wariantów. Jednak zwiększa to również ryzyko włączenia mniej trafnych lub nieodpowiednich tokenów.
- **Przypadki graniczne:**
  - **$k = 1$:** Odpowiednik **greedy decoding**. Model zawsze wybiera najbardziej prawdopodobny token.
  - **$k$ = rozmiar słownika:** Odpowiednik standardowego próbkowania z pełnego rozkładu, bez obcinania.

## Znaczenie historyczne

Próbkowanie Top-k jako metoda dekodowania było jednym z pierwszych udanych zastosowań w pracy Angeli Fan i współautorów (2018) „Hierarchical Neural Story Generation", gdzie autorzy użyli top-k random sampling (z $k = 10$) w systemie hierarchicznego generowania historii i wykazali, że taka strategia jest znacznie skuteczniejsza niż beam search i pełne losowe próbkowanie, które ryzykuje wprowadzanie mało prawdopodobnych słów.

Jednakże kluczową pracą, która systematycznie przeanalizowała problem **degradacji tekstu** i wykazała, że metody obcinania, w tym top-k, istotnie poprawiają jakość generacji, była praca Holtzman et al. (2019) „The Curious Case of Neural Text Degeneration". Jednocześnie autorzy zaproponowali **top-p (nucleus sampling)** jako bardziej adaptacyjną alternatywę dla top-k, wykazując według swojej metryki HUSE, że nucleus sampling daje lepsze wyniki spośród porównywanych strategii.

Na przykład we wczesnych demonstracjach i zaleceniach dla GPT-2 powszechnie stosowano wartość \`top_k=40\` (jest ona wymieniana w kodzie OpenAI jako „generally a good value"), co pomagało generować długie i spójne teksty.

## Porównanie z innymi metodami dekodowania

### Top-k vs. Top-p

Top-k został w dużej mierze uzupełniony, a w wielu zadaniach zastąpiony bardziej zaawansowaną metodą — **próbkowaniem Top-p (nucleus)**.

- **Główną wadą Top-k jest jego nieadaptacyjność.** Stała wartość $k$ nie uwzględnia kształtu rozkładu prawdopodobieństwa:
  - Gdy rozkład jest **ostry** (model jest pewny co do kilku tokenów), Top-k może sztucznie rozszerzyć próbkę, włączając do niej mało prawdopodobnych kandydatów.
  - Gdy rozkład jest **płaski** (model jest niepewny i wiele tokenów ma zbliżone prawdopodobieństwo), Top-k może przedwcześnie odciąć wiele odpowiednich wariantów.
  - Ponadto Top-k sztywno obcina „ogon" rozkładu (tail truncation), przez co kontekstowo trafne, lecz rzadkie tokeny mogą zostać utracone — metoda poświęca potencjalną kreatywność na rzecz spójności.
- **Top-p**, odwrotnie, **dynamicznie adaptuje** rozmiar próbki, dobierając tokeny na podstawie ich skumulowanego prawdopodobieństwa. Czyni go to bardziej elastycznym i niezawodnym.
- W praktyce obie metody są nierzadko stosowane **łącznie** jako kolejne filtry: jedna z grubsza ogranicza liczbę kandydatów, druga dynamicznie zawęża próbkę według pewności modelu. Dokładna kolejność ich stosowania zależy od implementacji konkretnego frameworka.

### Top-k vs. Temperatura

- **Temperatura** zmienia kształt całego rozkładu prawdopodobieństwa, ale nie obcina tokenów. Wpływa na względne prawdopodobieństwa wszystkich kandydatów.
- **Top-k** wprowadza **twarde obcięcie**, całkowicie wykluczając tokeny spoza top-$k$.

W praktyce Top-k może być stosowany łącznie z temperaturą i Top-p. Dokładna kolejność stosowania filtrów zależy od frameworka: na przykład w Hugging Face Transformers potok wygląda następująco: **Temperatura → Top-k → Top-p**, czyli temperatura najpierw skaluje logity ($l^{\prime} = l/au$), następnie Top-k obcina długi „ogon" śmieciowych tokenów, a dopiero potem Top-p dynamicznie zawęża próbkę w zależności od pewności modelu. Przy tym poszczególne kroki mogą być pomijane w zależności od ustawień: jeśli $top\_ k = 0$, krok Top-k nie jest stosowany; jeśli $top\_ p = 1.0$, krok Top-p nie jest stosowany.

## Zastosowanie praktyczne

Pomimo że Top-p jest metodą bardziej adaptacyjną i często stosowaną jako bazowa dla otwartego generowania tekstu, nie istnieje uniwersalnie lepsza metoda dekodowania — optymalny wybór zależy od zadania, modelu i priorytetów (jakość, szybkość, stabilność). Top-k pozostaje szeroko obsługiwanym parametrem we wszystkich głównych frameworkach (Hugging Face Transformers, vLLM i in.) i jest aktywnie stosowany zarówno samodzielnie, jak i w połączeniu z innymi metodami.

- **Typowe wartości:** W praktyce często stosuje się wartości $k$ rzędu kilkudziesięciu tokenów (np. 10, 40, 50), ale optimum zależy od modelu i zadania.
- **Zalecenia:** Do otwartego generowania tekstu często preferuje się Top-p. Jeśli stosuje się Top-k, należy łączyć go z umiarkowaną temperaturą i starannie dobierać wartość $k$ do konkretnego zadania. Top-k jest również wygodny jako dodatkowe „zabezpieczenie" przy wysokiej temperaturze.
- **Uwaga:** We frameworkach Top-k może być łączony z **Repetition Penalty** (karą za powtórzenia) i parametrem `no_repeat_ngram_size`, aby zapobiec zapętlaniu się modelu na tych samych słowach z listy top-$k$.

## Literatura

### Prace podstawowe

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

### Literatura uzupełniająca

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

## Zobacz też

- Duże modele językowe
