Top-k
Top-k сэмплирование — это стохастический метод декодирования, используемый в автогрегрессионных языковых моделях, включая большие языковые модели (LLM), для генерации текста. Его основная цель — ограничить выборку следующего токена фиксированным числом () наиболее вероятных кандидатов, что позволяет избежать генерации маловероятных и часто неуместных слов. Этот метод был одним из первых усовершенствований простого случайного сэмплирования и долгое время являлся популярным способом улучшения когерентности генерируемого текста.
Простое объяснение
Top-k сэмплирование можно представить как выбор следующего слова не из всех возможных вариантов, а только из ограниченного списка самых вероятных.
Например, модель дописывает фразу «Сегодня на улице шёл сильный…». В её словаре тысячи продолжений: «дождь», «ветер», «снег», «ливень» — и где-то далеко «квантовый» или случайный символ. Без ограничений генерация текста подвержена различным формам деградации (text degeneration). Максимизационные методы (жадное декодирование, beam search) порождают скучный, повторяющийся текст, тогда как чистый сэмплинг без усечения рискует уйти в бессвязность из-за выбора маловероятных токенов из «ненадёжного хвоста» распределения. Top-k в первую очередь борется именно со второй проблемой — отсекая хвост, он снижает риск бессмысленных продолжений, хотя сам по себе не устраняет повторяемость. Top-k говорит: «Возьми только самых вероятных слов, забудь про остальное, пересчитай вероятности среди них и выбери одно случайно».
Проще говоря:
- модель составляет список наиболее вероятных продолжений;
- берёт только первые вариантов;
- случайно выбирает один из них.
Чем меньше , тем осторожнее и предсказуемее результат. Чем больше , тем свободнее и разнообразнее генерация.
Аналогии:
- Ресторанное меню: вместо случайного выбора из 5 000 позиций (риск получить несъедобное) или всегда одного самого популярного блюда (скучно) официант приносит только топ-40 рекомендуемых — выбирайте из разумного списка. Правда, иногда в отсечённой части меню могло оказаться именно то необычное блюдо, которое бы вам понравилось — это цена за предсказуемость.
- Короткий список финалистов: из 1 000 кандидатов на работу оставляют 40 лучших резюме, а потом уже проводят собеседования.
Концепция и математика
На каждом шаге генерации текста стандартная языковая модель выдаёт вероятностное распределение по всему словарю . Top-k сэмплирование модифицирует этот процесс следующим образом:
- Отбор кандидатов: Из всего словаря выбирается подмножество , состоящее из токенов с наивысшими вероятностями.
- Отсечение: Логитам (сырым предсказаниям модели до применения Softmax) всех токенов, не вошедших в , присваивается значение , что после нормализации даёт вероятность строго равную 0.
- Перераспределение (нормализация): Вероятности оставшихся токенов масштабируются так, чтобы их новая сумма была равна 1.
- Выборка: Следующий токен случайным образом выбирается из этого нового, усечённого распределения.
Таким образом, Top-k вводит жёсткий порог по количеству кандидатов: слова с рангом вероятности ниже никогда не будут выбраны.
Влияние параметра
- Маленькое (например, – ): Делает генерацию более консервативной и предсказуемой. Модель выбирает только из очень ограниченного набора наиболее вероятных слов. Это повышает когерентность, но может привести к повторяющемуся и скучному тексту.
- Большое (например, – ): Увеличивает разнообразие и креативность текста, так как в выборку попадает больше вариантов. Однако это также повышает риск включения менее релевантных или неуместных токенов.
- Граничные случаи:
- : Эквивалентно жадному декодированию (greedy decoding). Модель всегда выбирает самый вероятный токен.
- = размер словаря: Эквивалентно стандартному сэмплированию из полного распределения, без отсечения.
Историческое значение
Top-k сэмплирование как метод декодирования было одним из ранних успешных применений в работе Ангелы Фан и её коллег (2018) «Hierarchical Neural Story Generation», где авторы использовали top-k random sampling (с ) в системе иерархической генерации историй и показали, что такая стратегия существенно эффективнее 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 — его неадаптивность. Фиксированное значение не учитывает форму вероятностного распределения:
- Когда распределение острое (модель уверена в нескольких токенах), Top-k может искусственно расширить выборку, включив в неё маловероятные кандидаты.
- Когда распределение плоское (модель не уверена и множество токенов имеют схожую вероятность), Top-k может преждевременно отсечь много подходящих вариантов.
- Кроме того, Top-k жёстко отсекает «хвост» распределения (tail truncation), из-за чего контекстно уместные, но редкие токены могут быть потеряны — метод жертвует потенциальной креативностью ради связности.
- Top-p, напротив, динамически адаптирует размер выборки, отбирая токены на основе их совокупной вероятности. Это делает его более гибким и надёжным.
- На практике оба метода нередко используются совместно как последовательные фильтры: один грубо ограничивает число кандидатов, другой динамически сужает выборку по уверенности модели. Точный порядок их применения зависит от реализации конкретного фреймворка.
Top-k vs. Температура
- Температура изменяет форму всего вероятностного распределения, но не отсекает токены. Она влияет на относительные вероятности всех кандидатов.
- Top-k вводит жёсткое отсечение, полностью исключая токены за пределами топ-.
На практике Top-k может использоваться совместно с температурой и Top-p. Точный порядок применения фильтров зависит от фреймворка: например, в Hugging Face Transformers конвейер выглядит как Температура → Top-k → Top-p, то есть температура сначала масштабирует логиты (), затем Top-k отсекает длинный «хвост» мусорных токенов, и уже после этого Top-p динамически сужает выборку в зависимости от уверенности модели. При этом отдельные шаги могут пропускаться в зависимости от настроек: если , шаг Top-k не применяется; если , шаг Top-p не применяется.
Практическое применение
Несмотря на то что Top-p является более адаптивным методом и часто используется как базовый для открытой генерации текста, универсально лучшего метода декодирования не существует — оптимальный выбор зависит от задачи, модели и приоритетов (качество, скорость, устойчивость). Top-k остаётся широко поддерживаемым параметром во всех основных фреймворках (Hugging Face Transformers, vLLM и др.) и активно применяется как самостоятельно, так и в комбинации с другими методами.
- Типичные значения: На практике часто используются значения порядка десятков токенов (например, 10, 40, 50), но оптимум зависит от модели и задачи.
- Рекомендации: Для открытой генерации текста часто предпочитают Top-p. Если используется Top-k, его следует сочетать с умеренной температурой и тщательно подбирать значение под конкретную задачу. Top-k также удобен как дополнительный «предохранитель» при высокой температуре.
- Примечание: Во фреймворках Top-k может сочетаться с Repetition Penalty (штрафом за повторы) и параметром
no_repeat_ngram_size, чтобы предотвратить зацикливание модели на одних и тех же словах из топ- списка.
Литература
Основополагающие работы
- 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.