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

Вариационные автоэнкодеры (VAE) воплотили успех вариационных байесовских методов в глубоком обучении и вдохновили широкий спектр текущих исследований. Автокодер с вариационным графом (VGAE) применяет идею VAE к структурированным данным, что значительно улучшает прогнозирующую способность для ряда наборов сетевых данных цитирования, таких как Cora и Citesser.

Я искал в Интернете и еще не видел подробного руководства по VGAE. В этой статье я кратко расскажу о традиционных автоэнкодерах и вариационных автоэнкодерах. Кроме того, я расскажу об идее применения VAE к данным с графической структурой (VGAE).

Традиционные автокодеры

Традиционный автоэнкодер - это нейронная сеть, содержащая кодировщик и декодер. Кодировщик принимает точку данных X в качестве входных данных и преобразует ее в представление более низкого измерения (встраивание) Z. Декодер принимает представление Z более низкой размерности и возвращает реконструкцию исходного ввода X-hat, которая выглядит как ввод X. Качество встраивания определяет качество вывода X-hat. Однако кодировщик может не закодировать всю информацию, потому что вложение имеет меньшую размерность, чем вход. Следовательно, если встраивание захватывает больше информации из входных данных, выходные данные будут иметь лучшую производительность.

Архитектура кодировщика и декодера

Давайте посмотрим на пример. На рисунке 2 показан пример автокодировщика, который принимает изображение MNIST в качестве входных данных. Набор данных MNIST содержит изображения в градациях серого, и каждое изображение имеет форму 28 на 28 пикселей. Кодировщик берет это изображение и преобразует его в вложение меньшего размера Z. Декодер принимает вложение Z и возвращает восстановленное входное изображение, которое является выходом автокодировщика.

Функция потерь

Функция потерь автоэнкодера измеряет информацию, потерянную во время реконструкции. Мы хотим минимизировать потери при реконструкции, чтобы сделать X-hat ближе к X. Мы часто используем среднеквадратичную ошибку в качестве функции потерь,

который определяет, насколько близко X-hat к X.

Почему мы хотим преобразовать ввод в вложение меньшей размерности?

Давайте возьмем изображения в качестве примера. Есть несколько способов использования низкоразмерных встраиваний изображений. Сохранение низкоразмерных вложений изображений может сэкономить место для хранения по сравнению с хранением их яркости в пикселях. Сохранение низкоразмерных вложений изображений также может сэкономить вычислительную мощность, поскольку входные размеры меньше.

Точки, которые находятся рядом с встраиваемыми изображениями, также являются встраиваемыми изображениями в пространство встраивания, и это еще одна причина, по которой встраивание автокодировщика становится полезным. Например, если вы измените интенсивность пикселей изображения MNIST, вы получите зашумленное изображение, которое не будет похоже на изображение в наборе данных MNIST. Однако, если вы немного измените вложение изображения MNIST, а затем декодируете измененное вложение, вы все равно можете получить что-то, похожее на изображение MNIST.

На рисунке 3 показан пример изменения интенсивности пикселей изображения MNIST. После добавления случайного шума к интенсивности каждого пикселя на выходе получается зашумленное изображение, не похожее на изображение в наборе данных MNIST.

На рисунке 4 показан пример изменения встраивания изображения MNIST. Небольшое изменение вложения - это то же самое, что и небольшой сдвиг в пространстве для вложения. Из рисунка 4 видно, что после добавления 4 к каждому элементу встраивания Z выходное изображение X2-hat по-прежнему очень похоже на исходное изображение X1- шляпа.

Мы также могли бы построить эти низкоразмерные вложения в координату n-d. На рисунке 5 показан пример нанесения данных MNIST на пространство для встраивания. Каждая точка в области встраивания представляет собой одни входные данные. Эта визуализация удобна тем, что позволяет систематически систематизировать все входные данные в координатах.

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

Вариационные автоэнкодеры

Зачем нужны вариационные автокодеры?

Одним из самых больших преимуществ вариационного автокодировщика является то, что VAE может генерировать новые данные из исходного исходного набора данных. Напротив, традиционный автоэнкодер мог генерировать только изображения, похожие на исходные входные данные. Допустим, вы хотите построить сад с кустами. Каждый куст должен быть индивидуальным, чтобы ваш сад выглядел настоящим. Вы определенно не сможете нарисовать каждый куст самостоятельно, более разумный способ - использовать вариационный автоэнкодер для автоматического создания новых кустов для вашего сада.

Главная мысль

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

Архитектура кодировщика и декодера

Кодировщик VAE часто записывается как qφ (z | x), который принимает точку данных X и производит распределение. Распределение обычно параметризуется как многомерное гауссово. Следовательно, кодировщик предсказывает средние значения и стандартное отклонение гауссова распределения. Низкоразмерное вложение Z взято из этого распределения. Декодер представляет собой вариационное приближение, pθ (x | z), которое принимает вложение Z и выдает на выходе X-hat.

Функция потерь

Функция потерь для VAE состоит из двух частей. Первая часть функции потерь называется вариационной нижней границей, которая измеряет, насколько хорошо сеть восстанавливает данные. Если восстановленные данные X сильно отличаются от исходных данных, потери при восстановлении будут высокими. Вторая часть функции потерь работает как регуляризатор. Это KL-расхождение приближенного и истинного апостериорного (p (z)), которое измеряет, насколько близко выходное распределение (qφ (z | x)) соответствует в p (z).

Резюме

Идею VAE можно обобщить на изображении ниже:

Кодировщик принимает точку данных X в качестве входных данных и генерирует μ и logσ² в качестве выходных данных. Причина, по которой мы используем logσ² вместо σ², заключается в том, что σ² неотрицательно, поэтому нам понадобится дополнительная функция активации. Но logσ² может быть положительным или отрицательным. После того, как мы получим μ и logσ², мы пытаемся сделать и μ, и logσ² близкими к 0, что означает, что μ близко к 0, а σ близко к 1. Следовательно, окончательное распределение будет близко к N (0,1) . Наконец, мы хотим сгенерировать вложение Z из μ и σ с помощью z = μ + σ * ε, где ε ~ N (0,1) . Это называется трюком повторной параметризации. Теперь с помощью скрытой переменной Z мы можем сгенерировать наш вывод X-hat через декодер.

Автоэнкодеры с вариационными графами

Вступление

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

Матрица смежности

Мы используем матрицу смежности A для представления входного графа. Обычно мы предполагаем, что матрица смежности является двоичной. Значение 1 в строке i и столбце j означает, что между вершиной i и вершиной j есть ребро. Значение 0 в строке m и столбце n означает, что между вершиной m и вершиной n нет ребра.

На рисунке 8 показан пример матрицы смежности, когда входной граф является направленным и неориентированным. С левой стороны, когда граф неориентированный, матрица смежности симметрична. Вершина 0 и вершина 1 соединены друг с другом, поэтому A [0,1] = 1 и A [1,0] = 1. С правой стороны, когда граф ориентирован, матрица смежности несимметрична. Вершина 0 указывает на вершину 1, что означает, что вершина 1 объединяет информацию из вершины 0, поэтому A [1,0] = 1.

Матрица характеристик

Мы используем матрицу признаков X для представления характеристик каждого узла входного графа. Строка i матрицы признаков X представляет встраивания объектов для вершины i.

На рисунке 9 показан пример матрицы признаков. Каждый узел i имеет свою собственную матрицу признаков X_i, и мы можем объединить их вместе, чтобы получить матрицу признаков X для всего графа, где каждая строка i представляет матрицу характеристик узла i.

Архитектура кодировщика и декодера

Кодировщик (модель вывода) VGAE состоит из сверточных сетей графов (GCN). Он принимает матрицу смежности A и матрицу признаков X в качестве входных данных и генерирует скрытую переменную Z в качестве выходных данных. Первый слой GCN генерирует матрицу признаков более низкой размерности. Он определяется как

A-тильда - это симметрично нормализованная матрица смежности.

Второй уровень GCN генерирует μ и logσ², где

Теперь, если мы объединим математику двухслойной GCN вместе, мы получим

который порождает μ и logσ².

Затем мы можем вычислить Z, используя уловку параметризации

где ε ~ N (0,1).

Декодер (генеративная модель) определяется внутренним произведением скрытой переменной Z. Результатом нашего декодера является восстановленная матрица смежности A-hat, которая определяется как

где σ (•) - логистическая сигмоидальная функция.

Таким образом, кодировщик представлен как

а декодер представлен как

Функция потерь

Функция потерь для автокодировщика вариационных графов почти такая же, как и раньше. Первая часть - это потеря восстановления между входной матрицей смежности и восстановленной матрицей смежности. В частности, это двоичная кросс-энтропия между целевым (A) и выходным (A ’) логитами. Вторая часть - это KL-расхождение между q (Z | X, A) и p (Z), где p (Z) = N ( 0,1). Он измеряет, насколько близко наш q (Z | X, A) соответствует p (Z).

Преимущество использования внутреннего декодера продукта

После того, как мы получим скрытую переменную Z, мы хотим найти способ узнать сходство каждой строки в скрытой переменной (поскольку одна строка представляет одну вершину), чтобы сгенерировать выходную матрицу смежности. Внутренний продукт может вычислить косинусное сходство двух векторов, что полезно, когда нам нужна мера расстояния, инвариантная к величине векторов. Следовательно, применяя внутренний продукт к скрытой переменной Z и Z ^ T, мы можем узнать сходство каждого узла внутри Z, чтобы предсказать наша матрица смежности.

Эксперименты по предсказанию ссылок

В статье Автокодировщики вариационных графов авторы также создают традиционную модель автокодировщика графов (GAE) в отличие от модели VGAE. Модель GAE имеет слой с одним GCN в качестве кодировщика, который напрямую генерирует скрытую переменную Z, и декодер внутреннего продукта, который аналогичен модели VGAE. Авторы тестируют обе модели на трех наборах данных (Cora, Citesser и Pubmed), а модель VGAE обеспечивает более высокую прогностическую производительность как для Cora, так и для набора данных Citeseer.

Заключение

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

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

использованная литература

[1] Вариационное байесовское кодирование с автокодированием

[2] Автокодировщики вариационных графиков

[3] Реализация TensorFlow для графических автокодировщиков

[4] Учебник по вариационным автоэнкодерам

[5] Дивергенция Кульбака – Лейблера.