Проблема калибровки уверенности

Удивительно, но нигде нет хорошей обзорной работы по всем методам калибровки модели — процесса в результате которого «чёрные ящики» не просто качественно решают задачу классификации, но ещё и правильно оценивают свою уверенность в выданном ответе. Этот обзор не начального уровня — необходимо представлять, как работают и используются алгоритмы классификации, хотя автор существенно упростил изложение, например, обошёлся без условных вероятностей в определениях (из-за чего немного пострадала строгость изложения).

calibration2

Одна из интересных и до конца не решённых теоретических и практических проблем в машинном обучении – проблема калибровки (Confidence Сalibration). Предположим, мы решаем задачу классификации с l классами, наш алгоритм выдаёт некоторые оценки принадлежности объектов к классам – уверенности (Confidences), после чего относит объект к классу с максимальной оценкой (т.е. выдаёт ответ, в котором максимально уверен):

fff1

Возникает естественный вопрос: какова вероятность, что ответ верный? Нам бы хотелось уметь оценивать её на этапе формирования ответа. Напрашивающийся и самый «удобный» вариант – эта вероятность равна максимальной оценке (уверенности):

fff2

Если равенство выполняется с достаточной точностью, то говорят, что «классификатор (хорошо) откалиброван». Может быть и более жёсткое условие калибровки – чтобы все оценки соответствовали вероятностям:

fff3

для всех k. Например, если классификатор по классам «кошка», «собака», «суслик» получил уверенности (0.8, 0.2, 0.0), то с вероятностью 0.8 правильный класс «кошка», а с вероятностью 0.2 – «собака»  и точно объект не может принадлежать классу «суслик».

Калибровка нужна для:

  1. Правильного понимания, насколько результатам алгоритма можно доверять. Это важно при интерпретации моделей, а также для принятия решений о внедрении систем ИИ и анализа их работы.
  2. Для более точного решения задач ИИ в целом, ведь уверенности часто используются другими алгоритмами, например в языковых моделях (language models) при генерации текстов используются вероятности появления отдельных токенов (например, при применении лучевого поиска – beam search).
  3. Для настройки на т.н. скоринговые функции ошибки, одной из которых является логистическая (в указанном посте мы как раз затрагивали тему калибровки).

Опишем, как на практике оценить откалиброванность алгоритма. Надо сравнить confidence (уверенность) и точность (accuracy) на тестовой выборке: bk(x) vs P(y(x)=a(x)). Понятно, что если для большой группы объектов алгоритм выдал оценку 0.8 за класс «собака», то в случае «хорошей калибровки» среди них будет примерно 80% объектов этого класса. На практике проблема в том, что вряд ли для большой группы объектов ответ будет именно 0.8 (а не 0.81, 0.8032 и т.д.) Поэтому сравнивают, разделив объекты на группы – «бины» (bins):

fff4

Здесь среднее оценок, попавших в конкретный бин, сравнивается со средним индикаторов события, что объект принадлежит k-му классу, т.е. с точностью, если мы рассматриваем k=a(x). Эти значения обычно изображают на т.н. диаграмме калибровки (или графике надёжности – Reliability Plot):

book_calib01
Рис. 1. Диаграмма калибровки.

Бины часто выбирают с границами [0, 0.1], [0.1, 0.2] и т.д. На рис. 1 розовые столбцы – полученные средние уверенности, а синие – точности – в соответствующих бинах. Чёрным показана доля объектов выборки, попавших в соответствующий бин. Понятно, что чем больше доля, тем надёжнее оценки уверенности и точности. В случае, если синий столбец выше розового, говорят о недостаточной уверенности (under-confident), если ниже – о чрезмерной уверенности или «пере-уверенности» (over-confident).

Численно калибровку пытаются оценить с помощью Expected Calibration Error (ECE)

fff5

Точнее, ECE обычно оценивают, усредняя по бинам, или чаще взвешивая по «частоте бина»:

fff6

(все формулы приведены для фиксированного класса k). Иногда выделенный красным множитель не используют. Чащё бины выбирают «равной ширины», но более предпочтительный вариант – равной мощности, тогда метрику качества называют daECE (Adaptive ECE). На рис. 2 показана диаграмма калибровки для равномощных бинов.

book_calib02
Рис. 2. Диаграмма калибровки при бинах равной мощности.

Понятно, что описанные метрики соответствуют взвешенному среднему разностей синих и розовых столбцов. Вместо среднего иногда используют максимум, соответствующая метрика называется Maximum Calibration Error (MCE). Также калибровку оценивают стандартными функциями ошибки: negative log-likelihood (NLL) и Brier score (так в классификации часто называют MSE):

fff7

(здесь yj – бинарные значения классификации объекта, bj – оценка принадлежности к j-му классу).

Современные нейронные сети (НС) являются неоткалиброванными! Чаще они страдают «пере-уверенностью» (over-confident). Во-первых, это происходит потому, что при обучении НС на отложенных данных следят за точностью (accuracy), не обращая внимание на уверенность. На рис. ниже показаны графики разных метрик при обучении нейронных сетей. Во-вторых, современные сети очень сложны, что приводит к переобучению (даже если на обучающей выборке NLL убывает при обучении сети, на тестовой выборке NLL может возрастать, см. рис. ниже).

fff8
Рис. из работы [Jishnu Mukhoti et. al., 2020]

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

fff9
Рис. из работы [Chuan Guo, 2017]

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

1. Непараметрический метод гистограммной калибровки (Histogram Binning)

Решается такая задача оптимизации по параметрам {θi}

fff10

Изначально в методе использовались бины одинаковой ширины (но можно использовать и равномощные). После решения задачи, если оценка принадлежности к классу попала в i-й бин, её заменяют на соответствующее значение θi. Минусы такого подхода:

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

Метод предложен в Zadrozny В., Elkan C. «Obtaining  calibrated  probability  estimates  from  decision  trees  and naive bayesian classifiers». In ICML, pp. 609–616, 2001.

2. Непараметрический метод – изотонная регрессия (Isotonic Regression)

Строится монотонно неубывающая функция деформации оценок алгоритма. По сути, решается такая же задача оптимизации, как и в методе (1), но есть дополнительное условие:

fff11

а оптимизацию проводят по параметрам k, {θi}, {αi}.  Кстати, указанная задача решается алгоритмом pool  adjacent  violators algorithm (PAV / PAVA) за время линейное время O(N).

Метод предложен в Zadrozny, Bianca and Elkan, Charles. Transforming classifier scores into accurate multiclass probability estimates. In KDD, pp. 694–699, 2002.

По-прежнему, функция деформации не является непрерывной. Подходы к её сглаживанию предложены здесь:

Xiaoqian  Jiang,  Melanie  Osl,  Jihoon  Kim,  and  Lucila  Ohno-Machado.  2011. Smooth  Isotonic  Regression:  A  New  Method  to  Calibrate  Predictive  Models.  InAMIA  Summits  Transl  Sci  Proc.  16–20.

3. Параметрическая калибровка Платта (Platt calibration)

Изначально метод разрабатывался для SVM, оценки которого лежат на вещественной оси (по сути, это расстояния до оптимальной разделяющей классы прямой, взятые с нужным знаком), считается, что метод не очень подходит для других моделей (хотя имеет много обобщений). Пусть алгоритм выдаёт расстояние со знаком до разделяющей поверхности r(x), ищем решение как

fff13

параметры  определяются методом максимального правдоподобия на отложенной выборке (calibration set).

Platt,  John  et  al.    Probabilistic  outputs  for  support  vector machines and comparisons to regularized likelihood methods. Advances in large margin classifiers,  10(3): 61–74, 1999.

4. Логистическая регрессия в пространстве логитов

Это набор параметрических методов с одной идеей, которая отображена в заголовке. Первый метод – Matrix and Vector Scaling – обобщение калибровки Платта

fff14

здесь W – настраиваемая матрица размера l×l, а b – вектор сдвига.

Tim Leathart, Eibe Frank, Bernhard Pfahringer, Geoffrey Holmes «On Calibration of Nested Dichotomies».

Другой метод – Beta-калибровка, в нём деформация в задаче с двумя непересекающимися классами ищется в виде

fff15

для чего настраивается логистическая регрессия в пространстве с двумя признаками ln(bi), -ln(1-bi) и исходным целевым признаком, здесь bi – оценка принадлежности к классу 1 i-го объекта. Обоснование этого приёма легко полусить самому или посмотреть в оригинальной работе

Kull, M., Silva Filho, T. M., Flach, P., et al.  Beyond sigmoids: How to obtain well-calibrated probabilities frombinary classifiers with beta calibration. Electronic Journalof Statistics, 11(2):5052–5080, 2017

Дальнейшее развитие метод получил в

Kull, M. et. al. Beyond temperature scaling: Obtaining well-calibrated multi-class probabilities with Dirichlet calibration. InProceedings of Advances in Neural Information Processing Systems, pp. 12295–12305, 2019.

5. Биннинг + параметрические методы: scaling-binning calibrator

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

На рис. ниже показана идея метода из статьи Kumar, Ananya and Liang, Percy S and Ma, Tengyu «Verified Uncertainty Calibration» // Advances in Neural Information Processing Systems 32, 2019, P. 3792-3803

fff16
Рис. из статьи [Kumar, 2019]

6. Деревья калибровки (Probability calibration trees)

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

  1. Построить на исходных признаках решающее дерево (не очень глубокое).
  2. В каждом листе – обучить логистическую регрессию на одном признаке – на оценках калибруемого алгоритма.
  3. Подрезать дерево, минимизируя ошибку (в исходной статье использовалась Brier score).

Leathart, T., Frank, E., Pfahringer, B., Holmes, G. Probability calibration trees. In: ACML, pp. 145–160. PMLR (2017)

fff17
Рис. из статьи [Leathart et. al. 2017]

7. Ансамблирование в калибровках

Опять же, раз везде есть ансамбли, в калибровках они тоже есть. Один из популярных методов – BBQ (Bayesian Binning into Quantiles), который осуществляет комбинация нескольких биннингов (равномощных) с разным числом бинов. Ответ ищется в виде линейной комбинации оценок бинингов с весами, применяется байесовское усреднение. Мы не будем выписывать «хитрые формулы», а перенаправим читателя к

Naeini, M., Cooper, G., Hauskrecht, M.: Obtaining well calibrated probabilities using Bayesian binning // AAAI, pp. 2901–2907 (2015)

С небольшой натяжкой можно сказать, что BBQ эволюционировал в ENIR (ensemble of near isotonic regression). В этом методе ансамблируются «почти изотонные регрессии» (near isotonic regressions), а также используется байесовский информационный критерий (Bayesian information criterion – BIC). В некоторых обзорных статьях при сравнении этот метод оказался лучшим.

Mahdi Pakdaman Naeini and Gregory F. Cooper  Binary Classifier Calibration using an Ensemble of Near Isotonic Regression Models // Proc IEEE Int Conf Data Min. 2016 Dec; 2016: 360–369.

8. Температурное шкалирование – Temperature Scaling

Этот метод относится к классу DL-методов калибровки, не потому, что применяется исключительно в нейронных сетях, просто он был придуман и приобрёл популярность именно для калибровок нейронных сетей. Метод является простым многомерным обобщением шкалирования Платта:

fff18

Заметим, что от значения параметра T, который называется «температурой» не зависит результат классификации, поэтому не меняется точность калибруемого алгоритма. Как и раньше, параметр обучается на отложенном наборе данных. Основной недостаток метода – мы одновременно уменьшаем уверенность в неправильных предсказаниях и в правильных, см.

Chuan Guo, «On Calibration of Modern Neural Networks», 2017

9. Maximum Mean Calibration Error (MMCE)

В этом методе применяется трюк: вводится регуляризатор ММСЕ, который соответствует ошибке в деформированном с помощью ядра пространстве (раньше подобная техника использовалась для сравнения распределений [Gretton, 2012]). Также используется температурное шкалирование, на рис. показана иллюстрация работы метода из статьи

Aviral Kumar, Sunita Sarawagi, Ujjwal Jain «Trainable Calibration Measures for Neural Networks from Kernel Mean Embeddings» // ICML 2018.

fff19
Рис. из работы [Kumar et. al. 2018]

10. Сглаживание меток (Label smoothing)

Как и следует ожидать, в борьбе с пере-уверенностью должно помогать «сглаживание меток», описанное в работе

Rafael Müller, Simon Kornblith, Geoffrey Hinton «When Does Label Smoothing Help?»

Если объект относится к j-му классу, то ему соответствует вектор классификации

fff20

при настройке нейросети минимизируют кросс-энтропию между вектором оценок и «сглаженным вектором классификации»

fff21

Часто такую настройку совмещают с температурным шкалированием.

11. Регуляризация с помощью энтропии (Entropy penalty)

В борьбе с пере-уверенностью можно сглаживать ответы в процессе обучения сети, для этого естественно использовать энтропию, которая максимальна, когда уверенности за все классы равны и минимальна, когда мы уверенны лишь в одном каком-то классе. Логично вычесть с каким-то коэффициентом энтропию из функции ошибки и мимимизировать обратным распространением градиента полученное выражение. См. работу

Gabriel Pereyra, George Tucker, Jan Chorowski, Łukasz Kaiser, Geoffrey Hinton «Regularizing Neural Networks by Penalizing Confident Output Distributions»

12. Использование фокальной ошибки (Focal Loss)

Focal Loss – это функция ошибки для обучения нейронных сетей, предложеная в [Lin et al., 2017] для решения проблемы дисбаланса классов, но, оказывается, она м.б. использована для калибровки:

fff23

(здесь ошибка выписана для объекта, который относится к i-му классу). Можно показать, что она оценивает сверху дивергенцию Кульбака-Лейблера между целевым распределением и ответом сети, из которой вычитается энтропия распределения ответа, умноженная на коэффициент гамма, т.е. по природе метод похож на два предыдущих:

fff24

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

fff25

Jishnu Mukhoti, Viveka Kulharia, Amartya Sanyal, Stuart Golodetz, Philip H.S. Torr, Puneet K. Dokania «Calibrating Deep Neural Networks using Focal Loss»

13. DropOut и его обобщения

В отличие от многих других DL-трюков «прореживание» (DropOut) помогает в проблеме калибровки, см. табл, взятую из статьи (немного напрягает, что на статью всего одна ссылка, и эти результаты мы не верифицировали).

fff26

Zhilu Zhang et. al. «Confidence Calibration for Convolutional NeuralNetworks Using Structured Dropout»

Мы не приводим каких-то сравнений всех перечисленных методов. Нет работы, в которой бы их все попробовали в равных условиях. Из простых – следует использовать температурное шкалировнание (в некоторых задачах его качество отвратительное, зато этот метод легко совмещается с другими), из продвинутых – ENIR, из современных – фокальную ошибку.

Приложения: Калибровка в машинном переводе

В заключение небольшой обзор работы

Aviral Kumar, Sunita Sarawagi «Calibration of encoder decoder models for neural machine translation»,

чтобы не было впечатления, что калибровка исключительно теоретическая проблема. В работе поэкспериментировали с доступными (есть открытая реализация) и современными моделями:

В ней использовалась своя «взвешенная» версия ECE (которую мы не будем подробно описывать). Авторы сделали вывод, что в языковых моделях

1) откалиброванность особенно плохая для класса EOS (end of sequence marker). Этот вывод можно подвергнуть небольшому сомнению, поскольку этот класс достаточно редкий (по сравнению, например со знаками препинания) и оценить истинные масштабы неоткалиброванности сложно. Кроме того, в разных парах языков (для перевода) получилось по-разному: недо или пере- калибровки.

2) плохая калибровка возникает из-за т.н. неопределённости во внимании (attention uncertainty).

Если мы используем механизм внимания (attention), то вычисляем коэффициенты внимания. Если какой-то коэффициент сильно больше других, то внимание сосредоточенное (мы «смотрим» на определённый токен), если все коэффициенты примерно равны, то внимание «размытое». Такую размытость опять же логично формализовать с помощью энтропии. Выяснилось, что при её больших значениях и ECE, в среднем, больше, т.е. уверенность оценивается хуже.

Метод для решения проблемы калибровки здесь довольно оригинальный. Применяется метод температурного шкалирования, но температура не постоянная, а зависит от

  • энтропии (attention uncertainty) – неопределённости во внимании,
  • логарифма верояности токена (token probability),
  • категории токена (например, «EOS»),
  • «покрытия» (input coverage – доля входных токенов с вниманием выше порога).

Учим температуру с помощью НС (даже несколько простых НС – они входят в формулу, которую мы не будем приводить). В итоге получается не просто построить откалиброванную языковую модель (см. рис.), но и улучшить качество перевода (BLEU почти всегда лучше).

fff27
Рис. из статьи [Kumar, 2019]

П.С.

Пост написан по материалам авторского курса «Глубокое обучения» для студентов кафедры ММП ВМК МГУ и доклада на семинаре научно-исследовательской группы Dasha.ai.

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

Полезные ссылки

Ещё несколько свежих статей:

Калибровки в RL

Временная калибровка в DL (статья прошлого месяца)

Байесовский подход (статья прошлого месяца)

Калибровки и иерархическая классификация

О сложности сравнения методов калибровки

  • Kumar, Ananya and Liang, Percy S and Ma, Tengyu «Verified Uncertainty Calibration» // Advances in Neural Information Processing Systems 32, 2019, P. 3792-3803

Проблема калибровки уверенности: 20 комментариев

  1. Пост написан по материалам авторского курса «Глубокое обучения».
    У нас такая задача в основном появляется для градиентного бустинга, а не глубокого обучения.
    Подскажите какие три метода Вы бы попробовали первыми для градиентного бустинга на реальном проекте?!

    • Ну, что я всегда пробовал для бустинга — это калибровку Платта. Вообще, надо на диаграмму калибровки смотреть. Та, которая изображена у меня — это из реальной задачи и я там случайный лес использовал. Там прям видна форма сигмоиды.

      Я, если честно, не пробовал калибровочные ансамбли в реальных проектах. Но — я про это не писал в посте — стекинг с логистической регрессией в качестве метаалгоритма часто тоже решает проблему калибровки.

      • Александр, добрый день!
        Подскажите, пожалуйста, стоит ли делать калибровку для бустинга над деревьями, если objective == log-loss или можно полагать, что в этом случае классификатор будет хорошо откалиброван?
        Возможно, есть ряд случаев, когда это актуально? (используем взвешивание, оцениваем и отбираем модель по другим метрикам на валидации, и так далее).

      • Здравствуйте! Так Вы же сами можете в каждом конкретном случае проверить, надо или нет;) Это просто и быстро!

  2. Александр, добрый день!

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

  3. Здравствуйте, Александр.

    Спасибо большое за пост!

    Я, наверное, чего-то не понял на рисунке 1, но в пояснении говорится, что синие столбцы — это средние уверенности, а розовые — точности, хотя из легенды получается, что средним уверенностям (mean conf.) соответствуют как раз столбцы розового цвета. Где правда?

  4. Большое спасибо за пост, очень полезно! Позволю себе небольшое дополнение к пункту о задачах, в которых не обойтись без калибровки. В общем случае калибровка абсолютно необходима там, где мы хотим оценить ожидание на основе предсказания модели. Из личной практики, например – оценка стоимости показа в онлайн рекламе.

  5. Здравствуйте. Спасибо большое за статью. У меня есть пара вопросов:

    1) Можно ли использовать label smoothing для бустинга? Ни разу не видел примеров использования, но наивно кажется, что должно работать. Или есть причины этого не делать?

    2) Сталкивались ли вы с проблемами калибровки в рекомендательных системах? Например, в таких моделях как lightfm? Есть ли в задачах рекомендаций какие-нибудь особенности по калибровке?

    • Здравствуйте!
      1) Можно, но какой будет эффект — надо смотреть по задаче.
      2) Нет, не сталкивался. В большинстве задач, если постановка простая — «составить ленту рекомендаций для пользователя» — проблемы калибровки нет. Если что-то более тонкое, типа «максимизировать прибыль проданных товаров», тогда уже надо точно оценивать вероятности покупки.

  6. […] Замечание. Формально переводя с английского, корректнее называть описанную функцию ошибки «правильно / подходящей скоринговой», но мы упростим терминологию. Есть также понятие «strictly proper scoring rule» – которое формализует класс функций, при использовании которых выдавать вероятность не просто оптимальное решение, но и единственное оптимальное (все рассмотренные в данной заметке функции будут такими). Отметим, что термин не связан с задачей банковского скоринга! Сама теория скоринговых функций является самостоятельным направлением в теории вероятности и математической статистике. Вспомним также, что проблему «заставить алгоритм выдавать вероятности» мы уже рассматривали в заметке про калибровку. […]

  7. Спасибо большое за статью!

    Интересно, что использование brier score для оценки калибровки вероятности так же упоминается и в документации sklearn, однако со странной формулировкой (https://scikit-learn.org/stable/modules/calibration.html): «sklearn.metrics.brier_score_loss may be used to assess how well a classifier is calibrated. However, this metric should be used with care because a lower Brier score does not always mean a better calibrated model.»
    Однако в одном из github issue для sklearn упоминается случай, когда идеально откалиброванная модель имеет примерно в 2 раза больше значение brier_score_loss, чем менее откалиброванная модель: https://github.com/scikit-learn/scikit-learn/issues/10883

    Также хотел бы задать вопрос по использованию откалиброванных моделей: если мы калибруем модель на отложенной выборке, и делаем предсказания уже на тестовой выборке для подсчета, например, мат. ожидания прибыльности нашей модели (если каждому объекту соответствует некоторое значение прибыли/убытка), но для тестовой выборки calibration curve уже не настолько хорошо согласуется с идеальной кривой, насколько можно доверять такому расчету, и по каким критериям это возможно оценить?

    Спасибо.

    • Спасибо!
      Ну, в идеале Вы можете промоделировать такую ситуацию: выборки делите случайным образом на три части, на одной строите модель, на второй калибруете, на третей вычисляете матожидание. Делаете так достаточное число раз и оцениваете средюю ошибку оценки матожидания и её разброс.

Оставьте комментарий