Cвёрточные графовые сети
Cвёрточные графовые сети (graph convolutional networks) реализуют пересчёт исходных признаковых описаний соответствующих вершин , учитывая контекст, то есть признаковые описания соседних вершин. Пересчёт производится много раз, начиная с и получая для каждой вершины .
Рассмотрим свёртку, действующую на однослойном изображении (чёрно-белом), в ней пересчёт производился по формуле
где - смещение, а - веса для соседних пикселей.
На графах используется только информация о соседних вершинах, причём нет понятий верхнего, нижнего, правого и левого соседей. Граф может быть повёрнут, но это будет тот же самый граф. Поэтому на графе допускается суммировать только соседей, причём с одним и тем же весом:
где - множество индексов соседних вершин с вершиной (соединённых с ней ребром).
Поскольку в графах каждой вершине сопоставляется не одно число, а вектор значений (эмбеддинг вершины), то пересчёт старых эмбеддингов в новые производится по ф ормулам:
где
-
- функция, агрегирующая информацию с соседних вершин,
-
- функция, обновляющая информацию о текущей вершине, используя её информацию с предыдущей итерации и агрегированную информацию о её соседях.
должна быть определена для любого числа соседей и не должна зависеть от порядка их обхода. Применение Argegate, а затем Update операции представляет собой одну итерацию алгоритма обмена сообщениями (message passing neural network [1]), который использует несколько итераций, а начальные значения для вершин определяются их начальными эмбеддингами: Если не заданы, то их можно инициализировать one-hot закодированным значением числа соседей узла или геометрическими характеристиками вершин (число соседей 1-го, 2-го порядка и др.)
Алгоритм передачи сообщений представлен ниже:
ВХОД:
ненаправленный граф
начальные эмбеддинги вершин
функции и
АЛГОРИТМ:
для :
ВЫХОД:
- итоговые эмбеддинги вершин
Применение итераций алгоритма обмена сообщениями аналогично применению свёрточных слоёв при обработке изображений. Функции Argegate и Update имеют свои настраиваемые параметры, причем в общем случае они свои на каждой итерации алгоритма.
Каждая итерация алгоритма передачи сообщений - это слой глубокой графовой сети.
Обратим внимание, что каждая итерация алгоритма повышает область видимости (receptive field) результирующего эмбеддинга на один переход по графу аналогично тому, как его повышает последовательное применение свёрток. Это проиллюстрировано ниже для отдельной вершины.
Нулевая итерация:
Первая итерация:
Вторая итерация:
Третья итерация:
Если граф имеет недостаточную связность, вследствие чего сообщения между вершинами распространяются медленно, её можно искусственно повысить, добавив в граф дополнительную вершину, связанную со всеми остальными (super-node).
Агрегирующая функция
Функцию Aggregate можно определять по-разному, лишь бы она была определена для любого числа соседей и не зависела от их порядка. Самый простой вариант - через сумму эмбеддингов:
где - множество индексов вершин соединённых ребром с вершиной .
Также можно использовать усреднение:
Усреднение работает более устойчиво на вершинах, содержащих сильно различающееся число соседей, но, в отличие от суммы, не способно моделировать зависимость от числа соседей, поскольку при усреднении эта информация теряется.
Также можно усреднять, учитывая различия в числе соседних узлов у каждого соседа [2]:
Эмпирически при многократной агрегации на последних слоях алгоритма обмена сообщениями эмбеддинги получаются слишком сглаженными (over-smoothed) за счёт многократных усреднений. Предотвратить этот эффект можно, используя в качестве агрегации поэлементного максимума:
Наиболее общим видом усреднения, способным моделировать любую дифференцируемую зависимость, инвариантную к перенумерации вершин, является использование двух многослойных персептронов (multi-layer perceptron, MLP) со своими настраиваемыми векторами параметров и [3]:
В последней формуле вместо суммы можно использовать другие перечисленные выше виды агрегации.
Агрегация со вниманием
Можно использовать механизм внимания (attention mechanism) при агрегации узлов [4] аналогично тому, как он использовался в рекурре нтных сетях.
Для этого нужно произвести следующие действия:
-
Вычисляется внимание, с которым узел должен смотреть на каждого своего соседа , используя некоторую функцию :
-
Коэффициенты внимания пропускаются через SoftMax преобразование:
-
Агрегация информации с узлов осуществляется пропорционально найденному вниманию:
Например, внимание может вычисляться через билинейную форму с настраиваемой матрицей :
В более общем случае внимание может вычисляться через многослойный персептрон:
Аналогично тому, как это сделано в трансформере, можно применять несколько головок внимания со своими весами, конкатенировать полученные результаты и приводить результат к исходному -мерному пространству эмбеддингов, используя линейный слой.
Обновляющая функция
Типичным способом определения функции Update является использование одного линейного слоя: