中文翻译暂不可用,显示俄语原文。
Что такое logits и как они связаны с вероятностями? temperature scaling?
Краткий тезис
Logits — это необработанные выходы последнего линейного слоя языковой модели (LLM) перед функцией softmax. Они могут быть любыми вещественными числами от -∞ до +∞. Вероятности токенов получаются применением softmax к logits, а temperature scaling (масштабирование температуры) — это приём, при котором logits делятся на параметр T перед softmax. При T=1 получается стандартное распределение, при T<1 распределение становится «острее» (модель увереннее), при T>1 — более равномерным (больше разнообразия). При T→0 модель становится детерминированной (greedy decoding).
1. Что такое logits?
Logits — это выходы последнего полносвязного слоя нейронной сети (обычно размерности vocab_size). Они не нормированы и не ограничены по значению.
- Размерность:
batch_size, Вики/vocabulary size|vocab_size— для каждого токена из словаря модели. - Диапазон: любое вещественное число (положительное, отрицательное, ноль).
- Смысл: «сырая» оценка модели, насколько вероятен данный токен в данной позиции. Чем больше logit, тем выше «шанс» токена после softmax.
Пример: для словаря из 5 токенов logits могут быть [2.0, 0.5, -1.0, 3.2, 0.0].
2. Связь logits с вероятностями: softmax
Softmax — функция, преобразующая logits в распределение вероятностей (сумма = 1, каждое значение от 0 до 1).
Формула для токена i:
p_i = exp(z_i) / sum_{j=1}^{V} exp(z_j)
где z_i — logit i-го токена, V — размер словаря.
Свойства:
- Если logit одного токена сильно больше остальных, его вероятность близка к 1.
- Если все logits равны, вероятности равномерны (1/V).
- Экспонента гарантирует положительность, деление — нормировку.
Пример для logits [2.0, 0.5, -1.0, 3.2, 0.0]:
exp(2.0) ≈ 7.39,exp(0.5) ≈ 1.65,exp(-1.0) ≈ 0.37,exp(3.2) ≈ 24.53,exp(0.0) = 1.0.- Сумма ≈ 34.94.
- Вероятности:
[0.21, 0.05, 0.01, 0.70, 0.03]. Токен с logit 3.2 получает 70% вероятности.
3. Temperature scaling: зачем и как
Temperature scaling — это деление logits на положительный скаляр T (температура) перед softmax:
p_i = exp(z_i / T) / sum_{j} exp(z_j / T)
Параметр T контролирует «остроту» распределения.
| T | Влияние на распределение | Эффект на генерацию |
|---|---|---|
| T → 0 | Распределение вырождается в точку (argmax) | Детерминированный выбор самого вероятного токена (greedy) |
| 0 < T < 1 | Распределение становится более острым (peaked) | Модель «увереннее», меньше случайности |
| T = 1 | Стандартный softmax | Баланс |
| T > 1 | Распределение становится более равномерным (flat) | Больше разнообразия, модель «менее уверена» |
| T → ∞ | Распределение стремится к равномерному | Полная случайность |
Интуиция: деление на T «растягивает» или «сжимает» logits перед экспонентой. При T<1 разница между logits усиливается, при T>1 — сглаживается.
4. Математическая иллюстрация
Пусть logits = [2, 1, 0.5].
- T = 1: softmax([2, 1, 0.5]) → вероятности ≈
[0.67, 0.24, 0.09]. - T = 0.5: softmax([4, 2, 1]) →
[0.94, 0.05, 0.01](очень уверенно). - T = 2: softmax([1, 0.5, 0.25]) →
[0.42, 0.33, 0.25](более равномерно). - T = 10: softmax([0.2, 0.1, 0.05]) →
[0.36, 0.33, 0.31](почти равномерное).
Видно, как меняется распределение.
5. Практическое применение temperature в LLM
- Генерация текста: T < 1 даёт более предсказуемые, «безопасные» ответы; T > 1 — креативные, но потенциально бессвязные.
- Agentic RAG: агенты используют temperature для баланса между исследованием (exploration) и эксплуатацией (exploitation) при выборе действий (например, какой инструмент вызвать). Низкая T — агент чаще выбирает самое вероятное действие; высокая T — пробует разные варианты.
- Fine-tuning: temperature scaling применяется при дистилляции знаний (knowledge distillation) — «мягкие» метки (soft labels) от учителя получаются с T > 1.
- Оценка неопределённости: разброс вероятностей при разных T может указывать на уверенность модели.
6. Связь с другими техниками семплирования
Temperature часто комбинируют с top-k и top-p (nucleus) sampling.
- Top-k: оставить только k токенов с наибольшими вероятностями, пересчитать softmax.
- Top-p: оставить наименьшее множество токенов, чья суммарная вероятность ≥ p.
- Temperature применяется до этих фильтров: сначала logits / T, потом softmax, потом top-k/top-p.
Типичный порядок в коде:
logits = model(input_ids)
logits = logits / temperature
probs = softmax(logits, dim=-1)
# затем top-k / top-p фильтрация
7. Реализация в Python (PyTorch)
import torch
import torch.nn.functional as F
def sample_with_temperature(logits, temperature=1.0, top_k=0, top_p=0.0):
# масштабирование
scaled_logits = logits / temperature
# softmax
probs = F.softmax(scaled_logits, dim=-1)
# top-k фильтрация
if top_k > 0:
top_k_vals, _ = torch.topk(probs, top_k)
threshold = top_k_vals[:, -1].unsqueeze(-1)
probs = torch.where(probs < threshold, torch.tensor(0.0), probs)
probs = probs / probs.sum(dim=-1, keepdim=True)
# top-p фильтрация
if top_p > 0.0:
sorted_probs, sorted_indices = torch.sort(probs, descending=True)
cumsum = torch.cumsum(sorted_probs, dim=-1)
mask = cumsum - sorted_probs > top_p
sorted_probs[mask] = 0.0
sorted_probs = sorted_probs / sorted_probs.sum(dim=-1, keepdim=True)
probs = sorted_probs.scatter(-1, sorted_indices, sorted_probs)
# семплирование
next_token = torch.multinomial(probs, num_samples=1)
return next_token
8. Ограничения и нюансы
- T = 0: формально softmax не определён (деление на ноль). На практике используют argmax (выбор токена с максимальным logit).
- Численная стабильность: при очень низкой T (например, 0.001) значения
z_i / Tстановятся огромными, экспонента может переполниться. Решение — вычитать максимум logits перед softmax (стандартный трюк). - Не единственный способ: существуют альтернативы, например, Gumbel-softmax для дифференцируемого семплирования.
- Влияние на все токены: temperature масштабирует все logits одинаково, не учитывая контекстную важность отдельных токенов.
9. Роль temperature в Agentic RAG
В архитектурах Agentic RAG (например, ReAct, Toolformer, AutoGPT) LLM выступает как планировщик и принимает решения: какой инструмент вызвать, какой запрос сформулировать.
- Низкая T (0.1–0.3): агент действует детерминированно, повторяет успешные паттерны. Полезно для стабильных задач.
- Высокая T (0.8–1.2): агент исследует разные стратегии, может найти неочевидные решения. Риск: нестабильность, зацикливание.
- Динамическая T: можно менять температуру в зависимости от этапа (например, высокая на этапе исследования, низкая на этапе исполнения).
Пример: в RAG-агенте, который выбирает между поиском по базе знаний и вызовом внешнего API, temperature влияет на то, насколько часто агент будет пробовать менее вероятный, но потенциально более полезный инструмент.
Пет-проект для закрепления
Задача: Написать скрипт, который визуализирует влияние temperature на распределение вероятностей для фиксированного набора logits.
Инструменты: Python, NumPy, Matplotlib.
Шаги:
- Задать массив logits (например,
[2.0, 1.0, 0.5, -0.5, -1.0]). - Реализовать функцию softmax_with_temperature(logits, T).
- Для T = [0.1, 0.5, 1.0, 2.0, 5.0] вычислить вероятности.
- Построить столбчатую диаграмму (группированную) для каждого T.
- Добавить подписи: для T→0 показать argmax (столбец высотой 1 для max токена).
- Вывести таблицу с численными значениями.
Ожидаемый результат: График, наглядно демонстрирующий, как при T<1 распределение становится острым, при T>1 — плоским. Понимание, почему temperature — ключевой гиперпараметр генерации.
Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 660 | Что такое softmax и зачем он нужен в LLM? |
| 661 | Как работает top-k и top-p sampling? |
| 663 | Что такое greedy decoding и beam search? |
| 664 | Как устроена функция потерь cross-entropy при обучении LLM? |
| 670 | Как работает дистилляция знаний (knowledge distillation)? |
| 690 | Как балансировать exploration/exploitation в AI-агентах? |
Навигация
- Предыдущий: 661
- Следующий: 663
- Индекс: 00. Индекс разборов