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 () 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 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 wariantów;
- losowo wybiera jeden z nich.
Im mniejsze , tym ostrożniejszy i bardziej przewidywalny wynik. Im większe , 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 po całym słowniku . 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 składający się z 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 , przypisuje się wartość , co po normalizacji daje prawdopodobieństwo ściśle równe 0.
- Redystrybucja (normalizacja): Prawdopodobieństwa pozostałych 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ż nigdy nie zostaną wybrane.
Wpływ parametru
- Małe (np. – ): 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 (np. – ): 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:
- : Odpowiednik greedy decoding. Model zawsze wybiera najbardziej prawdopodobny token.
- = 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 ) 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ść 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-.
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 (), 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 , krok Top-k nie jest stosowany; jeśli , 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 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ść 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-.
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