Как модель выбирает ответ: logits, temperature и top-p

После одного прохода языковая модель выдаёт для каждого токена не готовое слово, а числовую оценку — logit. Алгоритм декодирования преобразует эти оценки в выбор следующего токена.

Краткий ответ

После одного прохода языковая модель выдаёт для каждого токена не готовое слово, а числовую оценку — logit. Алгоритм декодирования преобразует эти оценки в выбор следующего токена.

После одного прохода языковая модель выдаёт для каждого токена не готовое слово, а числовую оценку — logit. Алгоритм декодирования преобразует эти оценки в выбор следующего токена. Поэтому качество генерации зависит и от модели, и от правил семплирования.

От logits к вероятностям

Softmax экспоненцирует и нормирует logits, получая распределение с суммой вероятностей, равной единице. Разница в несколько единиц logit может сильно изменить соотношение вероятностей. Эти числа условны относительно текущего контекста: после выбора токена весь следующий набор logits пересчитывается.

Вероятность модели не является вероятностью истинности утверждения. Она показывает, насколько токен согласуется с изученным распределением продолжений при данных входах и параметрах. Часто встречающееся заблуждение может получить высокую вероятность.

Temperature, greedy и случайность

Temperature делит logits перед softmax. При значении ниже единицы распределение становится острее: самые вероятные варианты получают большую долю. При значении выше единицы распределение выравнивается и редкие варианты выбираются чаще. Temperature, равная нулю, обычно реализуется как специальный детерминированный режим, а не буквальное деление на ноль.

Greedy decoding каждый раз берёт наиболее вероятный токен. Он воспроизводим при детерминированном вычислении, но не гарантирует лучший текст целиком: локально лучший шаг способен привести к повтору или тупику. Случайное семплирование даёт разнообразие, но увеличивает риск неудачных ветвей.

Top-k и nucleus sampling

Top-k оставляет фиксированное число наиболее вероятных токенов и заново нормирует их веса. Это просто, но одинаковое k плохо учитывает форму распределения: иногда один вариант очевиден, а иногда разумных вариантов десятки.

Top-p, или nucleus sampling, выбирает минимальное множество наиболее вероятных токенов, чья суммарная масса достигает порога p. Размер множества адаптируется к уверенности распределения. Это не фильтр фактов: если все верхние продолжения ошибочны, top-p не исправит знание.

В продуктах дополнительно применяются штрафы за повторение, ограничения грамматики, запрет отдельных последовательностей и structured decoding. Каждый механизм меняет распределение и должен проверяться на реальных задачах.

Почему параметры зависят от сценария

Для извлечения структурированного поля полезна низкая вариативность и строгая схема. Для мозгового штурма допустимо несколько разнообразных кандидатов с последующим отбором. Для программного кода иногда выгодно сгенерировать несколько решений и прогнать тесты.

Не существует универсальной «правильной temperature». Даже одинаковое название параметра может по-разному интерпретироваться поставщиками, а серверная реализация может добавлять скрытые ограничения. Настройки следует версионировать вместе с моделью и промптом.

Упражнение: семплирование на бумаге

Пусть после фразы «На улице идёт» модель дала вероятности: «дождь» — 0,55, «снег» — 0,25, «ремонт» — 0,12, «собака» — 0,08. Сравните greedy, top-k при k = 2 и top-p при p = 0,8.

Для top-p отсортируйте варианты и набирайте массу: 0,55 + 0,25 = 0,80, значит остаются два токена. Затем придумайте распределение 0,92 / 0,03 / 0,03 / 0,02: при том же p ядро станет из одного токена. Объясните, почему адаптивный размер важен.

Частые вопросы

Низкая temperature устраняет галлюцинации?

Нет. Она уменьшает разнообразие и чаще выбирает верхние продолжения. Если модель уверенно предпочитает неверный ответ, низкая temperature сделает ошибку стабильнее.

Один и тот же seed гарантирует одинаковый ответ?

Только при одинаковой модели, токенизаторе, параметрах, коде семплирования и достаточно детерминированном вычислении. Обновление сервиса или параллельные численные операции могут нарушить воспроизводимость.

Почему нельзя всегда использовать greedy?

Greedy оптимизирует каждый шаг отдельно и часто производит однообразные, повторяющиеся продолжения. Для задач с несколькими допустимыми ответами контролируемое семплирование может быть качественнее.

Что важно запомнить

https://yadro-code.ru/lessons/without-university/generative-ai-foundations/generative-ai-05