Temperature и Top-P: что это такое и почему настройка меняет качество ответов
Большинство пользователей GPT воспринимают нейросеть как чёрный ящик: задал вопрос — получил ответ. Но у языковых моделей есть параметры, которые напрямую контролируют характер генерации. Понимание двух из них — temperature и top-p — меняет то, как вы работаете с моделью, особенно если используете API.
Языковая модель не «думает» и не «выбирает» слова в человеческом смысле.
На каждом шаге она вычисляет вероятности для всех слов в своём словаре и выбирает следующее на основе этих вероятностей. Без дополнительных параметров — это чистый выбор наиболее вероятного токена. Именно поэтому модели без настройки могут быть предсказуемыми и шаблонными.
Temperature (от 0 до 2) управляет тем, насколько модель «рискует» при выборе токена.
При temperature = 0 модель всегда выбирает самый вероятный следующий токен — результат детерминированный и воспроизводимый. Задайте тот же вопрос дважды — получите идентичный ответ.
При temperature = 1 модель следует своим вычисленным вероятностям без изменений — стандартное поведение. При temperature > 1 распределение «сглаживается»: менее вероятные токены получают больший шанс быть выбранными.
Ответы становятся разнообразнее, неожиданнее — и потенциально менее точными.
Для задач с одним правильным ответом (код, математика, фактические вопросы) — низкая temperature, ближе к 0. Для творческих задач, где нужно разнообразие и неожиданность — выше, 0.7-2.
Top-p (nucleus sampling) работает иначе.
Вместо масштабирования всего распределения — он ограничивает пул кандидатов.
При top-p = 0.9 модель рассматривает только те токены, суммарная вероятность которых составляет 90%, и игнорирует «хвост» маловероятных вариантов.
При top-p = 0.1 — только самые вероятные токены, очень консервативный выбор.
Разница со temperature: temperature масштабирует всё распределение, top-p обрезает «хвост». На практике оба параметра управляют похожим эффектом, и их обычно не нужно менять одновременно — OpenAI рекомендует изменять только один.
Если вы используете ChatGPT через веб-интерфейс — temperature фиксирована (около 1 для стандартных запросов).
Если вы используете API — temperature и top-p задаются в параметрах каждого запроса. Для автоматизированных пайплайнов, где нужна воспроизводимость (суммаризация, классификация, извлечение данных) — ставьте temperature = 0. Для генерации контента, где нужно разнообразие — экспериментируйте в диапазоне 0.6–1.0.
Есть два менее известных параметра, которые тоже влияют на качество. Presence Penalty (от -2 до 2) штрафует токены, которые уже появились в ответе, независимо от частоты — побуждает модель говорить о новых темах. Frequency Penalty штрафует пропорционально частоте появления — снижает повторяемость конкретных слов. Полезно для длинных текстов, которые начинают «зациклиться» на одних выражениях. Стандартное значение обоих — 0; для длинных генераций попробуйте 0.3–0.6.