Top-p (также Nucleus Sampling или ядерная выборка) — это метод сэмплирования, применяемый в ИИ, особенно в больших языковых моделях (LLM) для генерации текста. Он служит для управления уровнем случайности и креативности при выборе следующего токена (слова или части слова) в генерируемой последовательности, обеспечивая баланс между предсказуемостью и разнообразием выводаHoltzman, Ari, et al. "The curious case of neural text degeneration." arXiv preprint arXiv:1904.09751 (2019)..
Принцип действия Метод Top-p работает следующим образом:
Предсказание вероятностей: Модель нейронной сети предсказывает вероятности для всех возможных следующих токенов в своём словаре. Например, после последовательности "Кошка сидела на..." модель может назначить вероятности: "коврике" (0.4), "полу" (0.2), "столе" (0.15), "окне" (0.1), "диване" (0.08), и так далее. Сортировка: Токены сортируются по убыванию их предсказанных вероятностей. Формирование "ядра" (Nucleus): Отбирается минимальный набор (ядро) наиболее вероятных токенов, сумма вероятностей которых больше или равна заданному порогу p. Этот порог p является ключевым параметром метода. Пример: Если p = 0.7, и вероятности отсортированы как P(коврике)=0.4, P(полу)=0.2, P(столе)=0.15, P(окне)=0.1, ... * Добавляем "коврике". Сумма = 0.4 (< 0.7). * Добавляем "полу". Сумма = 0.4 + 0.2 = 0.6 (< 0.7). * Добавляем "столе". Сумма = 0.6 + 0.15 = 0.75 (>= 0.7). * Останавливаемся. Ядро состоит из {"коврике", "полу", "столе"}. Перераспределение вероятностей: Вероятности токенов, попавших в ядро, нормализуются таким образом, чтобы их новая сумма стала равна 1. (В примере: P'(коврике) ≈ 0.53, P'(полу) ≈ 0.27, P'(столе) ≈ 0.20). Выборка: Следующий токен выбирается случайным образом из сформированного ядра с учётом их новых, нормализованных вероятностей.
Ключевая особенность Главное отличие и преимущество Top-p — это адаптивность. Размер ядра (количество токенов, из которых производится выбор) не фиксирован, а зависит от распределения вероятностей, предсказанного моделью: Если модель очень уверена в наиболее вероятном токене (его вероятность значительно выше остальных), ядро будет маленьким (возможно, содержащим всего один токен). Это приводит к более предсказуемому и сфокусированному результату. Если вероятности распределены более равномерно между несколькими кандидатами (модель менее уверена), ядро будет включать больше токенов. Это позволяет генерировать более разнообразный, неожиданный и потенциально креативный текст.
Параметр p Параметр p — это вещественное число в диапазоне от 0 до 1, которое контролирует размер ядра выборки: Высокое значение `p` (близкое к 1, например, 0.9 или 0.95): В ядро попадает больше токенов с меньшими вероятностями. Результат становится более случайным, разнообразным, но может иногда терять связность или релевантность. Низкое значение `p` (например, 0.5 или 0.7): В ядро попадает меньше самых вероятных токенов. Результат более предсказуемый, сфокусированный и "безопасный", но может быть менее интересным и склонным к повторениям. Если `p=1`, выборка фактически происходит из всего распределения вероятностей (с поправкой на другие параметры сэмплирования, такие как температура, если она используется). Если `p` стремится к 0, метод приближается к жадной выборке, то есть выбору только самого вероятного токена.
Сравнение с Top-k Метод Top-k выбирает следующее слово из фиксированного числа k наиболее вероятных кандидатов, независимо от их абсолютных или относительных вероятностей. Например, при `k=5` выбор всегда будет производиться из 5 лучших токенов. В отличие от Top-k, Top-p динамически изменяет размер набора кандидатов (ядра) на основе порога суммарной вероятности `p`. Это часто считается преимуществом, так как позволяет методу быть гибким: ограничивать выбор, когда есть явный фаворит, и расширять его, когда уверенность модели ниже. Это помогает избегать включения маловероятных, но попавших в топ-k токенов, и наоборот, не отсекать разумные варианты, если их много с близкими вероятностями.
См. также Top-k Температура (сэмплирование) Алгоритм Beam search Большая языковая модель Генерация текста Сэмплирование (статистика)
Примечания