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

В следующей серии этого поста здесь я попытаюсь реализовать Graph Convolutional Neural Network.

Итак, приступим!

Что такое графики?

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

Более формально граф можно определить так:

В приведенном выше графике набор вершин V = {0,1,2,3,4} и набор ребер E = {{0,1}, {1,2}, {2,3} , {3,4}, {0,4}, {1,4}, {1,3}}.

Графики используются для решения широкого круга реальных проблем. Сети представлены графически с помощью графиков. Пути в городе, телефонная сеть или коммутационная сеть являются примерами сетей, которые можно использовать. Кроме того, графики можно найти на сайтах социальных сетей, таких как Linkedin и Facebook. Вершина используется для представления каждого человека на сайтах социальных сетей, таких как Facebook (или узел). Каждый узел - это структура, которая содержит такую ​​информацию, как идентификатор человека, имя, пол, местонахождение и другие атрибуты. Это несколько примеров приложений, которые широко используют структуру данных графа.

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

Прежде чем говорить о графических нейронных сетях, мы должны сначала поговорить о входных данных для этих моделей: данных графа.

Данные графика довольно просты. У вас есть набор узлов (или вершин = V), и у вас есть ребра (= E) между этими узлами. Информация о соединениях в графе обычно представлена ​​матрицами смежности (или иногда списками смежности).

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

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

Графическая нейронная сеть

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

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

Приложения GNN

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

  1. Классификация узлов: цель этой задачи - определить маркировку образцов (представленных в виде узлов) путем изучения меток их непосредственных соседей (т. е. меток их соседей). Как правило, задачи такого рода обучаются полу-контролируемым образом, при этом во время процесса обучения помечается только часть графика.
  2. Классификация графиков. Цель состоит в том, чтобы разделить весь график на различные категории. Это похоже на классификацию изображений, за исключением того, что цель теперь находится в области графа. Применения классификации графов многочисленны, и они варьируются от определения того, является ли белок ферментом или нет в биоинформатике, до категоризации документов при обработке естественного языка (NLP) или анализа социальных сетей, среди прочего.
  3. Визуализация графов. Визуализация информации - это раздел математики и информатики, который существует на стыке геометрической теории графов и информатики. Он связан с визуальным представлением графиков, которое выявляет структуры и аномалии, которые могут присутствовать в данных, и помогает пользователю понять графики, с которыми они представлены.
  4. Предсказание связи. В частности, алгоритм должен понимать взаимосвязь между объектами в графах, а также пытаться спрогнозировать вероятность существования связи между двумя объектами. В социальных сетях необходимо сделать вывод о социальных взаимодействия или предложить потенциальных друзей пользователям, чтобы они функционировали должным образом. Он также применялся к задачам, связанным с рекомендательными системами и прогнозированием преступных сообществ.
  5. Кластеризация графиков. Визуализация данных в виде графиков называется кластеризацией. Для данных графа можно выполнить два различных типа кластеризации. Кластеризация вершин пытается сгруппировать узлы графа в группы плотно связанных регионов на основе весов ребер или расстояний между узлами графа. При использовании второй формы кластеризации графов графы обрабатываются как объекты, подлежащие кластеризации, а объекты группируются на основе их сходства.

Как работают графические нейронные сети?

Установив фундаментальную структуру нейронной сети графа (узлы с их вложениями и ребра со слоями прямой связи), мы можем перейти к более глубокому пониманию того, как GNN функционируют на практике.

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

Агрегация соседства или передача сообщений

Передача сообщений - это процесс обмена и получения информации о соседстве узла между узлами. Рассмотрим следующий пример целевого узла с его начальными вложениями: он получает информацию через граничные нейронные сети от своих соседей. Данные с этих ребер агрегируются (используются различные методы, включая максимальное объединение, усреднение и т. Д.) И передаются в блок активации узла для создания нового набора вложений для узла.
Каждый узел в исходная конфигурация имеет свойство x v. После передачи сообщения вложения каждого узла можно определить следующим образом:

Типы графических нейронных сетей

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

Графические сверточные сети (GCN)

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

Подробнее о CNN можно прочитать здесь.

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

В простейшем GCN есть всего три разных оператора:

  • Свертка графа
  • Линейный слой
  • Нелинейная активация

В большинстве случаев операции выполняются именно в таком порядке. Они работают вместе, образуя единый сетевой уровень. Чтобы создать полную GCN, мы можем объединить один или несколько слоев.

Сети графического автокодировщика

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

Подробнее об автокодировщиках можно прочитать здесь.

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

Заключение

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

Надеюсь, вам понравится этот пост.

До следующего раза!

[1]: Никита Шарма. (28 октября 2020 г.), Введение в графовую нейронную сеть- https://heartbeat.fritz.ai/introduction-to-graph-neural-networks-c5a9f4aa9e99

[2]: Общие сведения о графических нейронных сетях - https://deepfindr.com/understanding-graph-neural-networks-part-1-3/

[3]: Графическая нейронная сеть и некоторые приложения GNN - все, что вам нужно знать- «https://neptune.ai/blog/graph-neural-network-and-some-of-gnn -Приложения"

[4]: http://snap.stanford.edu/proj/embeddings-www/files/nrltutorial-part2-gnns.pdf