За последнее десятилетие мы увидели, что нейронные сети могут очень хорошо работать со структурированными данными, такими как изображения и текст. Большинство популярных моделей, таких как сверточные сети, рекуррентные, автоэнкодеры, очень хорошо работают с данными, которые имеют табличный формат, такой как матрица или вектор. А как быть с неструктурированными данными? Как насчет графических данных? Есть ли модель, которая может эффективно учиться у них? Вероятно, вы догадались об этом из названия. Ответ
Граф нейронных сетей.
Графовые нейронные сети были представлены еще в 2005 году (как и все другие хорошие идеи), но они начали набирать популярность в последние 5 лет. GNN могут моделировать отношения между узлами в графе и создавать их числовое представление. Важность GNN весьма значительна, потому что существует так много реальных данных, которые можно представить в виде графика. Социальные сети, химические соединения, карты, транспортные системы и многое другое. Итак, давайте выясним основные принципы, лежащие в основе GNN, и почему они работают.
Давайте сначала определим нашу основную проблему: мы хотим сопоставить данный граф с одной меткой, которая может быть числовым значением, классом или чем-то еще. Другими словами:
И мы хотим найти функцию F. Например, представьте, что каждый график — это химическое соединение или молекула, а метка — это вероятность того, что эта молекула может быть использована для производства определенного лекарства. Если у нас есть способ извлечь метку из каждого графика, мы, по сути, нашли способ предсказать, какие молекулы с большей вероятностью будут использоваться в лекарстве. Круто, правда?
как нам это сделать? Мы уже знаем тип нейронной сети, который можно использовать на графиках (вроде). Если подумать, рекуррентные нейронные сети могут работать на особом типе графа. Цепной график (это график, который в основном представляет собой линию). Временные ряды на самом деле представляют собой связанные графики, где каждая временная метка представляет собой узел, за которым следует следующая временная метка.
Так что, по сути, мы можем построить сеть, где каждый узел графа — это рекуррентная единица (LSTM или что-то еще), а информация узла — это вложение, которое будет передаваться по цепочке (как сообщение). И поскольку все единицы повторяются, информация не будет потеряна, когда встраивание пройдет через граф. Это наши знакомые рекуррентные нейронные сети. Точно такие же, как те, которые используются в языковом переводе и других приложениях для обработки естественного языка.
Конечно, мы можем распространить эту идею на правильные графы, и мы получим следующее:
Графовые нейронные сети: варианты и приложения
Этот слайд взят из потрясающего разговаривать о GNN от Microsoft Research. Давайте на мгновение посмотрим, что здесь происходит.
Каждый оранжевый треугольник раньше был узлом графа, а теперь заменен повторяющейся единицей. Конверты представляют собой вложения узлов, которые будут проходить через граф. Каждое ребро графа также заменяется нейронной сетью для сбора информации о ребре (его весе).
Теперь об обучающей части. На одном временном шаге каждый узел извлекает вложение у всех своих соседей, вычисляет их сумму и передает их вместе со своим вложением в рекуррентный блок, который создаст новое вложение. Это новое вложение содержит информацию об узле плюс информацию обо всех соседях. На следующем временном шаге он также будет содержать информацию о своих соседях второго порядка. И так далее, и так далее. Процесс продолжается до тех пор, пока каждый узел не узнает обо всех остальных узлах графа. Каждое из вложений теперь имеет информацию от всех других узлов. Последний шаг — собрать все вложения и добавить их, что даст нам единое вложение для всего графа.
https://tkipf.github.io/graph-convolutional-networks/
Вот и все. Мы сделали это. Нам удается захватить весь граф в одном встраивании. Это вложение теперь можно использовать в какой-либо другой модели для выполнения какой-либо классификации, прогнозирования, кластеризации чего угодно. Дайте волю своему воображению.
Если вы хотите поэкспериментировать с графовыми нейронными сетями, я помогу вам:
Лично я бы выбрал третий, так как у него лучшая документация, но это ваш выбор.
Ну вот. Та-ра парень.
* Раскрытие информации: Обратите внимание, что некоторые из приведенных выше ссылок могут быть партнерскими ссылками, и без дополнительной оплаты для вас мы будем получать комиссию, если вы решите совершить покупку после перехода по ссылке.