Янник Килчер разбирает одну из самых резонансных работ в области глубокого обучения — «Dynamic Routing Between Capsules» от команды Google Brain. Несмотря на сложность и некоторую «туманность» изложения, статья Сары Сабур, Николаса Фроста и Джеффри Хинтона предложила радикально новый подход к архитектуре нейросетей, заменяющий традиционные скалярные активации векторными структурами.
💊 Что такое капсулы: переход от скаляров к векторам 0:00
Традиционные нейронные сети оперируют скалярными значениями активации нейронов. В отличие от них, капсульная сеть (CapsNet) состоит из «капсул» — групп нейронов, активность которых представлена в виде вектора . По определению авторов, этот вектор представляет параметры экземпляра (instantiation parameters) конкретного типа сущности: объекта или его части.
Янник Килчер поясняет работу капсул на примере визуального распознавания:
- Длина вектора (норма) представляет вероятность того, что объект присутствует в данной области изображения .
- Направление вектора кодирует конкретные свойства (атрибуты) объекта, такие как цвет, размер, угол наклона или положение .
Ведущий приводит наглядную аналогию с капсулой «Крыша». Если сеть видит крышу, она выдает длинный вектор. Если этот вектор направлен в одну сторону, это может означать пологую крышу красного цвета; если в другую — крутую крышу зеленого цвета . При этом, если вероятность присутствия объекта мала, вектор будет коротким, даже если он сохраняет правильное направление для данных характеристик .
🏗️ Иерархия сущностей: от частей к целому 6:09
Капсулы организованы в слои, где высшие слои отвечают за более сложные, композитные сущности. Нижний слой может обнаруживать простые части (двери, стены, окна), а верхний — объединять их в целые объекты (дом, национальный парк) .
Процесс передачи информации выглядит следующим образом:
- Капсула нижнего слоя (например, «Дверь») передает данные всем капсулам верхнего слоя .
- Каждая капсула верхнего слоя интегрирует входящие векторы.
- На последнем слое количество капсул соответствует количеству классов (например, в задаче MNIST — десять капсул для цифр от 0 до 9) .
По мнению Килчера, это имитирует человеческую зрительную систему, где мы воспринимаем мир как иерархию объектов и их составляющих .
🔄 Динамическая маршрутизация: «Голосование» за правильный объект 15:06
Главная инновация статьи — механизм динамической маршрутизации (Dynamic Routing). В классических сетях данные передаются на следующий слой через фиксированные веса. В CapsNet капсулы нижнего слоя сами «решают», в какую капсулу верхнего слоя отправить свой выход .
Этот процесс Килчер называет «маршрутизацией по согласию» (routing by agreement) . Алгоритм работает итеративно:
- Для каждой связи между капсулами нижнего и верхнего слоев существует обучаемая матрица весов $W_{ij}$ .
- В процессе прямого прохода (forward pass) данные проходят через несколько внутренних итераций .
- Если выход капсулы нижнего слоя после трансформации совпадает по направлению (высокое скалярное произведение) с выходом капсулы верхнего слоя, связь между ними усиливается .
- В результате капсула «Дверь» будет направлять больше данных в капсулу «Дом» и меньше — в капсулу «Лодка», если её параметры лучше согласуются с контекстом дома .
📐 Архитектура CapsNet и функция потерь 11:41
Для демонстрации концепции авторы использовали архитектуру на наборе данных MNIST:
- Слой свертки (Convolutional layer): 256 каналов, фильтры 9x9, извлекает базовые признаки .
- Primary Capsules: Слой «первичных» капсул, где каждая капсула выдает 8-мерный вектор .
- Digit Capsules: Итоговые 10 капсул (по одной на цифру) с 16-мерными векторами .
Янник Килчер выделяет два критических компонента обучения:
- Margin Loss: Специальная функция потерь, которая заставляет длину вектора правильной капсулы быть выше 0.9, а неправильных — ниже 0.1 .
- Reconstruction Loss: Сеть пытается восстановить исходное изображение цифры из 16-мерного вектора итоговой капсулы с помощью декодера .
Килчер полагает, что использование реконструкции — это способ заставить капсулы действительно кодировать физические свойства объекта (толщину линий, поворот), а не просто классифицировать их .
📊 Эксперименты: MNIST, MultiMNIST и провал на CIFAR-10 33:23
В экспериментах CapsNet показала выдающиеся результаты в разделении перекрывающихся объектов. В тесте MultiMNIST две разные цифры накладывались друг на друга с сильным перекрытием .
Результаты экспериментов:
- Сегментация: Капсульная сеть успешно определяла, какие пиксели принадлежат какой цифре, даже если они перекрывались .
- Интерпретируемость: Изменяя отдельные измерения в 16-мерном векторе, авторы показали, что они отвечают за конкретные параметры: наклон, ширину штриха, размер петли в цифре «8» .
- Устойчивость: Сеть лучше справляется с аффинными преобразованиями (сдвигами, поворотами), чем обычные CNN .
Однако на более сложном наборе данных CIFAR-10 результаты оказались разочаровывающими . По мнению Килчера, это связано с тем, что капсульные сети «склонны объяснять всё» . На зашумленных цветных изображениях с богатым фоном сеть пытается выделить капсулу под каждый элемент неба или травы, что перегружает систему и снижает точность классификации. Килчер считает, что для решения этой проблемы нужны более совершенные функции потерь, которые позволят сети игнорировать нерелевантные части изображения .