Температура Т

Параметр генерации, управляющий степенью случайности выбора следующего токена языковой моделью. Чем выше значение, тем более разнообразным и «креативным» будет ответ, чем ниже — тем более предсказуемым и детерминированным.

English Temperature, sampling temperature
Синонимы Температура сэмплирования, temperature sampling, параметр T
Категории Нейросети

Температура — это числовой параметр, который задаёт степень случайности при выборе следующего токена языковой моделью. Формально он масштабирует логиты (сырые оценки модели для каждого токена словаря) перед преобразованием в вероятностное распределение через softmax.

Как это работает

Языковая модель на каждом шаге генерации вычисляет логиты — числовые оценки для всех токенов словаря. Чем выше логит, тем вероятнее, что модель выберет этот токен. Функция softmax превращает логиты в вероятности:

p(xi = w) = exp(hw / T) / Σ exp(hw’ / T)

где hw — логит токена w, T — температура. При T = 1 распределение остаётся исходным. При T < 1 распределение «заостряется»: вероятности высокооценённых токенов растут, а низкооценённых — падают. Модель чаще выбирает очевидные варианты. При T > 1 распределение «разглаживается»: различия между вероятностями сглаживаются, и у маловероятных токенов появляется шанс быть выбранными. При T → 0 softmax превращается в argmax: модель всегда выбирает токен с максимальным логитом.

Температура применяется после фильтрации кандидатов через top-p и top-k — то есть сначала модель отсекает заведомо неподходящие токены, а затем температурное масштабирование перераспределяет вероятности среди оставшихся[reference:2].

Зачем это нужно

Температура — основной инструмент управления балансом между предсказуемостью и креативностью генерации. Для задач, где требуется точность и повторяемость (извлечение данных, классификация, ответы на фактические вопросы), используют низкие значения — 0.0–0.3. Для творческих задач (написание текстов, генерация идей, брейншторминг) — 0.7–1.2. Значение 1.0 обычно является настройкой по умолчанию[reference:3].

Примеры

  • Классификация тональности отзыва. При температуре 0.0 модель каждый раз выдаёт один и тот же ответ на один и тот же отзыв — критично для стабильности бизнес-логики.
  • Генерация слоганов. При температуре 1.0 и запросе «придумай 5 слоганов для кофейни» модель выдаст более разнообразные варианты, чем при 0.3, где все слоганы будут похожи по структуре.
  • Чат-бот поддержки. При температуре 0.2–0.4 ответы остаются связными и по делу, но не становятся механически одинаковыми, что снижает ощущение «роботизированности».
  • Написание кода. При температуре 0.1–0.2 модель реже допускает синтаксические ошибки и «галлюцинации» в названиях функций, так как выбирает наиболее вероятные токены.

Формула или метрика

Температурное масштабирование softmax: pT(xi = w) = exp(hw / T) / Σw’ exp(hw’ / T). При T = 1 формула совпадает со стандартным softmax. При T < 1 распределение становится островершинным. При T > 1 — плоским[reference:4].

Типичные ошибки

  • Установка слишком высокой температуры для фактологических задач. При T > 1.5 модель начинает генерировать бессвязный текст и выдумывать факты — распределение становится настолько плоским, что выбор токена почти не зависит от контекста.
  • Использование T = 0 для творческих задач. Модель будет выдавать шаблонные, повторяющиеся ответы, что сводит на нет ценность генеративного подхода.
  • Игнорирование взаимодействия с top-p и top-k. Температура применяется после отсечения кандидатов, поэтому при узком top-k эффект высокой температуры ограничен: «креативность» будет только среди нескольких наиболее вероятных токенов[reference:5].
  • Ожидание полной воспроизводимости при T > 0. Даже при фиксированном seed температура выше нуля вносит случайность, и ответы могут различаться между запусками[reference:6].

Как улучшить

  • Начинайте с значений по умолчанию (T = 1.0 или T = 0.7) и корректируйте в зависимости от задачи. Для большинства диалоговых сценариев 0.7 даёт хороший баланс между связностью и вариативностью[reference:7].
  • Для задач с извлечением данных используйте T = 0. Это обеспечит детерминированный результат и упростит тестирование.
  • Комбинируйте температуру с top-p. Если нужно ограничить «фантазию» модели, но сохранить вариативность, установите T = 0.8–1.0 и top-p = 0.9–0.95.
  • Тестируйте несколько значений на небольшой выборке промтов. Оптимальная температура зависит от модели, длины ответа и домена — универсального значения не существует.
  • Фиксируйте seed при отладке. Это позволит изолировать эффект температуры от других источников вариативности.

Источники

Google Cloud Documentation — Experiment with parameter values (https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/prompts/adjust-parameter-values)[reference:0]

Microsoft Learn — ChatOptions.Temperature Свойство (https://learn.microsoft.com/ru-ru/dotnet/api/microsoft.extensions.ai.chatoptions.temperature)[reference:1]

Holtzman A. et al. The Curious Case of Neural Text Degeneration, 2020 (arXiv:1904.09751) — классическая работа о проблемах декодирования и роли температуры

Agarwala A. et al. Temperature Check: Theory and Practice for Training Models with Softmax-Cross-Entropy Losses, TMLR 2023 — теоретическое обоснование температурного масштабирования