Этот пост является первым из серии из восьми постов о байесовских сверточных сетях. Посты будут структурированы следующим образом:

  1. Потребность в байесовских нейронных сетях
  2. Базовые знания необходимы для лучшего понимания байесовских нейронных сетей.
  3. Некоторые недавние работы в области байесовских нейронных сетей
  4. Байесовские сверточные нейронные сети с использованием вариационного вывода
  5. Создайте свою собственную байесовскую сверточную нейронную сеть в PyTorch
  6. Оценка неопределенности в байесовских нейронных сетях
  7. Отсечение модели в байесовской нейронной сети
  8. Приложения в других областях (Super Resolution, GAN и т. д.)

Блоги будут выпускаться каждый месяц, начиная с первой недели января 2020 года. Следите за обновлениями! Также не стесняйтесь проверить сообщение Зачем миру нужна байесовская перспектива.

Давайте начнем эту серию с понимания необходимости байесовских нейронных сетей в этом блоге.

Постановка задачи

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

Сверточные нейронные сети (CNN), вариант DNN, уже превзошли человеческую точность в области классификации изображений. Из-за способности CNN соответствовать большому количеству точек нелинейных данных, им требуется большой объем обучающих данных. Это часто делает CNN и нейронные сети в целом склонными к чрезмерной подгонке наборов данных с небольшим количеством обучающих примеров для каждого класса. Модель имеет тенденцию хорошо соответствовать обучающим данным, но плохо предсказывает невидимые данные. Это часто делает нейронные сети неспособными правильно оценивать неопределенность обучающих данных и, следовательно, приводит к чрезмерно уверенным решениям о правильном классе, прогнозе или действии.

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

Чтобы понять это, давайте рассмотрим обучение бинарного классификатора CNN на классах изображений собак и кошек. Теперь, когда изображение леопарда встречается в наборе тестовых данных, модель в идеале должна предсказать, что это не собака или кошка (вероятность 50% для собак и 50% для класса кошек). Однако из-за функции softmax на выходном уровне для достижения оценки вероятности она сжимает выходную оценку вероятности одного класса и максимизирует другой, что приводит к чрезмерно уверенному решению для одного класса. Это одна из основных проблем точечной нейронной сети.

Обратите внимание, что термин точечная оценка используется для нейронной сети, где веса представлены одной точкой. С другой стороны, байесовская нейронная сеть представляет веса в форме распределения, как показано на рисунке 1.

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

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

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

Текущая ситуация

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

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

Практичность байесовских нейронных сетей

Байесовский апостериорный вывод по параметрам нейронной сети является теоретически привлекательным методом контроля чрезмерной подгонки; однако моделирование распределения по ядрам (также известным как фильтры) CNN никогда ранее не предпринималось успешно, возможно, из-за огромного количества параметров и чрезвычайно больших моделей, обычно используемых в практических приложениях.

Даже при небольшом количестве параметров получение апостериорной модели в байесовской нейронной сети является сложной задачей. Вместо этого часто используются аппроксимации апостериорной модели, причем популярным подходом является вариационный вывод. Здесь можно было бы смоделировать апостериорное распределение, используя простое вариационное распределение, такое как распределение Гаусса, и попытаться подогнать параметры распределения так, чтобы оно было как можно ближе к истинному апостериорному. Это достигается путем минимизации расхождения Кульбака-Лейблера между этим простым вариационным распределением и истинным апостериорным. Многие использовали этот подход в прошлом для стандартных моделей нейронных сетей.
Но вариационный подход, используемый для аппроксимации апостериорного в байесовских НС, может быть довольно вычислительно затратным - использование гауссовских аппроксимирующих распределений увеличивает количество параметров модели значительно, без значительного увеличения емкости модели. Blundell et al. (2015) , например, использовали гауссовские распределения для байесовской апостериорной аппроксимации NN и удвоили количество параметров модели, но при этом сообщили о той же прогностической эффективности, что и традиционные подходы с использованием исключения. Это делает подход непригодным на практике для использования с CNN, поскольку увеличение количества параметров слишком дорого.

Как же тогда это сделать?

Есть много способов построить байесовские нейронные сети (о многих из них мы поговорим в блоге 3). Однако в этой серии мы сосредоточимся на построении байесовской CNN с использованием байесовского обратного распространения. Точный байесовский вывод о весах нейронной сети затруднен, поскольку количество параметров очень велико, а функциональная форма нейронной сети не поддается точной интеграции. Итак, мы аппроксимируем трудноразрешимые истинные апостериорные распределения вероятностей p (w | D) с помощью вариационных распределений вероятностей q_θ ( w | D), которые включают свойства гауссовских распределений μ ∈ ℝ ^ d и σ ∈ ℝ ^ d , обозначается N (θ | μ, σ²), где d - общее количество параметров, определяющих распределение вероятностей. Форма этих гауссовских вариационных апостериорных распределений вероятностей, определяемая их дисперсией σ², выражает оценку неопределенности каждого параметра модели.

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

Чего ожидать через несколько недель

  1. Мы увидим, как байесовский метод Backprop может быть эффективно применен к CNN. Мы представим идею применения двух сверточных операций, одну для среднего и одну для дисперсии.
  2. Мы увидим, как модель учится более богатым представлениям и предсказаниям с помощью усреднения нескольких дешевых моделей.
  3. Мы увидим, что предлагаемый универсальный и надежный метод вариационного вывода для байесовской CNN может быть применен к различным архитектурам CNN без каких-либо ограничений на их производительность. Мы закодируем модель в PyTorch и сравним результаты с сетями точечных оценок.
  4. Мы будем оценивать алеаторические и эпистемологические неопределенности в байесовской нейронной сети. Кроме того, мы эмпирически покажем, как уменьшается неопределенность, позволяя решениям, принимаемым сетью, становиться более уверенными по мере увеличения точности обучения.
  5. Мы узнаем, что наш метод обычно только удваивает количество параметров, но обучает бесконечный ансамбль, используя несмещенные оценки Монте-Карло градиентов.
  6. Мы применим норму L1 к параметрам обученной модели и сократим количество ненулевых значений. Кроме того, мы настраиваем модель, чтобы уменьшить количество параметров модели. без снижения точности прогноза модели.
  7. Наконец, мы применим концепцию байесовской CNN к таким задачам, как Сверхразрешение изображения и Генеративные состязательные сети, и сравним результаты с другими известные архитектуры в соответствующей области.

Захватывающе! Верно? Перейдите к следующему сообщению.

Для всех нетерпеливых мастеров проверьте всю теорию здесь и реализацию в PyTorch здесь.



Предлагаемые чтения:

  1. Неопределенность веса в нейронных сетях
  2. Практический вариационный вывод для нейронных сетей
  3. Байесовские сверточные нейронные сети с использованием вариационного вывода
  4. Байесовский от Backprop

Реализация:

PyTorch

Не стесняйтесь оставлять свои ценные комментарии и писать мне здесь или в Twitter.