Капсульные нейронные сети

в 7:23, , рубрики: big data, алгоритм динамической маршрутизации, Алгоритмы, искусственный интеллект, Капсульные сети, математика, машинное обучение, нейронные сети

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

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

Капсульные нейронные сети - 1
Для свёрточной нейронной сети 2 изображения схожи [2]

Капсульные нейронные сети - 2
Для обучения распознавания объекта с различных ракурсов CNN понадобятся тысячи примеров.

Капсульные нейронные сети - 3
Капсульные сети снижают ошибку распознавания объекта в другом ракурсе на 45%.

Назначение капсул

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

Представим, что капсула обнаруживает лицо на изображении, и выводит 3D-вектор длиной 0,99. Затем, перемещаем лицо по изображению. Вектор будет вращаться в своем пространстве, представляя изменяющееся состояние, но его длина останется фиксированной, потому что капсула уверена, что обнаружила лицо.

Капсульные нейронные сети - 4

Различия между капсулами и нейронами.[2]

Искусственный нейрон можно описать тремя шагами:

1. скалярное взвешивание входных скаляров
2. сумма взвешенных входных скаляров
3. нелинейное скалярное преобразование.

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

1. матричное умножение входных векторов
2. скалярное взвешивание входных векторов
3. сумма взвешенных входных векторов
4. векторная нелинейность.

Еще одним нововведением, которое представлено в CapsNet, является новая нелинейная функция активации, которая принимает вектор, а затем «выдает» его длину не более 1, но не меняет направление.

Капсульные нейронные сети - 5

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

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

Динамическая маршрутизация между капсулами

Капсульные нейронные сети - 6

Алгоритм динамической маршрутизации[1].

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

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

Строка 3 гласит, что шаги в 4-7 будут повторяться r раз.
Шаг в строке 4 вычисляет значение вектора c_i, который является всеми весами маршрутизации для капсулы i более низкого уровня.

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

Затем в строке 6 векторы последнего шага проходят через нелинейное преобразование, что гарантирует сохранение направления вектора, но его длина не должна превышать 1. Этот шаг создает выходной вектор v_j для всех более высоких уровней капсулы.[2]
Основная идея заключается в том, что сходство между входом и выходом измеряется как скалярное произведение между входом и выходом капсулы, а затем изменяется коэффициент маршрутизации. Лучшей практикой является использование трех итераций маршрутизации.

Заключение

Капсульные нейронные сети — перспективная архитектура нейронных сетей, которая улучшает распознавание изображений при изменяющихся ракурсах и иерархической структурой. Обучение капсульных нейронных сетей осуществляется с помощью динамической маршрутизации между капсулами. Капсульные сети снижают ошибку распознавания объекта в другом ракурсе на 45% в сравнении c CNN.

Сылки

[1] MATRIX CAPSULES WITH EM ROUTING. Geoffrey Hinton, Sara Sabour, Nicholas Frosst. 2017.
[2] Understanding Hinton’s Capsule Networks. Max Pechyonkin

Автор: Кирилл Косолапов

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js