Приятное введение в управляемые нейронные сети (часть 2)

Захватывающее знакомство с управляемыми нейронными сетями (часть 2)

Как построить управляемый фильтр и управляемую CNN

1) Введение

Эта статья – вторая и последняя часть руководства “Подробное введение в управляемые нейронные сети” (SNN). Она следует за первой статьей (здесь). Первая статья предлагает доступный обзор управляемых нейронных сетей (S-CNN), объясняя их назначение и применение. Она также вдается в основную формализацию и ключевые концепции, включая определение эквивариантности и управляемых фильтров. Хотя в следующем абзаце будет представлен краткий обзор формализации, мы рекомендуем вам прочитать первую статью для полного понимания.

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

Краткий обзор номенклатуры:

Рис. 3A: Представление нейронной сети в соответствии с формализацией.

  • S: пространство входных данных. Пространство, в котором существуют объекты (обычно ℝ³ или ℝ²).
  • f: отображение/функция, f ₙ: S → ℝ ͨ ʿⁿ ʾ ( Fₙ), которая описывает n-ую карту признаков нейронной сети. Обратите внимание, что f ⁰ – это функция, описывающая вход (входной слой), в то время как fₙ, с n>0, описывают n-ю карту признаков.
  • F= ℝ ͨ ʿⁿ ʾ, это кодомен функции f ₙ.
  • Φ: F→ F ₙ₊₁, n-й ͑фильтр нейронной сети, характеризуемый ядерной функцией k: S → ℝ ͨ ʿⁿ ʾ ˟ ͨ ʿⁿ⁺ ¹ ʾ. Определение свертки можно найти во втором уравнении выше.
  • G: группа преобразований (одиночный элемент g).

Исходя из всех этих понятий, мы смогли определить свертку следующим образом:

2) Проектирование управляемого фильтра CNN

Рис. 3A: Визуальный пример эквивариантного фильтра CNN. При заданном преобразовании g, действующем на S, и последующем вращении входного сигнала f, заданном Π₀(g), f1 поворачивается в результате Π1(g).

2.1 Формализация проблемы

Можно сказать, что сверточная нейронная сеть (CNN) из n слоев является эквивариантной относительно группы преобразований G, если для каждого g из G,0: когда входная функция f ₀ преобразуется в Π₀(g), выходная функция n-го слоя преобразуется в преобразование Πn(g).

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

Eq.0: Определение эквивариантности

Теперь можно заявить основной результат теории управляемых нейронных сетей.

Пусть k – это ядро, соединяющее слой f ₙс f таким образом, что fₙ₊₁ = k* f ₙ.

Свёртка k* f ₙэквивариантна относительно преобразования g, если и только если:

или проще говоря

Eq.1: Необходимое и достаточное условие эквивариантности ядра относительно преобразования g.

В более широкой литературе [2,3] ядра, которые соответствуют этому ограничению, называют g-эквивариантными ядрами. Поскольку ограничение на ядро действует линейным образом, решения, которые оно порождает, составляют линейное подпространство в векторном пространстве неконтролируемых ядер, обычно используемых в стандартных сверточных нейронных сетях. При ближайшем рассмотрении это определение тесно соотносится с концепцией управляемых фильтров, представленной в пункте 2 последней статьи здесь. В практическом плане для выполнения этой работы нам нужна база для этого подпространства ядра, обозначенная как {k_1, …k_D}, которая соответствует Eq.1. Размер этой базы, обозначаемый как D, может быть рассчитан как D = cʿⁿ ʾ ˟ cʿⁿ⁺¹ʾ. Ядро k(x) затем получается путем линейной комбинации этой базы, при этом сеть обучается в процессе вычисления весов:

Eq.2: Линейность Eq(1) приводит к следующей линейной комбинации.

В процессе обучения наш подход заключается в установке размеров входного и выходного слоев на определенные значения, а именно cʿⁿ ʾ и cʿⁿ⁺¹. Затем, исходя из преобразований, к которым мы стремимся обеспечить эквивариантность, мы решаем уравнение и определяем базис ядра. В последующем процессе обучения мы учимся весам, связанным с этими ядрами.

2.2 Решение уравнения

Решение, представленное в ограничении Eq.1, не является тривиальным. Оно зависит от трех основных элементов:

  • пространство S, где S = ℝ³ или S = ℝ².
  • группа G.
  • входная и выходная размерности слоев: cʿⁿ ʾ и cʿⁿ⁺ ¹ ʾ.

Более конкретно, выбор группы G определяет тип сети. В частности, нас интересуют следующие типы сетей:

  • SO-сети: эквивариантные к вращениям в Группе особых ортогональных преобразований (SO).
  • SE-сети: эквивариантные к вращениям и переводам в Группе специальных евклидовых преобразований (SE).
  • E-сети: эквивариантные к вращениям, переводам и отражениям в Евклидовой группе (E).

Если мы работаем в 2D пространстве ввода, мы имеем SO(2), SE(2) и E(2) сети [4]. В случае 3D пространства ввода мы работаем с SO(3), SE(3) и E(3) сетями[1], и на самом деле это можно расширить до любого пространства E(n) [6].

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

Тем не менее, можно заметить, что в случае сетей SE(n) общее решение уравнения (1) является гармонической базисной функцией в S= ℝⁿ. На изображении выше (рис. 3B) представлены гармонические функции в ℝ² слева и гармонические функции в ℝ³.

Рис. 3B: Базис гармонических функций в 2D (слева) и в 3D (справа). Этот базис является базисом направляемых эквивариантных фильтров в сетях SE(2) и SE(3).

Рассмотрим более конкретный сценарий проектирования фильтра. На изображении рис. 3C ниже мы видим, например, как создается поворотно-эквивариантное ядро SO2 для входного слоя f₀: ℝ²->ℝ³ и выходного слоя f₁:ℝ²->ℝ². Ядро представляет собой функцию k: ℝ²->ℝ³ˣ². Каждый отдельный элемент матрицы получается из функции, полученной из линейной взвешенной комбинации базисов D, выбранных в позиции (x₁, x₂). На примере выше показана позиция x=(1,2).

Далее мы покажем некоторые простые решения этого уравнения с учетом S=ℝ² и G в качестве группы поворотных преобразований, соответствующих сетям SO2.

Рис. 3C: Иллюстрация построения направляемого ядра 3x2 с использованием базиса из 6 гармонических функций.

2.3 Практические решения

– Case1A: Сети SO2, k: S=ℝ² → ℝ

Давайте представим практический случай, когда на входе у нас есть изображение в оттенках серого, и мы хотим создать направляемый фильтр для его обработки. Во-первых, нам нужно определить размер выходного слоя (количество признаков). Для простоты возьмем размерность 1. В этом случае у нас есть входная функция f: ℝ²-> ℝ и аналогичная выходная функция f₁: ℝ²-> ℝ. Следовательно, функция ядра это k: ℝ² -> ℝ. Мы хотим, чтобы наш слой сверточной нейронной сети был эквивариантен относительно группы преобразований G, представляющей повороты на угол тета в пределах [0,2π) (сеть SO). Для этой задачи базис функции ядра требует использования уравнения (1). Учитывая, что и f, и f¹ являются скалярными функциями, Pi_out = 1 и Pi_in = 1. Это приводит к тому, что k[g_θ(x)] = k[x], как записано в уравнении (3). Если x = (x₁, x₂) находится в ℝ², g(theta) совпадает с 2D матрицей Эйлера.

Уравнение (3): Переписывание уравнения (1) в случае k: S=ℝ² → ℝ

Очевидно, что это решается каждой изотропной функцией (x₁, x₂). Конкретно, это решается с помощью одномерного базиса изотропных (инвариантных к повороту) ядер. (т.е. k(x₁, x₂) = x₁² + x₂²)

Кейс 2: фильтр SO2, k: ℝ² → ℝ²

Давайте рассмотрим более сложный случай. Входная функция – f: ℝ² → ℝ², и выходной слой – функция f₁: ℝ² → ℝ². Ядро может быть записано как функция k: S = ℝ² → ℝ² ˣ ²; другими словами, для каждой позиции x в ℝ² у нас есть двумерная матрица 2×2 (см. уравнение ниже). Мы хотим создать фильтр S02, поэтому группа преобразований, которую нужно рассмотреть, снова G={g(θ)}={r(θ)}, где θ ∈ [0,2Π[. Так как ℝ² – область значений f и f₁, Π_out = Π_θ и Π_in = Π_θ, где Π_θ – матрица Эйлера в ℝ². Учитывая все эти условия, мы можем переписать Уравнение 1 выше следующим образом:

Ур. (4): Функция ядра при учете k: S= ℝ² → ℝ² ˣ ²
Ур. (5): Переписывание ур. (1) для ядра SO2 k: S=ℝ² → ℝ².

Для более полного понимания решения этого уравнения и дополнительных идей, обратитесь к разделу приложения в статье [4].

2.4 Нелинейности сети

До сих пор мы рассматривали только однородность по отношению к операции свертки и не учитывали нелинейную часть, задаваемую функцией σ(f(x)): ℝ=ℝ ͨ →ℝ ͨ’. В разделе 4.3 статьи [1] и разделе 2.6 статьи [4] это широко рассмотрено. Для функции f(x) условие однородности может быть сформулировано следующим образом:

Ур. (5): Условие однородности для функции активации.

Как также упоминается в связанной лекции на YouTube, можно создать функцию активации, которая удовлетворяет этому условию, используя так называемую активационную функцию на основе нормы, например, σ(u) = σ(||u||). Мотивацией для этого является то, что скалярная норма является прозрачно инвариантной, и применение к ней любой нелинейной функции приведет к инвариантному выводу. Чтобы это доказать, когда мы применяем эту формулу к упомянутому выше условию уравнения (5), мы получаем следующее уравнение:

Ур. (6): Переписывание ур. (5) в виде функций на основе нормы.

Если ‘g’ принадлежит группе преобразований E, норма остается постоянной. Следовательно, уравнение является универсально верным, когда Π’(g) равно Identity. Это означает, что специально разработанная функция активации последовательно инвариантна к повороту. Примером такой функции являются Norm-ReLU, определенные как η(|f(x)|) = ReLU(|f(x)| − b)

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

3) Разработка манипулируемой сверточной нейронной сети

Рис. 3D: Архитектура манипулируемой сверточной нейронной сети, описанной в [3]. Обратите внимание на использование манипулируемых фильтров в слое 2 в сочетании с G-сверткой.

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

На картинке выше мы видим пример, взятый из статьи [3]. Нас особенно интересует слой 2, где используются управляемые фильтры. Здесь каждое горизонтальное представление является управляемым фильтром – составным из взвешенных гармонических функций, которые давят отдельный выход, обозначенный как одиночный fⁿ. Изучая структуру, становится ясно, что хотя гармонические функции остаются одинаковыми для всех фильтров, их ориентации различны для каждого фильтра. Это символично для методики G-свёртки, сложного метода, способствующего созданию сетей, инвариантных к преобразованиям (больше информации о этой методике можно найти здесь). Сеть использует функцию максимум-пула, чтобы направить только самые надежные отклики от множества управляемых фильтров в следующий слой. Этот принцип селективной передачи обеспечивает сохранение и усиление наиболее сильных характеристик по мере их продвижения через сеть. Этот подход отражает методики, применяемые в других работах, например, в ссылке [5], которая успешно создала инвариантную к масштабированию управляемую сеть. Архитектура такой управляемой свёрточной нейронной сети получает преимущества от этой методики, поскольку естественным образом включает инвариантность к масштабированию и повороту, тем самым обогащая способность сети распознавать образцы и характеристики более абстрактным, но устойчивым способом. В любом случае, изображение показывает, что конечный результат – сеть, инвариантная к поворотам.

Рисунок 3E: Визуальный пример применения двумерного управляемого фильтра к повернутому изображению (оригинал можно найти здесь)

Отличное пошаговое объяснение о проектировании управляемой нейронной сети можно найти по этой ссылке, включенной в репозиторий Github “e2cn” (ссылка). В этом репозитории можно найти код PyTorch для проектирования управляемой сети SE2. Полезный код для разработки сетей SE3 можно найти по этой ссылке, а краткий курс по 3D-эквивариантным сетям опубликован здесь.

ЛИТЕРАТУРА:

[1] “3D Сети с управляемым поворотом: обучение поворотно-эквивариантных признаков в объемных данных”, Вейлиер и др., (ссылка);

[2] “Управляемые свёрточные нейронные сети”, Коэн и др. (ссылка);

[3] “Обучение управляемым фильтрам для поворотно-эквивариантных свёрточных нейронных сетей”, Вейлиер и др., (ссылка)

[4] “Общие E(2)-эквивариантные управляемые свёрточные нейронные сети” Вейлиер и др., (ссылка)

[5] “Фильтры с управляемым масштабом для сверточной нейронной сети, инвариантной к локальному масштабированию”, Гош и др. (ссылка)

[6] “Программа для создания E(n)-эквивариантных управляемых свёрточных нейронных сетей.” Чеза и др. (ссылка)

✍️ 📄. Об авторах:

1️⃣ Маттео Чиприан, Инженер/исследователь в области машинного обучения

  • Магистр телекоммуникационной инженерии в Университете Падуи. В настоящее время работает в области слияния датчиков, обработки сигналов и применения искусственного интеллекта. Опыт работы над проектами, связанными с применением искусственного интеллекта в области электронного здравоохранения и носимых технологий (академическое и корпоративное направления). Специализируется на разработке алгоритмов обнаружения аномалий, а также развитии техник глубокого обучения и слияния сенсоров. Увлечен философией. Создает контент на YouTube. 🔗 Ссылки: 💼 Linkedin 📹 YouTube 👨‍💻Instagram

2️⃣ Роберт Скунмейкер, исследователь обработки сигналов и машинного обучения

  • Доктор философии по вычислительной физике конденсированных сред из Даремского университета. Специализируется на применении методов машинного обучения и нелинейной статистики, в настоящее время исследует применение методов вычислений на GPU в синтетической апертурной радарной и подобных системах. Опыт включает разработку симметричных методов машинного обучения для использования в сенсорном слиянии и методах позиционирования.🔗 Ссылки: 💼 Linkedin