Введение

Нейронные сети были основой искусственного интеллекта. Область искусственного интеллекта значительно изменилась как в академических кругах, так и в промышленности с тех пор, как Уоррен МакКаллох разработал искусственные нейроны в 1943 году, а затем Фрэнк Розенблатт и Артур Сэмюэл продвинулись в 20 веке.

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

Сверточные нейронные сети (ConvNets), алгоритм глубокого обучения, который в основном используется для обработки изображений, были одним из новых подходов, появившихся в 2000-х годах. Этот метод существует уже некоторое время, и, учитывая быстрый рост в этой области, он по-прежнему широко применяется для классификации изображений, обнаружения и сегментации объектов, распознавания образов и многих других задач, связанных с изображениями, видео, а также ограниченное использование в обработке текста. , к речи, выходящей за рамки их первоначального использования. ConvNets — одна из наиболее изученных и наиболее эффективных архитектур в области глубокого обучения с момента ее создания в 1988 году Яном Лекуном.

Чтобы понять CapsNets и проблему, которую они решают, нам нужно изучить ConvNets и проблему, которую они создают.

Сверточные нейронные сети

Архитектура Convolutional Neural Networks (ConvNets) была вдохновлена ​​схемой подключения в человеческом мозгу. Получив изображение в качестве входных данных, ConvNets может различать отдельные аспекты и объекты на изображении, придавая им разные веса и смещения. Это достигается применением многочисленных матричных умножений и суммирования к входному изображению, что приводит к надежным прогнозам. ConvNets способны фиксировать пространственные и временные зависимости в изображении. Сверточный слой, слой пула и полносвязный слой — это три основных слоя в ConvNets. Каждый уровень понимает изображения на прогрессивном уровне детализации. Первые слои, скорее всего, представляют собой простые геометрические формы, кривые, края, резкость и цвет. в то время как последующие слои пытаются понять сложные формы, такие как прямоугольники, квадраты, вплоть до сложных форм, таких как человеческие лица, животные и т. д.

Сверточный слой

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

Слой объединения

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

Это означает, что объект будет узнаваем независимо от того, где он появляется в кадре.

Полностью подключенный слой

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

Для более глубокого понимания ConvNets нажмите здесь

Проблема с ConvNets (Pooling Layer)

Как указано выше, CNN имеет несколько фильтров, объединенных вместе, которые учатся распознавать определенные функции независимо от местоположения на самом изображении. Эти функции просты на начальных уровнях сети и становятся более сложными по мере того, как сеть становится глубже.

Очень важным уровнем в ConvNets является уровень пула. Объединение — очень важная операция в CNN, она направлена ​​на создание позиционной инвариантности (позиционная инвариантность означает, что только одно представление может использоваться для распознавания одних и тех же объектов в разных позициях) и используется после каждого слоя CNN, чтобы сделать проблему более сложной. вычислительно податлив. Однако проблема с операцией объединения заключается в том, что она заставляет нас терять все позиционные данные в изображении, теряет ценную информацию, а также игнорирует часть изображения. Например, если у нас есть лицо на изображении, оно состоит из глаз, рта и носа. Одна очень важная особенность изображения заключается в том, что между этими частями существует пространственная взаимосвязь (например, рот находится ниже носа, который обычно находится ниже глаз). В этом примере CNN преуспела бы, чтобы классифицировать изображение как лицо, также, если есть часть лица, скажем, рот перемещен в верхний левый угол изображения, CNN по-прежнему будет классифицировать изображение как лицо, а не с учетом пространственного положения объектов на изображении. Короче говоря, CNN могут статистически изучать шаблоны изображений, но не то, как выглядит фактическое изображение в разных ориентациях.

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

Как заявил Джеффри Хинтон,

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

Капсульные сети: решение проблем

Решение CapsNets для проблемы ConvNets (механизм маршрутизации по соглашению). CapsNets — это новый и инновационный тип сети глубокого обучения. Этот алгоритм был представлен в конце октября 2017 года в основополагающей статье под названием Динамическая маршрутизация между капсулами, написанной Сарой Сабур, Николасом Фростом и Джеффри Хинтоном. Хинтон широко известен во всем сообществе глубокого обучения как отец глубокого обучения. Действительно, CapsNets уже превосходят лучшие CNN по классификации MNIST, что впечатляет!

Капсула — это группа нейронов, вектор активности которых представляет собой параметры объекта определенного типа, такого как объект или часть объекта. Длина вектора активности используется для представления вероятности существования объекта, а его ориентация — для представления параметров реализации. Активные капсулы на одном уровне делают прогнозы с помощью матриц преобразования для параметров реализации капсул более высокого уровня. (Когда несколько прогнозов согласуются, становится активной капсула более высокого уровня. Хинтон et al. смог показать, что сеть Capsule достигает производительности SOTA в MNIST по сравнению с ConvNets при распознавании сильно перекрывающихся цифр. используется итеративный механизм рутины по соглашению.

Как CapsNets решает проблему ConvNets?

Вопрос в том, как мы представляем многомерные сущности? Итак, идея заключается в том, что в каждой области изображения, как мы предполагаем, есть не более одного признака определенного типа, а затем мы будем использовать группу нейронов, и их активность будет представлять различные аспекты этого признака, например, внутри что регион точно, каковы его координаты x и y? Какая у него ориентация? Как быстро он движется? Какой это цвет? Насколько он яркий? И тому подобное. Таким образом, мы можем использовать целую группу нейронов для представления разных измерений одного и того же объекта, если только один из них. Этот метод представления сильно отличается от того, как обычно используются нейронные сети, где каждый слой сети пытается предсказать конкретный отдельный объект.

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

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

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

Более глубокое понимание CapsNet

Давайте предположим, что для одной фиксации дерево синтаксического анализа вырезается из фиксированной многослойной нейронной сети, как скульптура вырезается из скалы. Каждый слой будет разделен на множество небольших групп нейронов, называемых «капсулами» (Хинтон и др. [2011]), и каждый узел в дереве синтаксического анализа будет соответствовать активной капсуле. Используя итеративный процесс маршрутизации, каждая активная капсула выбирает капсулу на верхнем уровне в качестве родительской в ​​дереве. Для более высоких уровней зрительной системы этот повторяющийся процесс будет решать проблему сопоставления частей с целыми. Активность нейронов в активной капсуле представляет собой различные свойства конкретного объекта, присутствующего на изображении. Эти свойства могут включать в себя множество различных типов параметров экземпляра, таких как поза (положение, размер, ориентация), деформация, скорость, альбедо, оттенок, текстура и т. д. Одним из очень особых свойств является существование экземпляра объекта на изображении.

Тот факт, что вывод капсулы является вектором, позволяет использовать мощный механизм динамической маршрутизации, чтобы гарантировать отправку вывода капсулы соответствующему родителю на вышележащем уровне. Первоначально выходные данные направляются всем возможным родителям, но уменьшаются с помощью коэффициентов связи, которые в сумме составляют 1. Для каждого возможного родителя капсула вычисляет «вектор предсказания», умножая свой собственный вывод на матрицу весов. Если этот вектор предсказания имеет большое скалярное произведение с выходом возможного родителя, существует нисходящая обратная связь, которая увеличивает коэффициент связи для этого родителя и уменьшает его для других родителей. Это увеличивает вклад, который капсула вносит в этот родитель, тем самым еще больше увеличивая скалярное произведение предсказания капсулы с выходом родителя.

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

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

Чтобы лучше понять CapsNet, ознакомьтесь с документом Хинтона. Другие полезные ресурсы: