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

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

Уверенность

Проведём простейший эксперимент. Возьмём две нейросети: LeNet 1998 года и относительно современный ResNet 2016го.

Протестируем их на датасете CIFAR-100, после чего построим гистограммы распределений уверенности предсказаний для обеих моделей.

Легко увидеть, насколько сильно смещено распределение для ResNet сети. Более 60% изображений были предсказаны ей с уверенностью близкой к 100%. В то же время старушка LeNet показала относительную равномерность в своих предсказаниях.

Но давайте построим чуть более информативную штуку:

Жёлтый цвет здесь - предсказанное распределение. Фиолетовый и розовый - отступы от оптимальных значений в большую и меньшую сторону соответственно.
Жёлтый цвет здесь - предсказанное распределение. Фиолетовый и розовый - отступы от оптимальных значений в большую и меньшую сторону соответственно.

Данный график называется диаграммой достоверности (Reliability plot). Распределение по иксу разбито на 10ть бинов с шагом 0.1, а по игреку рассчитано относительное количество верно распознанных картинок, уверенность в предсказании которых входит в рассматриваемый бин.

Идеально нам хотелось бы видеть, к примеру, для бина [0.5-0.6] около 50% верно распознанных картинок с предсказанной уверенностью входящей в интервал. Для бина [0.9-1.0] уже порядка 100%. Т.е. мы хотим, чтобы\hat{p}(картинка) \rightarrow P(картинка)(предсказанная уверенность была близка к вероятности).

Оптимальный уровень показан на рисунке серой диагональю. Относительно него и тут мы видим, как сильно современный ResNet проигрывает сети 1998го года в плане достоверности своих предсказаний.

Здесь однако стоит обговорить один важный момент, что несмотря на большую достоверность уверенности LeNet, данная сеть сильно проигрывает ResNet в качестве предсказаний, показывая точность в районе 50% против 70%.

Вероятность

Но почему же вообще уверенность\neвероятность? Выясним на кошечках и собачках:

В глубоком обучении задача определения кошечка на картинке или собачка называется стандартно бинарной классификацией.

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

Безусловно, архитектуры бывают разные. 
Но этот пример самый популярный и наиболее показательный.
Безусловно, архитектуры бывают разные. Но этот пример самый популярный и наиболее показательный.

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

Далее эти сигналы из выходных нейронов попадают в функцию softmax, она переводит их в числа от 0 до 1, которые часто неверно интерпретируют как вероятности отнесения предсказания к классу.

\begin{aligned} &\left[\begin{array}{l} 3.8 \\ 0.4 \end{array}\right] \Rightarrow softmax(z) = \frac{e^{z_{i}}}{\sum_{j=1}^{K} e^{z_{j}}} \Rightarrow\left[\begin{array}{l} 0.97 \\ 0.03 \end{array}\right] \end{aligned}

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

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

Неуверенность

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

Однако этот процесс не дарует сети одной важной способности. Способности говорить "я не знаю".

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

Но и эту проблему исследователи постепенно учатся решать. Данное направление в глубоком обучении называется оценкой неопределённости (Uncertainty estimation). Оценки неопределенности, полученные из модели, могут дать некоторое представление о достоверности конкретного предсказания. Это добавляет прозрачности алгоритму и сообщает нам о возможной неясности. Это особенно важно в приложениях, в которых критически важна безопасность решения.

Наиболее теоретически честным методом оценки неопределённости являются байесовские нейронные сети. Это подкласс вероятностных моделей в глубоком обучении. В отличие от обычных сетей они представляют каждый отдельный свой вес не в виде числа, а моделируют его целым распределением.

Здесь я не буду мучать читателя принципами работы этих сетей и отошлю интересующихся к данной статье на Хабре. Скажу лишь, что хоть этот метод и хорошо обоснован теоретически, выдаёт приличные оценки неопределённости, но редко применяется на практике из-за сложностей в обучении и слабого качества предсказаний самих по себе.

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

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

Ансамблирование нейросетей
Ансамблирование нейросетей

Ансамблирование в машинном обучении давно является популярной и мощной практикой для улучшения предиктивной способности модели. Однако, не совсем ясно, как это может помочь в задаче моделирования неопределенности.

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

В итоге мы получим набор нейросетей, обученных на одинаковых данных, но имеющих различные веса. Посчитав дисперсию предсказаний сетей в ансамбле мы и получим нашу искомую оценку неопределённости.

Dropout двух нейронов из десяти
Dropout двух нейронов из десяти

Слегка иной идеей является вариационный дропаут. Он работает в пределах одной сети, т.е. делит общие веса. Предлагается добавить в архитектуру нейросети большое количество dropout слоёв (слои, которые случайно выбрасывают какой-то процент нейронов при одном проходе, изначально применялись для регуляризации) и не выключать это поведение при предсказании. Это нам даёт возможность делать большое количество (сильно большее, чем для ансамбля) предсказаний, хотя они и будут сильно скоррелированны. Далее в ход идёт всё та же их дисперсия для моделирования неопределённости.

Итоги

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

В целом данная статья получилась скорее обзорной и больше для людей не из области глубокого обучения. Перед специалистами превентивно извиняюсь за малое количество математики и отсутствие кода :) Ждите от меня более детальный обзор недавнего state-of-the-art решения от DeepMind по тематике, там всё будет. Да и в рамках рассмотрения одного лишь метода должно получиться не так нагруженно, чем если всю математику выложить здесь. А пока читайте статьи, которые показались мне интересными по теме, подборка получилась обильной:

Список референсных статей (и не только):

Confidence estimation:
•‎ On Calibration of Modern Neural Networks - базовая статья про оценку уверенности в современных нейросетях.
Can You Trust Your Model’s Uncertainty? Evaluating Predictive Uncertainty Under Dataset Shift - большое хорошее исследование от Гугла по теме.
Pitfalls of in-domain uncertainty estimation and ensembling in deep learning - отличная статья от русских исследователей из Samsung AI, исследует то, как правильно оценивать уверенность.
Verified Uncertainty Calibration - побольше про калибровку от Стэнфорда.

Confidence-Aware Learning for Deep Neural Networks - статья про внесение в функцию ошибки дополнительного элемента, учитывающего непосредственно уверенность.

Uncertainty estimation:
Simple and Scalable Predictive Uncertainty Estimation using Deep Ensembles - основная статья про глубокие ансамбли.
Dropout as a bayesian approximation: Representing model uncertainty in deep learning - основная статья про вариационный дропаут.
Masksembles for Uncertainty Estimation - немного усовершенствованный вариационный дропаут с русскими авторами из EPFL.

Dropout Distillation - статья про дистилляцию вариационного дропаута для ускорения работы.

Enhancing the reliability of out-of-distribution image detection in neural networks - простой, но эффективный способ определения того, что сеть не видела поданные в неё данные (out of distribution детекция, был пример про иное животное для кошек/собак).

Bayesian SegNet: Model Uncertainty in Deep Convolutional Encoder-Decoder Architectures for Scene Understanding - основная статья про оценку неопределённости в задаче сегментации.
A Probabilistic U-Net for Segmentation of Ambiguous Images - объединение Unet и VAE, позволяет сэмплировать бесконечное количество масок сегментации и далее их агрегировать.
PHiSeg: Capturing Uncertainty in Medical Image Segmentation - метод в сегментации создающий вариативность путём обучения сразу нескольких независимых голов.
Medical Matting: Medical Images Segmentation with Uncertainty from Matting Perspective - ещё один метод для сегментации, объединяет оценку неопределённости с задачей матирования.
Uncertainty-Aware Training of Neural Networks for Selective Medical Image Segmentation - последняя про сегментацию, внедряет идею с ранжирующим элементом в функции ошибки подобно упомянутой выше Confidence-Aware Learning for Deep Neural Networks.

Confidence Prediction for Lexicon-Free OCR - оценка неопределённости в задаче распознавания текста.
Robust Lexicon-Free Condence Prediction for Text Recognition - ещё одна про распознавание текста.

Other:

Evidential Deep Learning to Quantify Classification Uncertainty - интересная идея, как предсказывать уверенность корректно и сразу.
Epistemic Neural Networks - та самая недавняя SoTA от DeepMind.

Список референсных мемов:

Комментарии (12)


  1. victor_1212
    10.07.2022 18:04
    +1

    приятная статья, полезные ссылки, посмотрел по диагонали базовую статью + статью людей из samsung, кое-что стало на место, интересная тематика, такое впечатление что наше восприятие нейросетей само нуждается в калибровке, интересно есть ли работы типа оценки поведения нейросети при помощи другой нейросети?

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


  1. red_elk
    10.07.2022 19:13
    +5

    В статье, на мой взгляд, неудачное противопоставление "современных" сетей со старым добрым LeNet из которого читатель может сделать вывод что современные сети хуже. В реальности тот же ResNet значительно превосходит LeNet по точности распознавания, а калиброванность зависит от используемых методов и настроек обучения. Если вам нужна хорошо откалиброванная сеть для решения задачи классификации, использование ResNet или другой современной архитектуры гораздо предпочтительнее, а методы обучения калиброванной сети известны. В простейшем случае использование label smoothing может оказаться достаточным.


    1. sleep3r Автор
      10.07.2022 19:25
      +3

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


  1. Vasyutka
    10.07.2022 20:03
    +2

    Спасибо за упоминание проблемы. Тут как с MNIST повелось считать процент попадания в один из классов, так и понеслось. А то, что данные могут быть вообще из другого домена и нужно на самом деле с учетом этого делать оценку правдоподобия, как-то выплескивают вообще :). Заниматься этой проблемой пару лет назад стало более менее мейнстримом в академическом сообществе, но на уровне CV инженеров еще не слишком проблема публична.


  1. vadimk91
    10.07.2022 20:33
    +5

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

    Ага, знаем. Когда тебе блокируют банковскую карту после совершенно тривиальной операции, которую ты раньше делал десятки раз на том же компьютере, объяснить техподдержка ничего не может, кроме того, что надо идти в банк и доказывать, что ты не тот верблюд. Практически уверенность предсказания сетей - это то же, что и "нет оснований не доверять сотруднику" - знакомая многим фраза в этой стране.


    1. PanDubls
      10.07.2022 22:58
      +2

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


  1. vedenin1980
    11.07.2022 15:48

    Однако этот процесс не дарует сети одной важной способности. Способности говорить «я не знаю». Что будет если в нашу нейронку с кошками и собаками подать иное животное? А если совсем не животное? В лучшем случае мы захотим увидеть предсказанную уверенность близкую к 0.5, однако с современными сетями этого ждать не приходится (распределение мы видели). Сеть просто выберет понравившейся ей класс из «кошка»/«собака» и выдаст приличную вероятность, она ведь уверена.

    Мне кажется разумным делать тогда 3 класса «кошка/собака/<не кошка и не собака>» и соотвественно подавать в обучающей выборке варианты когда ни кошек и ни собак не будет.


    1. sleep3r Автор
      11.07.2022 16:11

      Так можно делать, но это не лучший подход. Исходя из сильной гипотетической вариативности примеров для класса "остальное" не очень ясно, почему мы в итоге получим желаемое разделение.

      Обычно всё-таки данную задачу формулируют как out-of-distribution детекцию и пытаются считать некоторую меру близости к видимой выборке. Из необсуждённых в статье методов для этой задачи можно привести, к примеру, метрические.


  1. BrainDebugger
    11.07.2022 16:57

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


  1. Durham
    12.07.2022 11:05
    -1

    Что такое "LeNet 1998 года"? Если речь о статье

    Y. LeCun, L. Bottou, Y. Bengio and P. Haffner: Gradient-Based Learning Applied to Document RecognitionProceedings of the IEEE, 86(11):2278-2324, November 1998

    То там семейство разных моделей, совершенно непонятно о какой именно идёт речь. Если что-то сранивается с чем-то, то нужно точно обозначать, что именно и как оно устроено, иначе модет случится казус. В "LeNet 1998" года не было softmax (там на выходном слое стояли RBF-нейроны), а обучалась она используя MSE, а не кросс-энтропию. Почему это важно, если сравнивать сеть в выходном слое которой все выходы за счёт softmax суммируются в 1.0 и сеть, где они не обязаны это делать, то это одно уже поменяет форму распределения, поэтому делать такое сравнение не очень-то корректно.

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

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


    1. sleep3r Автор
      12.07.2022 12:19

      Это эксперимент из статьи On Calibration of Modern Neural Networks. У неё 2600 цитирований. Вся суть эксперимента - показать смещённость уверенности современных моделей. Почему вы тут увидели выводы мирового значения я не знаю. По смыслу он схож с подобными в литературе, к примеру со статьёй Optimization with soft Dice can lead to a volumetric bias, где освещается проблема скалиброванности сетей с Dice лоссом.


      1. Durham
        12.07.2022 22:23

        Тогда в тексте не сделана ссылка на источник, написано "проведем эксперимент", что у читателя оставляет впечатление, что эксперимент вами и проведен. Тогда как должно быть "Chuan Guo с соавторами провел эксперимент" или "Эксперимент, проведенный в [1] показал". В этом случае критика опыта уже будет направлена на авторов оригинальной статьи. То что ссылка есть в конце значения не имеет, так как в списке туча ссылок и вы заставляете читателя фантазировать по поводу того, какая часть статьи откуда взята или как придумана.

        Отдельно отмечу, что количество цитирований не должно автоматически возводить статью в ранг объекта для поклонения. Даже у классических статей Хинтона и Лекуна, не все второстепенные результаты воспроизводятся, у современных с этим еще хуже. В статье же о которой идет речь, хоть и указано, что имеется в виду LeNet-5, особых деталей о том, как этот результат получен нет, поэтому вопросы которые я задал остаются. А так как пример играет роль очень вспомогательную, и для предложенного метода не особо важную, то вполне может случится так, что ими не задавались особо ни рецензенты, ни те, кто статью цитировал. Возможно, авторы учли все верно, а возможно и нет. (Последний абзац просьба не воспринимать, ни как критику вашей статьи, а как замечание в целом о том, что число цитирований статьи не может служить аргументом, доказывающим, что в ней каждая строчка верна).