Как вы калибруете вероятности LLM для classification задач?
Краткий тезис
Калибровка вероятностей LLM — это процесс приведения предсказанных моделью вероятностей в соответствие с истинной частотой правильных ответов. LLM часто overconfident (излишне уверены), особенно в задачах классификации. Основные методы: Platt scaling (regression|логистическая регрессия на logits) и temperature scaling (деление logits на температуру). Ключевая метрика — Calibration Error|Expected Calibration Error (ECE), которая измеряет среднее расхождение между уверенностью модели и фактической точностью.
1. Термин: Калибровка вероятностей (Probability Calibration)
Калибровка — это свойство модели, при котором из предсказанной вероятности 0.8 следует, что в 80% случаев модель действительно права. Для идеально откалиброванной модели выполняется:
P(правильный ответ | уверенность = p) = p для всех p.
Зачем калибровать LLM для классификации
- LLM обучаются с cross-entropy loss, который оптимизирует ранжирование классов, но не гарантирует калибровку.
- В задачах классификации (например, определение тональности, тематики) нужны не только метки, но и надёжные вероятности для принятия решений, пороговых значений или оценки неопределённости.
- Некорректные вероятности ведут к плохому decision-making в системах с порогами (например, reject-option) или при ансамблировании.
Термин «Overconfidence» — модель выдаёт высокие вероятности (например, 0.99) даже для неверных предсказаний. Это типично для нейросетей с большим числом параметров.
2. Почему LLM overconfident?
| Причина | Объяснение |
|---|---|
| Softmax saturation | Logits могут быть большими по модулю, softmax превращает их в почти one-hot распределение. |
| Обучающие данные | Модель видит много примеров с чёткими границами классов, но на границе решения не получает сигнала о неопределённости. |
| Архитектура | Трансформеры с residual connections и LayerNorm могут усиливать уверенность на этапе fine-tuning. |
| Label smoothing | Частично смягчает проблему, но не решает её полностью. |
3. Метрика: Expected Calibration Error (ECE)
ECE — средняя абсолютная разница между уверенностью модели и точностью в каждом бине уверенности.
Формула
ECE = Σ_{m=[[1. Как бы вы спроектировали RAG-систему для 10 000 документов с разной структурой|1]]}^{M} (|B_m| / N) * |acc(B_m) - conf(B_m)|
где:
- M — число бинов (обычно 10–20),
- B_m — множество примеров, чья уверенность попала в m-й бин,
- acc(B_m) — доля правильных ответов в бине,
- conf(B_m) — средняя уверенность в бине.
Пример расчёта (M=5):
| Бин уверенности | Число примеров | Средняя уверенность | Точность | Разница |
|---|---|---|---|---|
| 0.0–0.2 | 50 | 0.10 | 0.12 | 0.02 |
| 0.2–0.4 | 30 | 0.30 | 0.25 | 0.05 |
| 0.4–0.6 | 20 | 0.50 | 0.55 | 0.05 |
| 0.6–0.8 | 15 | 0.70 | 0.60 | 0.10 |
| 0.8–1.0 | 85 | 0.95 | 0.85 | 0.10 |
ECE = (50/200)*0.02 + (30/200)*0.05 + (20/200)*0.05 + (15/200)*0.10 + (85/200)*0.10 = 0.005 + 0.0075 + 0.005 + 0.0075 + 0.0425 = 0.0675 (6.75%)
Интерпретация
- ECE = 0 — идеальная калибровка.
- ECE > 0.1 — серьёзная проблема.
- Для LLM типично ECE 0.05–0.15 до калибровки.
4. Методы калибровки
4.1 Temperature Scaling (TS)
Самый популярный метод для нейросетей. После обучения фиксируем веса и добавляем один параметр — temperature T > 0. Logits делятся на T перед softmax:
softmax(z_i / T)
- T = 1 — без изменений.
- T > 1 — «смягчает» распределение (уменьшает уверенность).
- T < 1 — «усиливает» уверенность (редко нужно).
Как подобрать T
Минимизируем Negative Log Likelihood (NLL) на валидационном наборе, используя logits модели как вход. T — единственный параметр, оптимизация одномерная (например, бинарный поиск или L-BFGS).
Плюсы
- Не меняет ранжирование классов (accuracy не падает).
- Очень быстро (один параметр).
- Работает для любого числа классов.
Минусы
- Предполагает, что калибровка одинакова для всех классов (глобальная).
- Не улучшает калибровку на отдельных подгруппах.
4.2 Platt Scaling (PS)
Логистическая регрессия на logits модели. Для бинарной классификации:
P(y=[[1. Как бы вы спроектировали RAG-систему для 10 000 документов с разной структурой|1]] | x) = [[1. Как бы вы спроектировали RAG-систему для 10 000 документов с разной структурой|1]] / ([[1. Как бы вы спроектировали RAG-систему для 10 000 документов с разной структурой|1]] + exp(A * f(x) + B))
где f(x) — logit модели, A и B — обучаемые параметры (A < 0 обычно). Для многоклассовой — multiclass Platt scaling (один набор параметров на класс или общий).
Отличие от TS
- TS — частный случай PS с A = 1/T и B = 0.
- PS может смещать границу решения (B ≠ 0), что иногда полезно.
Когда использовать
- Если после TS остаётся систематическое смещение (bias).
- Для бинарных задач с несбалансированными классами.
4.3 Isotonic Regression (IR)
Непараметрический метод: обучаем монотонную функцию (изотонную регрессию) на уверенностях модели. Не требует предположения о форме.
Плюсы
- Гибкий, может исправить сложные искажения.
- Не требует logits, можно калибровать по вероятностям.
Минусы
- Требует много данных для валидации.
- Может переобучиться.
- Не гарантирует сохранение ранжирования (accuracy может упасть).
4.4 Matrix Scaling
Обобщение PS: применяем линейное преобразование к logits: W * z + b, где W — матрица, b — вектор. Затем softmax. Параметров много (C^2 + C), риск переобучения.
Применение
- Только если данных много (>10k примеров на класс).
- Редко используется для LLM из-за сложности.
5. Сравнение методов
| Метод | Параметров | Сохраняет accuracy | Скорость | Когда применять |
|---|---|---|---|---|
| Temperature Scaling | 1 | Да | Очень быстро | Первый выбор для LLM |
| Platt Scaling | 2 (бинар) / 2C (мультикласс) | Почти всегда | Быстро | Если TS не хватает |
| Isotonic Regression | Зависит от данных | Может упасть | Средне | Для сложных искажений |
| Matrix Scaling | C^2 + C | Да (теоретически) | Медленно | Только при большом объёме данных |
6. Практический пайплайн калибровки LLM для классификации
Шаг 1: Получить logits на валидации
Пропускаем валидационный датасет через LLM, сохраняем logits (до softmax) и истинные метки.
Шаг 2: Разделить валидацию на калибровочную и тестовую
Например, 50% для обучения калибратора, 50% для оценки ECE.
Шаг 3: Обучить калибратор
- Сначала Temperature Scaling (оптимизация NLL).
- Если ECE > 0.05, попробовать Platt Scaling.
- Если данные позволяют — Isotonic Regression.
Шаг 4: Оценить ECE на тестовой части
Построить reliability diagram (график уверенность vs точность).
Шаг 5: Применить к продакшену
Сохранить параметры калибратора (T, A, B) и применять их к logits перед softmax.
Пример кода (PyTorch):
import torch
import torch.nn.functional as F
from scipy.optimize import minimize
def temperature_scale(logits, labels):
# logits: (N, C), labels: (N,)
def nll(t):
scaled = logits / t
loss = F.cross_entropy(scaled, labels)
return loss.item()
res = minimize(nll, x0=1.0, bounds=[(0.1, 10.0)], method='L-BFGS-B')
return res.x[0]
def platt_scale(logits, labels):
# Для бинарной классификации: logits одномерные
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression(C=1e10, solver='lbfgs')
lr.fit(logits.reshape(-1, 1), labels)
return lr.coef_[0][0], lr.intercept_[0]
def compute_ece(logits, labels, n_bins=10):
probs = F.softmax(logits, dim=1)
conf, preds = torch.max(probs, dim=1)
acc = (preds == labels).float()
bin_boundaries = torch.linspace(0, 1, n_bins+1)
ece = 0.0
for i in range(n_bins):
mask = (conf > bin_boundaries[i]) & (conf <= bin_boundaries[i+1])
if mask.sum() > 0:
bin_acc = acc[mask].mean()
bin_conf = conf[mask].mean()
ece += (mask.sum() / len(labels)) * abs(bin_acc - bin_conf)
return ece.item()
7. Особенности калибровки LLM
- Few-shot vs zero-shot Для few-shot классификации калибровка может отличаться; лучше калибровать отдельно для каждого сценария.
- Prompt engineering Формулировка промпта влияет на logits; калибровка должна проводиться на том же типе промптов, что и в продакшене.
- Multilingual Если модель многоязычная, калибровка может различаться по языкам — стоит калибровать на репрезентативной выборке.
- Token-level vs sequence-level Для задач классификации на уровне последовательности (например, sentiment) используем logits первого токена ответа или специального токена.
8. Альтернативные подходы
- Bayesian approximation Использование dropout при inference (Monte Carlo dropout) для оценки неопределённости.
- Ensemble Усреднение предсказаний нескольких моделей — улучшает калибровку.
- Focal loss при fine-tuning: штрафует уверенные неправильные предсказания, что косвенно улучшает калибровку.
Пет-проект для закрепления
Задача Реализовать пайплайн калибровки для LLM на задаче классификации тональности отзывов (IMDb).
Инструменты
- Hugging Face Transformers (bert-base-uncased)
- PyTorch / scikit-learn
- Datasets (IMDb)
Шаги:
- Загрузить предобученный BERT и fine-tune на 2 класса (positive/negative).
- На валидационной выборке собрать logits и метки.
- Реализовать Temperature Scaling и Platt Scaling.
- Вычислить ECE до и после калибровки.
- Построить reliability diagrams.
- Сравнить методы по ECE и accuracy.
Ожидаемый результат
- ECE снижается с ~0.12 до <0.03.
- Accuracy остаётся на том же уровне.
- График уверенность vs точность приближается к диагонали.
Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 293 | Как вы оцениваете качество классификации LLM? |
| 295 | Что такое confidence threshold и как его подбирать? |
| 296 | Как вы обрабатываете несбалансированные классы в LLM? |
| 297 | Как вы используете logits для детекции out-of-distribution? |
| 298 | Сравните softmax и sparsemax для классификации. |
| 299 | Как fine-tuning влияет на калибровку LLM? |
Навигация
- Предыдущий: 293
- Следующий: 295
- Индекс: 00. Индекс разборов