Top-k sampling (BG)

From Systems analysis Wiki
Jump to navigation Jump to search

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|x1:i1) върху целия речник V. Top-k семплирането модифицира този процес по следния начин:

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

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

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

  • Малко k (например, k=510): Прави генерацията по-консервативна и предвидима. Моделът избира само от много ограничен набор от най-вероятни думи. Това повишава кохерентността, но може да доведе до повтарящ се и скучен текст.
  • Голямо k (например, k=50100): Увеличава разнообразието и креативността на текста, тъй като в избора влизат повече варианти. Въпреки това това също повишава риска от включване на по-малко релевантни или неуместни 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=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.

Вижте също

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