Документация

Можно ли доверять вероятностям?

Эта страница отвечает на один вопрос: можно ли доверять этим значениям уверенности?

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

Что такое калибровка

Модель говорит «я уверена на 80%». Если собрать все случаи, где она говорила о 80%, и ровно 80% из них окажутся верными, число калибровано. Если верных меньше — она переуверена.

Обычная метрика — ECE (Expected Calibration Error, ожидаемая ошибка калибровки): разбейте предсказания по уверенности на бины, сравните среднюю уверенность каждого бина с его фактической точностью и возьмите взвешенное по размеру бинов среднее. Меньше — лучше.

Калибровка и точность — независимые оси. Очень точная модель может быть сильно переуверена (особенно на самом трудном срезе), а посредственная модель может быть хорошо калибрована. Ниже вы увидите и то и другое.

Исправление 1: temperature scaling

Самое дешёвое и самое общее исправление. Идея: порядок вариантов у модели обычно верен, но масштаб неверен — переуверенность означает, что всё лежит слишком близко к 0 и 1. Один параметр температуры, подобранный на отложенной выборке, сплющивает или обостряет распределение.

Одна реплика, поставляющая запускаемую офлайн-оценку, сообщает:

Temperature scaling плюс conformal-отказ снижают ECE с 0.170 до 0.071 (с перекрёстной проверкой).

Обратите внимание на «с перекрёстной проверкой»: параметр не подбирали и не оценивали на одних и тех же данных. Это и есть разница между числом, которому стоит доверять, и числом, которому нет.

Исправление 2: conformal-отказ

Temperature scaling исправляет масштаб. Conformal-методы решают, когда не отвечать.

Вместо того чтобы делать каждую вероятность правильной, они порождают множество отказа и гарантируют, что истинный ответ попадает в него хотя бы в оговорённой доле случаев (гарантия покрытия). Случаи, которые не проходят планку, эскалируются, а не обрабатываются автоматически.

В реальных проектах:

  • Открытая альтернатива на 118M использует temperature scaling плюс split-conformal множество отказа и сообщает ECE 0.01–0.03 на публичных наборах — при этом прямо заявляя, что на бенчмарках типизированных решений она проигрывает Laya (0.71 против 0.77). Проект, публикующий свои поражения, информативнее того, кто публикует только победы.
  • Медицинская реализация использует два замороженных локальных ридера плюс роутер без обучения и split-conformal множество кандидатов, чтобы ограничить ошибку, и попадает в пределах 2 пунктов от хостингового сервиса на трёх национальных лицензионных экзаменах по 600 заданий, без дообучения и без дистилляции.

Общее у обоих одно: ни один не утверждает, что вероятности стали точными. Они утверждают, что знают, когда они неточны. В реальной системе именно на втором можно строить шлюз.

Один контринтуитивный независимый результат: смещение имеет противоположные знаки

Независимый тест калибровки использовал 900 сгенерированных по правилам тикетов (которые модель не могла видеть) плюс три публичных бенчмарка, опубликовал каждый сырой ответ и ECE относительно смоделированного шумового пола — и пришёл к выводу о знаке:

Примитив Направление смещения
Choice систематически переуверен
Score систематически переуверен
Boolean (Noul) систематически недоуверен

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

Это также объясняет конкретный провал в дизайне: если система сравнивает уверенности Noul и Choice с одним и тем же порогом, она измеряет одно и то же одной линейкой, которая слишком коротка, и другой, которая слишком длинна.

Язык входа тоже влияет на калибровку

Ещё одно измерение, на испанском корпусе из 3,200 размеченных людьми элементов:

Запись состояния на испанском стоила 3.0–6.4 пункта точности и примерно удвоила ECE на XNLI / PAWS-X, тогда как запись инструкций на испанском не дала эффекта.

Различие состояния и инструкций — это и есть суть: состояние — это содержание, инструкции — метаданные. Это особенно важно для китайских и японских читателей — их состояния, весьма вероятно, пойдут похожим путём, и никто не опубликовал измерения этого. Нет причин предполагать, что в вашем языке это не происходит.

Так как же выбирается порог?

Всё вышесказанное сводится к одному вопросу: откуда взялось это 0.8?

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

Один инструмент делает именно это и добавляет самый важный шаг: он ломает CI, когда обновление модели ломает зафиксированный порог. Пороги устаревают, как цены — только неверную цену замечают, а неверный порог — нет.

В одном предложении

Относитесь к уверенности как к априорной оценке, а не как к гарантии. Сначала измерьте надёжный диапазон на своих данных, потом впишите этот диапазон в код.