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

Однако большинство современных глубоких нейронных сетей работают только с евклидовой геометрией, и распространение этой концепции на другие многообразия, такие как сферы и шары, является открытой исследовательской проблемой. Представление данных в сферах / шарах может быть вполне естественным и эффективным в таких случаях, как анализ 3D-данных. Однако выполнить эту задачу непросто. Основная трудность адаптации свертки к таким многообразиям заключается в том, что, в отличие от плоских данных, промежутки между соседними точками не являются однородными. Это показано на рисунке 1.

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

Так что ясно, что такими наивными методами эту задачу не решить. В последнее время несколько статей пытались решить эту проблему и достигли впечатляющих результатов (Коэн и др. Https://arxiv.org/abs/1801.10130, Эстевес и др. Https://arxiv.org/abs/1711.06721 ). Сферическая свертка - один из подходов к решению этой проблемы.

Сферическая свертка выполняется по поверхности единичной сферы. Единичная сфера - это сфера с единичным радиусом с центром в начале координат.

Прежде всего, что означает представление данных на поверхности единичной сферы?

Допустим, у вас есть набор точек (x, y, z). Вы представляете каждую из этих точек в другом формате с помощью (r, theta, phi). Эти параметры показаны на рисунке 2.

Однако представление данных на поверхности единичной сферы немного отличается. Функцию на поверхности единичной сферы можно параметризовать, используя только (theta, phi), потому что r всегда 1. Допустим, у нас есть наша точка (x, y, z). мы вычисляем theta и phi с использованием этих координат и делаем r значением функции в theta и фи. Более формально, скажем, наша поверхностная функция на единичной сфере - это f. Затем мы моделируем функцию поверхности для наших данных как f (theta, phi) = r. Это позволяет нам моделировать наши точки как тепловую карту на поверхности сферы. Это графически показано на рисунке 3.

Однако здесь есть небольшой недостаток. Я бы посоветовал вам прекратить читать и попытаться понять это самостоятельно, прежде чем идти дальше.

………………………………………..

Ты поймал это?

Что, если у нас есть несколько точек, лежащих в одном направлении (тета, фи)? В этой настройке мы можем смоделировать только одну точку. Это имеет некоторый сглаживающий эффект на общую форму 3D-функции. Однако эта проблема может быть решена, если мы смоделируем функцию внутри единичной сферы (объемная свертка), что я объясню в одном из будущих постов.

Хорошо, теперь, когда у нас есть базовое представление о представлении данных, давайте двигаться вперед!

Прежде всего, давайте разберемся, что на самом деле означает сферическая свертка.

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

Таким же образом, как ядро ​​улавливает узоры на плоскости в двухмерном случае, сферическое ядро ​​может улавливать узоры, распределенные на поверхности сферы. Поскольку ядро ​​разделяет веса по всей плоскости, у нас есть трансляционная эквивариантность в двумерной свертке. Точно так же, поскольку ядро ​​движется (вращается) по поверхности единичной сферы, у нас есть вращательная эквивариантность в сферической свертке. Проще говоря, мы получим эквивалентные ответы, даже если входной 3D-объект будет повернут. Это ключевое преимущество сферической свертки.

Верно. Вот общая картина сферической свертки. Если вы ненавидите математику и просто хотите получить общий обзор сферической свертки, вы можете остановиться здесь :). Однако, если вы хотите увидеть, как это делается на самом деле, читайте дальше!

Представление о сферической свертке легко получить из рисунков 4 и 5. Но это легче сказать, чем сделать. Выполнение сферической свертки на самом деле требует изрядной доли математики.

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

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

Сферические гармоники обладают двумя особыми свойствами: полнотой и ортогональностью. Посмотрим, что это значит.

Полнота: это означает, что мы можем аппроксимировать любую функцию на поверхности сферы с помощью сферических гармоник (уравнение 2).

Ортогональность: это означает, что сферические гармоники соответствуют соотношению в уравнении 1.

Пусть f (theta, phi) будет нашей поверхностной функцией. Тогда его можно переписать с использованием сферических гармонических моментов как,

где Y_ {l, m} - функция сферических гармоник (l, m) ^ -го порядка (https://en.wikipedia.org/wiki/Spherical_harmonics) и \ hat (f) можно получить, используя,

Обозначим наше ядро ​​как g (theta, phi). Затем, чтобы выполнить сферическую свертку, как мы графически объяснили выше, 1) мы применяем трехмерное вращение к g и 2) получаем внутренний продукт между nf и g. Внутренний продукт - это просто интеграция по поверхности сферы продукта двух функций. Посмотрим, как это можно сделать.

Любое трехмерное вращение можно разложить с использованием углов Эйлера как,

Применение трехмерного вращения к g и взятие внутреннего продукта дает нам,

Используя свойство полноты (уравнение 2), запишем уравнение 5 как

Преобразуя уравнение 6, получаем,

Однако сферические гармоники обладают следующим интересным свойством при применении трехмерного преобразования.

Где D - матрица Вигнера-D (https://en.wikipedia.org/wiki/Wigner_D-matrix). Замена уравнения 7 этим результатом дает нам,

Дальнейшая перестановка уравнения дает нам,

Но мы знаем, что сферические гармоники обладают свойством ортогональности (уравнение 1). Это упрощает уравнение 10 до (здесь я опущу константы),

Это очень интересный результат. Если мы рассмотрим разложение Фурье трехмерного вращения h, оно обладает следующим свойством.

Если мы сравним уравнение 12 с уравнением 11, мы получим важный результат. Это означает, что мы можем получить разложение Фурье сферической свертки, просто взяв внешнее произведение f (l, m) и g (l, m ') в каждом l. Допустим, мы практически принимаем максимальное значение l равным 3. Тогда весь этот процесс может быть реализован в глубокой сети с помощью процедуры, показанной на рисунке.

Сначала мы вычисляем \ hat (f) и \ hat (g) (которые являются векторами) для каждого канала и получаем внешнее произведение для каждого l, что дает нам компоненты преобразования Фурье свертки. В верхних слоях свертка достигается путем простого взятия внешнего произведения между матрицами (в отличие от векторов в первом слое), полученными на этом слое. Я не буду приводить здесь этот результат, поскольку он очень похож на описанный мною процесс.

Верно! Вот и все. Если у вас есть предложения или исправления, буду рад их услышать :). Большое спасибо за просмотр сообщения!