Как вы калибруете вероятности 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 saturationLogits могут быть большими по модулю, 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.2500.100.120.02
0.2–0.4300.300.250.05
0.4–0.6200.500.550.05
0.6–0.8150.700.600.10
0.8–1.0850.950.850.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 Scaling1ДаОчень быстроПервый выбор для LLM
Platt Scaling2 (бинар) / 2C (мультикласс)Почти всегдаБыстроЕсли TS не хватает
Isotonic RegressionЗависит от данныхМожет упастьСреднеДля сложных искажений
Matrix ScalingC^2 + CДа (теоретически)МедленноТолько при большом объёме данных

6. Практический пайплайн калибровки LLM для классификации

Шаг 1: Получить logits на валидации
Пропускаем валидационный датасет через LLM, сохраняем logits (до softmax) и истинные метки.

Шаг 2: Разделить валидацию на калибровочную и тестовую
Например, 50% для обучения калибратора, 50% для оценки ECE.

Шаг 3: Обучить калибратор

Шаг 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).

Инструменты

Шаги:

  1. Загрузить предобученный BERT и fine-tune на 2 класса (positive/negative).
  2. На валидационной выборке собрать logits и метки.
  3. Реализовать Temperature Scaling и Platt Scaling.
  4. Вычислить ECE до и после калибровки.
  5. Построить reliability diagrams.
  6. Сравнить методы по 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?

Навигация