Осмысление больших данных

Как обучать модели сверточной сети на графах в базе данных графов

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

Что такое сверточные сети на основе графов?

Типичная нейронная сеть с прямой связью принимает характеристики каждой точки данных в качестве входных данных и выводит прогноз. Нейронная сеть обучается с использованием функций и метки каждой точки данных в наборе обучающих данных. Такая структура оказалась очень эффективной в различных приложениях, таких как идентификация лица, распознавание почерка, обнаружение объектов, где между точками данных не существует явных взаимосвязей. Однако в некоторых случаях прогноз для точки данных v (i) может быть определен не только по его собственным характеристикам, но и по характеристикам других точек данных v (j), когда связь между v (i) и v ( j). Например, тема журнальной статьи (например, информатика, физика или биология) может быть определена по частоте появления слов в статье. С другой стороны, ссылка в статье также может быть информативной при прогнозировании темы статьи. В этом примере мы не только знаем особенности каждой отдельной точки данных (частота слов), мы также знаем взаимосвязь между точками данных (отношение цитирования). Итак, как мы можем объединить их, чтобы повысить точность прогнозов?

При применении сверточных сетей графов (GCN) характеристики отдельной точки данных и связанных с ней точек данных будут объединены и переданы в нейронную сеть. Давайте снова воспользуемся проблемой классификации бумаги в качестве примера. В графе цитирования (рис. 1) каждая статья представлена ​​вершиной в графе цитирования. Ребра между вершинами представляют отношения цитирования. Для простоты края рассматриваются как ненаправленные. Каждый документ и его вектор характеристик обозначаются как v_i и x_i соответственно. Следуя модели GCN Кипфа и Веллинга [1], мы можем предсказать тематику статей, используя нейронную сеть с одним скрытым слоем, выполнив следующие шаги:

В приведенном выше рабочем процессе на этапах 1 и 4 выполняется горизонтальное распространение, при котором информация о каждой вершине распространяется на ее соседей. На шагах 2 и 5 выполняется вертикальное распространение, при котором информация о каждом слое передается на следующий уровень. (см. рис. 1) Для GCN с несколькими скрытыми слоями будет несколько итераций горизонтального и вертикального распространения. Стоит отметить, что каждый раз, когда выполняется горизонтальное распространение, информация о вершине распространяется на один шаг дальше по графу. В этом примере горизонтальное распространение выполняется дважды (шаги 2 и 4), поэтому прогноз каждой вершины зависит не только от ее собственных характеристик, но также и от характеристик всех вершин в пределах 2-х шагового расстояния от нее. Кроме того, поскольку весовая матрица W (0) и W (1) является общей для всех вершин, размер нейронной сети не должен увеличиваться с размером графа, что делает этот подход масштабируемым.

Зачем вам нужна база данных графиков для GCN

Включая особенности графа каждой вершины, GCN может достичь высокой точности с низкой скоростью меток. В работе Кипфа и Веллинга [1] точность более 80% может быть достигнута с использованием 5% помеченных вершин (сущностей ) в графе. Учитывая, что весь граф должен участвовать в вычислениях во время распространения, сложность пространства для обучения модели GCN составляет O (E + V * N + M), где E и V - количество ребер и вершин в графе, N - количество объектов на вершину, а M - размер нейронной сети.

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

Как обучать модели GCN в базе данных графов

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

Выполните Создание первого экземпляра TigerGraph (первые 3 шага), чтобы предоставить бесплатный экземпляр в облаке TigerGraph. На шаге 1 выберите Graph Convolutional Networks в качестве стартового набора. На шаге 3 выберите TG.Free. (* см. сноску, если вы не можете найти стартовый комплект)

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

  • Cite.csv состоит из трех столбцов: paperA_id, paperB_id и weight. Первые два столбца используются для создания краев CITE между листами. Вес на краях CITE будет обновлен запросом на следующих шагах, поэтому последний столбец загружать не нужно. Следует отметить, что файл в этом начальном наборе содержит ссылки на каждый документ, чтобы упростить реализацию запроса. Это согласуется с подходом Кипфа и Веллинга [1].
  • Paper_tag.csv состоит из двух столбцов, paper_id и class_label. Каждая строка в этом файле будет использоваться для создания вершины PAPER с идентификатором бумаги и классом бумаги, заполненными из файла.
  • Content.csv имеет три столбца: paper_id, word_id и weight. Первые два столбца используются для создания границ HAS между бумагами и словами. Ребра HAS будут использоваться для хранения разреженных векторов признаков из набора слов. Веса на краях HAS будут обновлены запросом на следующих шагах, поэтому последний столбец загружать не нужно.

Перейдите на страницу Загрузить данные и нажмите Начать / возобновить загрузку. После завершения загрузки вы можете увидеть статистику графика справа. Набор данных Cora включает 2708 статей, 1433 различных слова (размерность вектора признаков) и 7986 взаимосвязей цитирования. Каждая статья помечена 1 из 7 различных классов.

На странице Исследовать график вы можете увидеть, что мы только что создали нейронную сеть поверх графика цитирования. Каждая статья в графе цитирования связана с несколькими словами. Таким образом, веса на ребрах HAS образуют разреженный вектор признаков. 1433 различных слова соединяются с 16 нейронами в скрытом слое, который соединяется с 7 нейронами (представляющими 7 различных классов) в выходном слое.

На странице Запросы на запись вы обнаружите, что запросы, необходимые для GCN, уже добавлены в базу данных. Запросы написаны на GSQL, языке запросов TigerGraph. Нажмите Установить все запросы, чтобы скомпилировать все запросы GSQL в код C ++. Вы также можете увидеть запрос README на этой странице. Выполните следующие действия, чтобы обучить GCN.

Запустите запрос инициализации.

Этот запрос сначала нормализует веса на краях CITE, назначая вес между бумагами i и j как e_ij = 1 / (d_i * d_j), где d_i, d_j - градусы бумаги i и бумаги j. Во-вторых, он нормализует веса на краях HAS, присваивая вес между бумагой p и словом w как e _ pw = 1 / dp, где dp - это степень HAS для бумаги w. В-третьих, он отбирает 140, 500 и 1000 вершин PAPER для тестирования, проверки и обучения.

Выполните запрос weight_initialization

Этот запрос инициализирует веса для нейронной сети, используя метод Glorot и Bengio [2]. Нейронная сеть имеет 1433 нейрона на входном слое, соответствующем размеру словаря, 16 нейронов в скрытом слое и 7 нейронов в выходном слое, соответствующих 7 классам документов.

Выполните обучающий запрос

Этот запрос обучает сверточную нейронную сеть на основе графа с теми же гиперпараметрами, которые использовались в Kipf и Welling [1]. В частности, модель оценивается с использованием кросс-энтропийных потерь, регуляризации выпадения и регуляризации L2 (5e-4) для первого уровня. В этом запросе был реализован оптимизатор Adam, и для обучения используется пакетный градиентный спуск. После завершения запроса будут показаны потери, оцененные по данным обучения и проверки, вместе с точностью предсказания, оцененной по данным тестирования. Как показано в выходных данных обучающего запроса, точность достигает 53,2% после 5 периодов обучения. Количество эпох может быть установлено в качестве входных данных запроса для большей точности.

Выполните прогнозный запрос

Этот запрос применяет обученный GCN ко всем статьям на графике и визуализирует результат.

Обзор запросов GSQL

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

Оператор SELECT:

Давайте сначала посмотрим на инициализацию запроса. Первая строка инициализирует набор вершин Papers, который включает все вершины PAPER в графе. В следующем операторе SELECT мы начнем с набора вершин Papers и проходим все ребра CITE. Для каждого ребра (обозначенного e) его вес ребра вычисляется из параллельных исходящих степеней его исходной вершины (обозначенной s) и целевой вершины (обозначенной t).

АККУМ и ПОСТ-АККУМ

Теперь давайте посмотрим на запрос обучение. Блок ниже выполняет горизонтальное и вертикальное распространение. Как мы обсуждали в предыдущем разделе, горизонтальное распространение - это то место, где мы отправляем информацию от каждой вершины к ее соседям, это делается строкой после ACCUM. Он вычисляет вектор признаков каждой целевой вершины (обозначаемый t. @ Z_0) как сумму вектора признаков его исходной вершины (обозначаемый s. @ Zeta_0), взвешенный с помощью e.weight. Следующий блок POST-ACCUM выполняет вертикальное распространение. Сначала он применяет функцию активации ReLU и регуляризацию выпадения к вектору признаков на каждой вершине. Затем он распространяет функцию скрытого слоя (обозначенную s. @ Z_0) на выходной слой. Опять же, TigerGraph будет распараллеливать вычисления в блоках ACCUM и POST-ACCUM в отношении ребер и вершин.

Пользовательские функции

Функции активации реализованы на C ++ и импортированы в библиотеку пользовательских функций TigerGraph. Ниже представлена ​​реализация функции ReLU (ReLU_ArrayAccum)

Заключение

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

Ссылка:

[1] Томас. Н. Кипф и Макс Веллинг, ICLR (2017)

[2] Глорот и Бенджио, AISTATS (2010).

* В случае, если стартовый комплект Машинное обучение в базе данных для GCN (график цитирования) недоступен, вы можете (1) выбрать стартовый комплект Пустой на шаге 1. (2) Выполните шаги 2 и 3 для регистрации в GraphStudio. (3) Загрузите GCNonCitationGraph.tar.gz и все файлы .csv в папке / data со страницы https://github.com/ChangranLiu/Machine-Learning-in-TigerGraph/tree/master/GCN. (4) Импортируйте файл .tar.gz с домашней страницы GraphStudio, используя Импортировать существующее решение. (5) Загрузите все файлы .csv со страницы Данные карты на страницу График.