Capsules — одна из недавних работ Джеффа Хинтона, поэтому она так раскручена (думаю, независимая реализация вышла на следующий день после публикации статьи на arXiv). Цель капсул — добавить эквивариантность (поворот, масштаб, цвет и т. д.) в модели глубокого обучения. Прежде чем мы начнем наше обсуждение, необходимо провести различие между моделью, которая инвариантна, и моделью, которая эквивариантна относительно преобразований входных данных. Математически модель f инвариантна к функции g, если:

Здесь I — входные данные, возможно, изображение. Выход модели f не меняется, если I сначала возмущается g.

Модель f эквивалентна функции g, если:

Здесь g´ — еще одна функция. Проще говоря, возмущение I на g до того, как модель f приведет к предсказуемому изменению выходных данных g´ из f.

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

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

Подумайте о переводе. Для каждого местоположения (x, y) в исходном изображении новый пиксель в этом местоположении I´(x, y) при перемещении (u, v ) равно I(x + u, y + v). Набор всех трансляционных вариантов изображения I может быть описан всеми значениями пикселей I плюс два параметра u и в. Существует асимметрия в том, насколько легко описать все варианты перевода I и насколько сложно обучить модель f для правильной классификации вариантов перевода . Я. Это связано с тем, что модель не захватила линейное многообразие изображения. Конечно, CNN были изобретены именно для решения этой проблемы: CNN фиксируют линейное входное многообразие трансляции. Тем не менее, мы можем думать о некоторых других преобразованиях, таких как вращение, которое, возможно, можно описать так же просто, как перемещение (с использованием нескольких параметров), но которые CNN трудно правильно классифицировать. Capsule пытается расширить идею «захвата линейного многообразия» за пределы перевода.

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

Теперь подробности о модели:

  • Существует предполагаемая иерархия объектов, представленных капсулами. На более низких уровнях капсулы представляют объекты низкого уровня, такие как нос, глаза, рот. Капсула более высокого уровня будет представлять лицо.
  • Если включается капсула более высокого уровня, показания от капсул более низкого уровня должны совпадать. Например. Горизонтальный рот и диагональный нос не делают лица. Если данные не согласуются, более высокая капсула была отброшена в качестве гипотезы (для того, что существует во входном изображении). В этом суть алгоритма.

Прямой проход описан ниже для нейрона i слоя L и нейрона j слоя L+1. Существует внешний цикл, который обучает параметры модели, и внутренний цикл, который вычисляет активации следующего слоя с учетом активаций предыдущего уровня. Целью внешнего цикла является предсказание объекта более высокого уровня на основе объектов более низкого уровня на изображении. Цель внутреннего цикла — согласовать все прогнозы и проверить их согласованность.

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

  • u_i: вывод капсулы предыдущего слоя i
  • W_ij: веса капсульной сети, полученные методом обратного распространения.
  • û_j|i: предсказанный вектор для капсулы j с учетом выхода капсулы i
  • v_j: вывод капсулы j

Как мы вскоре увидим, существует разница между предсказанным вектором для капсулы j û_j|i и фактическим вектором v_j. Это связано с тем, что внутренний цикл должен выполняться для проверки согласованности всех прогнозов. Во внешнем цикле параметры модели W_ij изучаются так же, как и в обычной NN. Активации объектов более высокого уровня прогнозируются на основе активаций объектов более низкого уровня (например, W_ij сообщает вам о существовании рта, наклоненного на 45 градусов, при наличии двух параллельных линий, наклоненных на 45 градусов). û_j|i — прогноз активации капсулы j при наличии капсулы i. Он вычисляется как,

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

Сначала я дам обзор математики, прежде чем дать интуитивное объяснение внутренней петли с точки зрения демократического процесса голосования. Понятие внутреннего цикла:

  • c_ij: коэффициент связи
  • b_ij: ненормализованный коэффициент связи.
  • s_j: взвешенная реализация объекта j

Алгоритм внутреннего цикла:

Входные данные — û_j|i или прогнозы/предложения для следующего слоя на основе предыдущего слоя

Вывод – v_j или активация для следующего слоя

Повторять до сходимости:

Теперь давайте попробуем объяснить математику, используя аналогию. Проще говоря, каждая капсула на нижнем уровне получает ограниченное количество голосов в демократическом процессе, чтобы решить, какие объекты существуют на следующем уровне. c_ij – это процент голосов, которые капсула i посвятила предложению капсулы j. Естественно, это необходимо нормализовать, учитывая все остальные капсулы k, в которые i может внести вклад в следующем слое (уравнение 1). В уравнении 2 капсула j получает бюллетень голосов от каждой капсулы в предыдущем слое с указанием вероятности существования j, а также векторного значения j. По всем предложениям берется средневзвешенное значение. Мы можем думать об этом как о предложении по активации «сообщества». В уравнении 3 активация сообщества проходит через регуляризованную сигмовидную функцию. x²/1+x² имеет общее поведение сигмовидной функции. Когда s_j большое, выходные данные v_j имеют длину приблизительно 1. Когда s_j мало, v_j равно меньше 1. В уравнении 4 мы разделяем предложения сообщества на предложения из каждой капсулы предыдущего уровня. Делая это, мы проверяем, насколько хорошо предложение каждой капсулы более низкого уровня согласуется с предложением сообщества. Если есть хорошее согласие между предложением сообщества по капсуле j и индивидуальным предложением по капсуле i, то i выделяет больше своего права голоса на капсула j в следующей итерации внутреннего цикла. При повторении этого процесса капсулы, предлагающие согласованные векторы для следующего слоя, соберутся вместе и проголосуют за те же капсулы в следующем слое.

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

количество весов, где v — размеры капсулы, c — количество каналов, а k — размер фильтра. Обычно это порядка 10⁶.

Авторы продемонстрировали умеренные улучшения по сравнению с CNN при классификации перекрывающихся цифр MNIST и повернутых 3D-объектов. Дополнительные результаты см. в статье. Еще одна крутая вещь, которую они попробовали, — восстановить входное изображение по параметрам капсулы последнего слоя. Тем самым они показывают, что капсульная сеть изучает параметры создания экземпляра объекта.

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