Что такое calibration ошибок модели и как ее измерять (ECE, MCE, Brier score)?

Краткий тезис

Calibration (калибровка) модели — это свойство, при котором предсказанная моделью уверенность (confidence) соответствует фактической точности (accuracy). Например, если модель говорит «я уверен на 80%», то в 80% случаев её предсказание должно быть верным. Для количественной оценки калибровки используют метрики ECE (Calibration Error|Expected Calibration Error), MCE (Maximum Calibration Error) и Brier score. В контексте LLM и RAG калибровка критична, так как модели часто склонны к overconfidence (излишней уверенности), что ведёт к неверным ответам и снижению доверия к системе.


1. Термин: Calibration (калибровка)

Calibration — это степень соответствия между предсказанной вероятностью класса и истинной долей правильных предсказаний для этой вероятности. Идеально откалиброванная модель: для всех примеров, где модель предсказала вероятность p, ровно p·100% из них оказываются верными.

Пример:

  • Модель выдала 100 предсказаний с уверенностью 0.9. Если 90 из них верны — калибровка идеальная.
  • Если верны только 70 — модель overconfident (излишне уверена).
  • Если верны 95 — модель underconfident (недостаточно уверена).

Для задач классификации калибровка обычно рассматривается для предсказанных вероятностей целевого класса. В LLM калибровка может оцениваться на уровне токенов (например, вероятность правильного следующего токена) или на уровне ответа (уверенность в сгенерированном тексте).


2. Почему калибровка важна для LLM и RAG

  • Overconfidence в LLM Модели часто выдают высокие вероятности даже для неверных ответов (например, галлюцинации). Это подрывает доверие к системе.
  • RAG и принятие решений В Agentic RAG агент может принимать решения на основе уверенности модели (например, решать, стоит ли обращаться к внешнему инструменту). Плохая калибровка ведёт к неверным решениям.
  • Оценка качества Калибровка — один из аспектов uncertainty quantification (оценка неопределённости). Без неё мы не можем интерпретировать вероятности модели как истинные степени уверенности.
  • Fine-tuning После дообучения калибровка часто ухудшается, поэтому её нужно восстанавливать (например, с помощью temperature scaling).

3. Reliability diagram (диаграмма надёжности)

Reliability diagram — визуальный инструмент для оценки калибровки. Ось X — предсказанная уверенность (разбитая на бины, например, 10 бинов по 0.1), ось Y — фактическая точность в каждом бине. Идеальная калибровка — диагональная линия y=x.

Построение

  1. Разбить интервал [0,1] на M равных бинов (обычно M=10).
  2. Для каждого бина:
    • Вычислить среднюю предсказанную уверенность (confidence) — среднее вероятностей в бине.
    • Вычислить фактическую точность (accuracy) — долю правильных предсказаний в бине.
  3. Нанести точки (confidence, accuracy) и соединить.

Интерпретация

  • Точки выше диагонали → underconfidence (модель слишком скромна).
  • Точки ниже диагонали → overconfidence.
  • Отклонение от диагонали количественно измеряется метриками ECE и MCE.

4. ECE (Expected Calibration Error)

ECE — средневзвешенное абсолютное отклонение между accuracy и confidence по бинам.

Формула

ECE = Σ_{m=[[1. Как бы вы спроектировали RAG-систему для 10 000 документов с разной структурой|1]]}^{M} (|B_m| / N) * |acc(B_m) - conf(B_m)|

где:

  • M — количество бинов,
  • |B_m| — количество примеров в бине m,
  • N — общее количество примеров,
  • acc(B_m) — точность в бине m,
  • conf(B_m) — средняя уверенность в бине m.

Интерпретация

  • ECE < 5% — хорошая калибровка.
  • ECE 5–10% — умеренная, требуется улучшение.
  • ECE > 10% — плохая калибровка, модель сильно пере- или недоуверена.

Пример расчёта на Python

import numpy as np

def compute_ece(probs, labels, n_bins=10):
    bin_boundaries = np.linspace(0, 1, n_bins + 1)
    bin_lowers = bin_boundaries[:-1]
    bin_uppers = bin_boundaries[1:]
    ece = 0.0
    for bin_lower, bin_upper in zip(bin_lowers, bin_uppers):
        in_bin = (probs > bin_lower) & (probs <= bin_upper)
        prop_in_bin = np.mean(in_bin)
        if prop_in_bin > 0:
            accuracy = np.mean(labels[in_bin])
            avg_confidence = np.mean(probs[in_bin])
            ece += np.abs(accuracy - avg_confidence) * prop_in_bin
    return ece

5. MCE (Maximum Calibration Error)

MCE — максимальное абсолютное отклонение между accuracy и confidence среди всех бинов.

Формула

MCE = max_{m=[[1. Как бы вы спроектировали RAG-систему для 10 000 документов с разной структурой|1]]..M} |acc(B_m) - conf(B_m)|

Интерпретация

  • MCE показывает наихудший бин — где модель наиболее сильно ошибается в оценке уверенности.
  • Используется, когда критично избежать больших ошибок калибровки в отдельных диапазонах (например, в медицинской диагностике).

Сравнение ECE и MCE

МетрикаЧто измеряетКогда важна
ECEСреднее отклонение по всем бинамОбщая оценка калибровки
MCEМаксимальное отклонениеБезопасность, worst-case анализ

6. Brier score

Brier score — среднеквадратичная ошибка между предсказанной вероятностью и истинным бинарным индикатором (0 или 1). Для многоклассовой задачи — усреднение по классам.

Формула (бинарный случай):

Brier = (1/N) * Σ_{i=1}^{N} (p_i - y_i)^2

где p_i — предсказанная вероятность положительного класса, y_i — истинная метка (0 или 1).

Свойства

  • Brier score ∈ [0, 1]. Чем меньше, тем лучше.
  • Разлагается на три компоненты: reliability (калибровка), resolution (способность разделять классы), uncertainty (энтропия истинных меток). Это позволяет понять, за счёт чего улучшается качество.

Декомпозиция Brier score (Murphy decomposition):

Brier = Reliability + Resolution - Uncertainty
  • Reliability — та же идея, что ECE (среднеквадратичное отклонение accuracy от confidence).
  • Resolution — насколько сильно предсказанные вероятности варьируются для разных примеров.
  • Uncertainty — энтропия истинного распределения (константа для датасета).

Пример расчёта

def brier_score(probs, labels):
    return np.mean((probs - labels) ** 2)

7. Методы калибровки (Post-hoc calibration)

После обучения модели её вероятности можно откалибровать с помощью небольшого валидационного набора. Основные методы:

7.1 Temperature scaling

  • Простейший и эффективный для нейросетей.
  • Логиты делятся на скаляр T (temperature) перед softmax: p = softmax(logits / T).
  • T подбирается минимизацией NLL (negative log-likelihood) на валидации.
  • T > 1 — снижает уверенность (борется с overconfidence), T < 1 — повышает.

7.2 Platt scaling

  • Логиты пропускаются через сигмоиду с параметрами a, b: p = sigmoid(a * logit + b).
  • Подходит для бинарной классификации, обобщается на многоклассовую через one-vs-rest.

7.3 Isotonic regression

  • Непараметрический метод: обучается монотонная функция, отображающая предсказанные вероятности в калиброванные.
  • Требует больше данных, может переобучаться.

7.4 Histogram binning

  • Разбивает предсказанные вероятности на бины и заменяет их на эмпирическую точность внутри бина.
  • Простой, но грубый метод.

Сравнение методов

МетодТипПараметрыКогда использовать
Temperature scalingПараметрический1 (T)Нейросети, быстро, эффективно
Platt scalingПараметрический2 (a, b)Бинарная классификация
Isotonic regressionНепараметрическиймногоМного данных, сложные искажения
Histogram binningНепараметрическийчисло биновПростота, интерпретируемость

8. Калибровка в LLM

В LLM калибровка измеряется на уровне:

  • Token-level: вероятность правильного следующего токена.
  • Sequence-level уверенность во всём сгенерированном ответе (например, средняя вероятность токенов или вероятность ответа при условии запроса).

Проблемы

  • LLM часто overconfident: дают высокие вероятности даже для галлюцинаций.
  • Калибровка ухудшается после fine-tuning (особенно при обучении с RLHF).
  • Для RAG: уверенность модели в ответе может не соответствовать фактической правильности, что затрудняет детекцию ошибок.

Методы калибровки для LLM

  • Temperature scaling на этапе инференса (изменение T в softmax).
  • Platt scaling на уровне эмбеддингов последнего слоя.
  • Averaging over multiple samples (например, self-consistency) — усреднение вероятностей по нескольким сгенерированным ответам.
  • Conformal prediction — не требует калибровки, даёт гарантии покрытия.

9. Связь с Agentic RAG

В Agentic RAG агент принимает решения на основе уверенности модели:

  • Когда обращаться к поиску (retrieval).
  • Когда завершить диалог или запросить уточнение.
  • Какой инструмент использовать.

Плохая калибровка ведёт к:

  • Ложной уверенности в неверном ответе → агент не исправляет ошибку.
  • Недостаточной уверенности в правильном ответе → лишние запросы к инструментам, увеличение latency.

Поэтому калибровка — важная часть оценки и улучшения агентных систем.


10. Пет-проект для закрепления

Задача Откалибровать модель BERT для классификации тональности (SST-2) и измерить улучшение ECE и Brier score.

Инструменты Python, PyTorch, transformers, sklearn, datasets.

Шаги:

  1. Загрузить предобученный BERT-base-uncased и датасет SST-2.
  2. Получить логиты на валидационной выборке (без калибровки).
  3. Рассчитать ECE, MCE, Brier score до калибровки.
  4. Обучить temperature scaling (оптимизация T по NLL на валидации).
  5. Применить T к логитам, пересчитать метрики.
  6. Построить reliability diagrams до и после.
  7. Сравнить результаты.

Ожидаемый результат

  • ECE снизится с ~10-15% до <5%.
  • Brier score уменьшится.
  • Reliability diagram приблизится к диагонали.

Дополнительно Повторить для LLM (например, GPT-2) на задаче генерации (оценивать калибровку следующего токена).


11. Связь с другими вопросами

ВопросТема
486Confidence calibration в LLM
488Uncertainty estimation (энтропия, вариационное инференс)
489Temperature scaling и его влияние на генерацию
490Platt scaling для многоклассовой классификации
491Reliability diagrams и их интерпретация
492Декомпозиция Brier score (Murphy decomposition)

12. Навигация


Навигация