- PVSM.RU - https://www.pvsm.ru -

Самоуверенные нейросети

Самоуверенные нейросети - 1

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

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

Уверенность

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

Самоуверенные нейросети - 2

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

Самоуверенные нейросети - 3

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

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

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

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

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

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

Вероятность

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

Самоуверенные нейросети - 7

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

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

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

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

Далее эти сигналы из выходных нейронов попадают в функцию 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}}} Rightarrowleft[begin{array}{l} 0.97 \ 0.03 end{array}right] end{aligned}

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

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

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

Самоуверенные нейросети - 10

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

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

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

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

Самоуверенные нейросети - 11

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

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

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

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

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

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

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

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

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

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

Итоги

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

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

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

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

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

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

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

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

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

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

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

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

Автор: Александр Калашников

Источник [24]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/prinyatie-reshenij/376841

Ссылки в тексте:

[1] распознаёт ваши налоговые декларации: https://vc.ru/u/233759-dbrain/322812-kak-my-pomogli-servisu-nalogovyh-konsultaciy-v-kolumbii-sokratit-vremya-raspoznavaniya-dokumentov-na-80

[2] CIFAR-100: https://www.cs.toronto.edu/~kriz/cifar.html

[3] Reliability plot: https://www.jmp.com/support/downloads/JMPC80_documentation/Content/JMPCUserGuide/GR_C_0025.htm

[4] данной: https://habr.com/ru/post/276355/

[5] On Calibration of Modern Neural Networks: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjt0tqsqe34AhWRRPEDHaM2Bt4QFnoECAsQAQ&url=https%3A%2F%2Farxiv.org%2Fpdf%2F1706.04599&usg=AOvVaw0nWNwJfwrTy0CkD_ijg1fI

[6] Can You Trust Your Model’s Uncertainty? Evaluating Predictive Uncertainty Under Dataset Shift: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjbxdC0qe34AhVrX_EDHaDOBOAQFnoECAMQAQ&url=https%3A%2F%2Fproceedings.neurips.cc%2Fpaper%2F2019%2Ffile%2F8558cb408c1d76621371888657d2eb1d-Paper.pdf&usg=AOvVaw0k9nckzN6XK2O_RBrqjWV-

[7] Pitfalls of in-domain uncertainty estimation and ensembling in deep learning : https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjMwsS_qe34AhVHVvEDHduhAuEQFnoECAgQAQ&url=https%3A%2F%2Farxiv.org%2Fabs%2F2002.06470&usg=AOvVaw3S8qQY3SzjxhtWyJvjzm7O

[8] Verified Uncertainty Calibration: https://proceedings.neurips.cc/paper/2019/file/f8c0c968632845cd133308b1a494967f-Paper.pdf

[9] Confidence-Aware Learning for Deep Neural Networks : https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjZj9PKqe34AhXFXvEDHY7zDlQQFnoECAUQAQ&url=https%3A%2F%2Farxiv.org%2Fabs%2F2007.01458&usg=AOvVaw3SC0XA3wnaKsswvVOI1tj_

[10] Simple and Scalable Predictive Uncertainty Estimation using Deep Ensembles : https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwj51czPqe34AhXCOHoKHUW1CMAQFnoECAgQAQ&url=https%3A%2F%2Farxiv.org%2Fabs%2F1612.01474&usg=AOvVaw2aGeWJfW04TTbRKj8rYNQ6

[11] Dropout as a bayesian approximation: Representing model uncertainty in deep learning: https://arxiv.org/abs/1506.02142?context=stat

[12] Masksembles for Uncertainty Estimation : https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwi-4vTeqe34AhVjX_EDHTepCs4QFnoECAkQAQ&url=https%3A%2F%2Farxiv.org%2Fabs%2F2012.08334&usg=AOvVaw3t5DIYrcjkq1OiRWD7Mgny

[13] Dropout Distillation: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwir15Tlqe34AhXrVfEDHeG2CD4QFnoECAUQAQ&url=http%3A%2F%2Fproceedings.mlr.press%2Fv48%2Fbulo16.pdf&usg=AOvVaw2yuCRVpxjHMiculQmKHCRX

[14] Enhancing the reliability of out-of-distribution image detection in neural networks : https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwihmcHzqe34AhWJYPEDHYBkAYkQFnoECAkQAQ&url=https%3A%2F%2Farxiv.org%2Fabs%2F1706.02690&usg=AOvVaw31lYuEt4iKNNODSdzfkGmr

[15] Bayesian SegNet: Model Uncertainty in Deep Convolutional Encoder-Decoder Architectures for Scene Understanding: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwib3tD5qe34AhW2XvEDHXBkDkUQFnoECAgQAQ&url=https%3A%2F%2Farxiv.org%2Fabs%2F1511.02680&usg=AOvVaw3bNaeq7BiBro9Go6v_QaSp

[16] A Probabilistic U-Net for Segmentation of Ambiguous Images: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjt5Pv-qe34AhUcXvEDHXWVAT8QFnoECAcQAQ&url=https%3A%2F%2Farxiv.org%2Fabs%2F1806.05034&usg=AOvVaw3NMXRDRuy9f2ZiJ0u3nhGt

[17] PHiSeg: Capturing Uncertainty in Medical Image Segmentation : https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiJ97iEqu34AhWbVfEDHc4jBFMQFnoECAYQAQ&url=http%3A%2F%2Farxiv.org%2Fabs%2F1906.04045&usg=AOvVaw0CAFFrg5gCtKh0lMo5OOoV

[18] Medical Matting: Medical Images Segmentation with Uncertainty from Matting Perspective: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjvyJ6Jqu34AhXyRvEDHb6FApMQFnoECAcQAQ&url=https%3A%2F%2Farxiv.org%2Fpdf%2F2106.09887&usg=AOvVaw3xGAjkbwuG7fqfXmlTngWW

[19] Uncertainty-Aware Training of Neural Networks for Selective Medical Image Segmentation : https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiEgJ6Nqu34AhXxVfEDHa9lDL0QFnoECAQQAQ&url=https%3A%2F%2Fopenreview.net%2Fforum%3Fid%3DF1MIJCqX2J&usg=AOvVaw1-8vo9Ms_Ld2YHnQiDbcs_

[20] Confidence Prediction for Lexicon-Free OCR: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwik5pCTqu34AhV8YPEDHao0BMYQFnoECAYQAQ&url=https%3A%2F%2Farxiv.org%2Fabs%2F1805.11161&usg=AOvVaw3o5T5L9GDGmkB-9k9vd2m9

[21] Robust Lexicon-Free Condence Prediction for Text Recognition: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjKv5mYqu34AhXHVfEDHXp8BR0QFnoECAYQAQ&url=https%3A%2F%2Fieeexplore.ieee.org%2Fdocument%2F9412671&usg=AOvVaw0Ok7RAkucNdXS2tvmFo0zz

[22] Evidential Deep Learning to Quantify Classification Uncertainty: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiT5dGequ34AhUbQPEDHTrCCzEQFnoECAQQAQ&url=https%3A%2F%2Farxiv.org%2Fabs%2F1806.01768%3Fcontext%3Dcs&usg=AOvVaw2EPqlUn8yoign13KDYI18o

[23] Epistemic Neural Networks: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwj8hc2jqu34AhXwRPEDHSpXBmUQFnoECAcQAQ&url=https%3A%2F%2Farxiv.org%2Fabs%2F2107.08924&usg=AOvVaw26mijDkWVkQ2TZSKjqBjpU

[24] Источник: https://habr.com/ru/post/593315/?utm_source=habrahabr&utm_medium=rss&utm_campaign=593315