Капсульная нейронная сеть - Capsule neural network
А Капсульная нейронная сеть (CapsNet) - это система машинного обучения, которая является разновидностью искусственная нейронная сеть (ИНС), которые можно использовать для лучшего моделирования иерархических отношений. Этот подход представляет собой попытку более точно имитировать биологическую нейронную организацию.[1]
Идея состоит в том, чтобы добавить структуры, называемые «капсулами», на сверточная нейронная сеть (CNN) и повторно использовать выходные данные нескольких из этих капсул для формирования более стабильных (по отношению к различным возмущениям) представлений для более высоких капсул.[2] На выходе получается вектор, состоящий из вероятность наблюдения, а поза для этого наблюдения. Этот вектор похож на то, что делается, например, при выполнении классификация с локализацией в CNN.
Среди других преимуществ capsnet решает «проблему Пикассо» в распознавании изображений: изображения, которые имеют все правильные части, но не находятся в правильном пространственном соотношении (например, на «лице» положение рта и одного глаза меняется ). Для распознавания изображений capsnets используют тот факт, что, хотя изменения точки обзора имеют нелинейные эффекты на уровне пикселей, они имеют линейные эффекты на уровне детали / объекта.[3] Это можно сравнить с инвертированием визуализации объекта, состоящего из нескольких частей.[4]
История
В 2000 г. Джеффри Хинтон и другие. описал систему визуализации, которая объединила сегментация и распознавание в единый процесс вывода с использованием разбирать деревья. Так называемые сети достоверности описывают совместное распределение по скрытым переменным и по возможным деревьям синтаксического анализа. Эта система оказалась полезной на MNIST рукописная база данных цифр.[4]
Механизм динамической маршрутизации для капсульных сетей был введен Хинтоном и его командой в 2017 году. Было заявлено, что этот подход снижает количество ошибок на MNIST и уменьшить размеры обучающей выборки. Утверждалось, что результаты значительно лучше, чем у CNN, по сильно перекрывающимся цифрам.[1]
В первоначальной идее Хинтона одна мини-колонка представляла и обнаруживала одну многомерную сущность.[5][примечание 1]
Трансформации
An инвариантный - это свойство объекта, которое не изменяется в результате некоторого преобразования. Например, площадь круга не изменится, если круг сдвинуть влево.
Неофициально эквивариантный это свойство, которое предсказуемо изменяется при преобразовании. Например, при смещении центр круга перемещается на ту же величину, что и круг.[6]
Неэквивариантность - это свойство, значение которого не изменяется предсказуемо при преобразовании. Например, преобразование круга в эллипс означает, что его периметр больше не может быть вычислен как π, умноженное на диаметр.
В компьютерном зрении ожидается, что класс объекта будет инвариантом для многих преобразований. То есть кошка остается кошкой, если ее сдвинуть, перевернуть вверх ногами или уменьшить в размерах. Однако многие другие свойства вместо этого эквивалентны. Объем кота меняется при масштабировании.
Эквивариантные свойства, такие как пространственные отношения, фиксируются в поза, данные, которые описывают объект перевод, вращение, масштаб и отражение. Перевод - это изменение местоположения в одном или нескольких измерениях. Вращение - это изменение ориентации. Масштаб - это изменение размера. Отражение - это зеркальное отражение.[1]
Без присмотра capsnets узнайте глобальный линейное многообразие между объектом и его позицией в виде матрицы весов. Другими словами, capsnets могут идентифицировать объект независимо от его позы, вместо того, чтобы учиться распознавать объект, включая его пространственные отношения как часть объекта. В сетке поза может включать в себя свойства, отличные от пространственных отношений, например цвет (кошки могут быть разных цветов).
Умножение объекта на многообразие создает объект (для объекта в пространстве).[7]
Объединение
Capsnets отвергают слой объединения Стратегия обычных CNN, которая уменьшает количество деталей, которые нужно обработать на следующем более высоком уровне. Объединение в пул обеспечивает определенную степень трансляционной инвариантности (он может распознавать один и тот же объект в несколько другом месте) и позволяет представлять большее количество типов функций. Сторонники Capsnet утверждают, что объединение:[1]
- нарушает восприятие биологической формы, поскольку не имеет внутренней системы координат;
- обеспечивает инвариантность (отбрасывание позиционной информации) вместо эквивалентности (распутывание этой информации);
- игнорирует линейное многообразие, лежащее в основе многих вариаций изображений;
- направляет статически вместо того, чтобы сообщать о потенциальной «находке» функции, которая может ее оценить;
- повреждает расположенные поблизости детекторы объектов, удаляя информацию, на которую они полагаются.
Капсулы
Капсула - это набор нейронов, которые индивидуально активируются для различных свойств типа объекта, таких как положение, размер и оттенок. Формально капсула - это набор нейронов, которые вместе производят вектор активности с одним элементом для каждого нейрона, чтобы хранить значение экземпляра этого нейрона (например, оттенок).[1] Графические программы используют значение создания экземпляра для рисования объекта. Capsnets пытается извлечь их из своих входных данных. Вероятность присутствия объекта на конкретном входе - это длина вектора, а ориентация вектора количественно определяет свойства капсулы.[1][3]
Искусственные нейроны обычно выводят скалярную активацию с действительным знаком, которая приблизительно представляет вероятность наблюдения. Capsnets заменяют детекторы функций скалярного вывода капсулами с векторным выводом, а max-pooling - маршрутизацией по соглашению.[1]
Поскольку капсулы независимы, когда несколько капсул совпадают, вероятность правильного обнаружения намного выше. Минимальный кластер из двух капсул с учетом шестимерного объекта согласуется с точностью до 10% случайно только один раз из миллиона испытаний. По мере увеличения числа измерений вероятность случайного совпадения в более крупном кластере с более высокими измерениями экспоненциально уменьшается.[1]
Капсулы в более высоких слоях принимают выходные данные от капсул на более низких уровнях и принимают те, выходы которых группируются. Кластер заставляет более высокую капсулу выводить высокую вероятность наблюдения, что сущность присутствует, а также выводить позу большого размера (20-50 +).[1]
Капсулы более высокого уровня игнорируют выбросы, концентрируясь на кластерах. Это похоже на Преобразование Хафа, то RHT и RANSAC из классики цифровая обработка изображений.[1]
Маршрутизация по договоренности
Выходы из одной капсулы (дочернего) направляются в капсулы на следующем уровне (родительском) в соответствии со способностью ребенка предсказывать выходные данные родителей. В течение нескольких итераций выходные данные каждого из родителей могут совпадать с предсказаниями одних детей и отличаться от прогнозов других, что означает, что этот родитель присутствует или отсутствует на сцене.[1]
Для каждого возможного родителя каждый дочерний элемент вычисляет вектор предсказания, умножая его выходные данные на весовую матрицу (обученную обратное распространение ).[3] Затем вывод родителя вычисляется как скалярное произведение прогноза с коэффициентом, представляющим вероятность того, что этот ребенок принадлежит этому родителю. Ребенок, чьи прогнозы относительно близки к результирующему результату, последовательно увеличивает коэффициент между этим родителем и дочерним элементом и уменьшает его для родителей, которым он соответствует менее хорошо. Это увеличивает вклад, который этот дочерний элемент вносит в этого родителя, тем самым увеличивая скалярное произведение предсказания капсулы с выходом родителя. После нескольких итераций коэффициенты прочно связывают родительский элемент с его наиболее вероятными дочерними элементами, указывая на то, что присутствие дочерних элементов подразумевает присутствие родителя в сцене.[1] Чем больше детей, чьи прогнозы близки к выходным данным родителя, тем быстрее растут коэффициенты, что способствует сходимости. Поза родителя (отраженная в его выводе) постепенно становится совместимой с позой его детей.[3]
Начальные логиты коэффициентов - это предшествующие логарифмические вероятности того, что ребенок принадлежит родителю. Приоры можно обучать различительно вместе с весами. Приоры зависят от расположения и типа дочерней и родительской капсул, но не от текущего ввода. На каждой итерации коэффициенты корректируются с помощью «маршрутизации». softmax так что они продолжают суммировать до 1 (чтобы выразить вероятность того, что данная капсула является родителем данного дочернего элемента). Softmax усиливает большие значения и уменьшает меньшие значения сверх их доли от общего количества. Точно так же вероятность того, что функция присутствует во входных данных, преувеличена нелинейной функцией «сжатия», которая уменьшает значения (меньшие значения резко и большие, так что они меньше единицы).[3]
Этот механизм динамической маршрутизации обеспечивает необходимый отказ от альтернатив («объяснение прочь»), который необходим для сегментации перекрывающихся объектов.
Эта изученная маршрутизация сигналов не имеет четкого биологического эквивалента. Некоторые операции можно найти в корковых слоях, но они, похоже, не связаны с этой техникой.
Математика / код
Вектор позы вращается и переводится матрицей в вектор который прогнозирует выход родительской капсулы.
Капсулы на следующий более высокий уровень подается сумма прогнозов от всех капсул в нижнем слое, каждая с коэффициентом связи
Процедура softmax
Коэффициенты связи от капсулы в слое ко всем капсулам в слое сумма к единице, и определяются как "маршрутизация softmax ". Начальный логиты являются предшествующими логарифм вероятностей для маршрутизации. Это априорная вероятность эта капсула в слое должен подключиться к капсуле в слое . Нормализация коэффициентов связи:[1]
Чтобы эта процедура была оптимальной, необходимо запомнить несколько значений и сбрасывать эти значения на каждой итерации. Это если вектор изменения, то необходимо обновить запомненные значения. Не показано, как это делать. Не показано и запоминание делителя.[1]
Процедура сквоша
Поскольку длина векторов представляет вероятности, они должны быть между нулем (0) и единицей (1), и для этого применяется функция сжатия:[1]
Вектор, сжатый до нуля, имеет исчезающий градиент.
Маршрутизация процедуры
Один из подходов к маршрутизации заключается в следующем[1]
В строке 8 функцию softmax можно заменить любым типом победитель получает все сеть. Биологически это чем-то напоминает люстры, но они также могут быть задействованы в расчете коэффициентов связи (строка 9) или в расчете соглашений (строка 11).
В строке 9 показаны весовая матрица для коэффициентов связи и скрытая матрица прогнозирования. Структура в слое I и II несколько похожа на структуру кора головного мозга если звездчатые клетки предполагается, что они участвуют в транспонировании входных векторов. Неясно, имеют ли оба типа звездчатых клеток одну и ту же функцию, так как слой I имеет возбуждающие шиповатые клетки, а слой II - ингибирующие аспиновые клетки. Последнее указывает на совсем другую сеть.
В строке 10 функция сжатия может быть заменена другими функциями и топологиями сети, которые сохраняют направление вектора.
Процедура проводит итераций, обычно 4–5, с индекс для исходного слоя капсулы или первичного слоя, куда идет маршрутизация из, а капсульный слой следующий более высокий слой.
Обучение персонала
Обучение - это под наблюдением.[3] Сеть обучается путем минимизации Евклидово расстояние между изображением и выходом CNN, которая восстанавливает вход из выхода терминальных капсул.[1]
Сеть избирательно обучается с использованием итеративной маршрутизации по согласованию.[1]
Векторы активности всех родителей, кроме правильного, замаскированы.[1]
Потеря маржи
Длина вектора создания экземпляра представляет собой вероятность того, что объект капсулы присутствует в сцене. Капсула верхнего уровня имеет длинный вектор тогда и только тогда, когда присутствует связанный с ней объект. Чтобы учесть несколько сущностей, отдельный потеря маржи вычисляется для каждой капсулы. Понижение веса потерь для отсутствующих объектов останавливает обучение от сокращения длины вектора активности для всех объектов. Общий убыток - это сумма убытков всех субъектов.[1] В примере Хинтона функция потерь:[1]
Этот тип функции потерь распространен в ИНС. Параметры и установлены так, чтобы длина не превышала или не сжималась, и . Понижение начальных весов для отсутствующих классов контролируется , с как разумный выбор.[1]
Реконструкция потери
Дополнительная потеря реконструкции побуждает сущности кодировать параметры экземпляра своих входов. Затем последний вектор активности используется для восстановления входного изображения через декодер CNN, состоящий из 3 полностью связанных слоев. Реконструкция минимизирует сумму квадратов разностей между выходными данными логистических единиц и интенсивностями пикселей. Эти потери при реконструкции уменьшаются на 0,0005, чтобы они не преобладали над потерями запаса во время обучения.[1]
Пример конфигурации
Первые сверточные слои выполняют извлечение признаков. Для теста изображения MNIST размером 28x28 пикселей начальное значение 256 9x9 пиксель сверточный ядра (используя шаг 1 и выпрямленный линейный блок (ReLU) активация, определяющая 20x20 рецептивные поля ) преобразуют входной пиксель в активацию одномерного объекта и вызывают нелинейность.[1]
Первичный (самый нижний) слой капсулы делит 256 ядер на 32 капсулы по 8 ядер 9x9 в каждой (с использованием шага 2, определяющего рецептивные поля 6x6). Капсульные активации эффективно инвертируют процесс рендеринга графики, переходя от пикселей к элементам. Каждая капсула использует единую весовую матрицу для всех рецептивных полей. Каждая первичная капсула видит все выходы нижнего уровня, поля которых перекрываются с центром поля в первичном слое. Каждый выход первичной капсулы (для конкретного поля) представляет собой 8-мерный вектор.[1][3]
Второй слой капсулы цифр имеет по одной 16-мерной капсуле для каждой цифры (0-9). Динамическая маршрутизация соединяет (только) первичный и цифровой уровни капсулы. Матрица весов [32x6x6] x 10 управляет отображением между слоями.[1]
Capsnets имеют иерархическую структуру, в которой каждая капсула нижнего уровня вносит значительный вклад только в одну капсулу более высокого уровня.[1]
Тем не менее, воспроизведение полученных знаний остается ценным. Для этого нижние уровни сети capsnet сверточный, включая скрытые слои капсулы. Таким образом, более высокие слои покрывают более крупные области, сохраняя при этом информацию о точном положении каждого объекта в пределах области. Для капсул низкого уровня информация о местоположении «кодируется» в соответствии с тем, какая капсула активна. Выше все больше и больше позиционной информации скоростной в векторе вывода капсулы. Этот переход от кодирования места к кодированию скорости в сочетании с тем фактом, что капсулы более высокого уровня представляют более сложные объекты с большим количеством степеней свободы, предполагает, что размерность капсулы увеличивается с уровнем.[1]
Человеческое зрение
Человеческое зрение исследует последовательность фокусных точек (под руководством саккады ), обрабатывая только часть сцены с максимальным разрешением. Capsnets черпают вдохновение из корковые миниколонки (также называемые кортикальными микроколонками) в кора головного мозга. Миниколонка - это структура, содержащая 80–120 нейронов диаметром около 28–40 мкм, охватывающая все слои коры головного мозга. Все нейроны в больших мини-столбцах имеют одинаковые рецептивное поле, и они выводят свои активации как потенциалы действия или шипы.[1] Нейроны внутри микроколонки получают общие входы, имеют общие выходы, связаны между собой и могут составлять фундаментальную вычислительную единицу кора головного мозга.[8]
Capsnets исследуют интуицию, которую зрительная система человека создает. дерево -подобная структура для каждой точки фокусировки и координирует эти деревья для распознавания объектов. Однако в случае Capsnets каждое дерево «вырезано» из фиксированной сети (путем настройки коэффициентов), а не собирается на лету.[1]
Альтернативы
Утверждается, что CapsNets имеет четыре основных концептуальных преимущества перед сверточные нейронные сети (CNN):
- Инвариантность точки обзора: использование матриц поз позволяет капсульным сетям распознавать объекты независимо от перспективы, с которой они просматриваются.
- Меньше параметров: поскольку капсулы группируют нейроны, связи между слоями требуют меньшего количества параметров.
- Лучшее обобщение для новых точек зрения: CNN, обученные понимать вращения, часто узнают, что объект можно рассматривать одинаково с нескольких разных вращений. Однако капсульные сети лучше подходят для новых точек зрения, потому что матрицы поз могут фиксировать эти характеристики как линейные преобразования.
- Защита от состязательных атак методом белого ящика: метод быстрого градиентного знака (FGSM) является типичным методом атаки на CNN. Он оценивает градиент каждого пикселя по отношению к потере сети и изменяет каждый пиксель максимум на эпсилон (член ошибки), чтобы максимизировать потери. Хотя этот метод может значительно снизить точность CNN (например, до уровня ниже 20%), капсульные сети поддерживают точность выше 70%.
Чисто сверточные сети не могут быть обобщены на неизученные точки зрения (кроме перевода). Для других аффинные преобразования, либо детекторы признаков должны повторяться в сетке, которая экспоненциально растет с количеством измерений преобразования, либо размер помеченного обучающего набора должен (экспоненциально) расширяться, чтобы охватить эти точки обзора. Эти экспоненциальные взрывы делают их непригодными для решения больших задач.[1]
Матрицы преобразования Capsnet изучают (независимые от точки зрения) пространственные отношения между частью и целым, что позволяет распознать последнее на основе таких отношений. Однако capsnets предполагают, что каждое место отображает не более одного экземпляра объекта капсулы. Это предположение позволяет капсуле использовать распределенное представление (вектор активности) объекта для представления этого объекта в этом месте.[1]
Capsnets используют нейронные активности, которые зависят от точки зрения. Им не нужно нормализовать объекты (как в пространственные трансформаторные сети ) и даже может распознавать многократно преобразованные объекты. Capsnets также может обрабатывать сегментированные объекты.[1]
Смотрите также
Примечания
- ^ По словам самого Хинтона, это «дикие домыслы».
Рекомендации
- ^ а б c d е ж грамм час я j k л м п о п q р s т ты v ш Икс у z аа ab ac объявление ае аф аг Сабур, Сара; Фросст, Николай; Хинтон, Джеффри Э. (26.10.2017). «Динамическая маршрутизация между капсулами». arXiv:1710.09829 [cs.CV ].
- ^ Хинтон, Джеффри Э .; Крижевский, Алексей; Ван, Сида Д. (14.06.2011). Преобразование автокодировщиков. Искусственные нейронные сети и машинное обучение - ICANN 2011. Конспект лекций по информатике. 6791. Шпрингер, Берлин, Гейдельберг. С. 44–51. CiteSeerX 10.1.1.220.5099. Дои:10.1007/978-3-642-21735-7_6. ISBN 9783642217340.
- ^ а б c d е ж грамм Шрихари, Саргур. «Капсульные сети» (PDF). Университет Буффало. Получено 2017-12-07.
- ^ а б Хинтон, Джеффри Э; Гахрамани, Зубин; Тех, Йи Уай (2000). Solla, S.A .; Leen, T. K .; Мюллер, К. (ред.). Достижения в системах обработки нейронной информации 12 (PDF). MIT Press. С. 463–469.
- ^ Мехер Вамси (2017-11-15), Джеффри Хинтон Теория капсул, получено 2017-12-06
- ^ «Понимание матричных капсул с EM-маршрутизацией (на основе капсульных сетей Хинтона)». jhui.github.io. Получено 2017-12-31.
- ^ Тан, Кендрик (10 ноября 2017 г.). "Объяснение капсульных сетей". kndrck.co. Получено 2017-12-26.
- ^ «Микроколонки в мозгу». www.physics.drexel.edu. Получено 2017-12-31.
внешняя ссылка
- Код Pytorch: Капсульная маршрутизация через вариационный байесовский код, Февраль 2020, получено 2020-10-23
- Реализация PyTorch документа NIPS 2017 «Динамическая маршрутизация между капсулами», Gram.AI, 2017-12-08, получено 2017-12-08
- Что не так со сверточными нейронными сетями на YouTube
- «Глубокое обучение». www.cedar.buffalo.edu. Получено 2017-12-07.
- Бурдакос, Ник (12 февраля 2018 г.). «Понимание капсульных сетей - заманчивой новой архитектуры ИИ». freeCodeCamp.org. Получено 2019-04-23.
- Дай, Цзифэн; Ци, Хаочжи; Xiong, Yuwen; Ли, Йи; Чжан, Годун; Ху, Хань; Вэй, Ичэн (2017-03-17). «Деформируемые сверточные сети». arXiv:1703.06211 [cs.CV ].
- Де Брабандере, Берт; Цзя, Сюй; Tuytelaars, Tinne; Ван Гул, Люк (31.05.2016). «Сети динамического фильтра». arXiv:1605.09673 [cs.LG ].Го, Сифэн (2017-12-08), CapsNet-Keras: реализация Keras CapsNet в документе NIPS2017 «Динамическая маршрутизация между капсулами». Теперь погрешность теста 0,34%., получено 2017-12-08
- Хинтон, Джеффри; Сабур, Сара; Фросст, Николас (ноябрь 2017 г.). «МАТРИЧНЫЕ КАПСУЛЫ С ЭМ-МАРШРУТИЗАТОРОМ».
- Хинтон и Google Brain - Капсульные сети на YouTube
- Ляо, Хуадун (2017-12-08), CapsNet-Tensorflow: реализация CapsNet (Capsules Net) Tensorflow в статье Хинтона «Динамическая маршрутизация между капсулами», получено 2017-12-08