И почему вы не можете позволить себе не использовать графики

Мне потребовалось много времени, чтобы окунуться в изучение графов… Я, вероятно, страдал от самой распространенной эпидемии среди специалистов по обработке и анализу данных: я находил молоток и ходил вокруг в поисках новых гвоздей, чтобы попасть по ним… и когда у вас есть глубокое обучение, все выглядит как хороший ноготь!

Что еще хуже, когда я был аспирантом компьютерных наук, я прошел несколько курсов Advanced Graph Algorithms, работая в лаборатории машинного обучения (ML)… и все же я никогда не думал о том, как графики могут принести пользу машинному обучению, не говоря уже о произвел революцию в этом… честно говоря, это было более 10 лет назад, когда глубокое обучение еще не набрало обороты, не говоря уже о GNN… но все же…

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

Что Бенджио и др. Аль сказал 10 лет назад: «…успех алгоритмов машинного обучения обычно зависит от представления данных… потому что разные представления могут запутывать и более или менее скрывать различные объясняющие факторы вариации за данными». [1] действительно отражает основную революцию в машинном обучении за последнее десятилетие: репрезентативное обучение.

Вложения, которые отображают данные из разреженного многомерного пространства в плотное низкомерное, сохраняя при этом отношения между точками данных, вероятно, являются наиболее известным примером обучения представлению. Но чем графовое представление отличается (или похоже) на нашу обычную характеристику или встраивание?

Графики для представления данных: пример

Давайте рассмотрим простой пример: сеть цитирования CORA [2] — это набор данных, который содержит набор статей и их цитирования: он состоит из 2708 узлов,где каждый узел представляет документ/статью, а ребра — связь между двумя документами через цитаты. Кроме того, для каждого документа существует набор слов, указывающий на наличие слова в документе (1433словарь слов). В то время как пакет слов — это разреженное представление документов, встраивание документов (например, Doc2Vec) может дать нам плотное представление, которое более удобно для алгоритма, основанного на расстоянии.

На рис.1 мы видим 6 статей, которые разделены между двумя группами по информатике (C) и физике (P). Если бы нам нужно было угадать метки бумаги 1 и 6, одним из способов было бы использовать простую модель ML, используя другие помеченные примеры, просто основанные на представлении документов в виде набора слов (или получить еще больше фантазий и создать вложения для эти слова и документы), но нужно ли нам это? Просто взглянув на отношения между узлами, а не на характеристики узлов, мы можем отнести эти две статьи к соответствующим группам, возможно, даже не заглядывая в их словесное содержание.

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

Сигналы графика = отдельные функции узла + структура графика

Графики также могут представлять разнородные точки данных и включать их в различные алгоритмы; например, в приведенном выше примере представьте, что мы также хотим представлять авторов:

А как насчет обучения?

Но как ML может извлечь из этого выгоду? разве нам не нужны табличные данные для многих стандартных алгоритмов машинного обучения? ответ - да, методы ML все еще могут использовать преимущества графического представления через:

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

— Использование алгоритмов Graph native Learning.

— Использование графовых нейронных сетей (GNN)

Встраивания графиков

Вложения графов предназначены для отображения сходства в пространстве графов на сходство в евклидовом пространстве, вы можете сказать, почему бы нам просто не представить структуру графа с матрицей смежности, разве это уже не в евклидовом пространстве? Это так, но это представление очень многомерное и разреженное, и мы все знаем о проклятии размерности… Это та же самая причина, по которой мы предпочитаем преобразовывать набор слов в текстовые вложения: перейти от многомерного разреженного представления к низкоразмерному плотному представлению.

Но как еще мы можем закодировать структуру графа? давайте просто прогуляемся наугад…

Представьте, что мы просим авторов в цифре. 1, чтобы совершить несколько прогулок по графу, по случайным путям, теперь можете ли вы сказать, ближе ли автор a к автору b, чем автор d, просто взглянув на эти пройденные пути? правильно! если два узла находятся ближе на графе, они, вероятно, разделят больше путей во время случайных блужданий. Один из способов количественной оценки этой концепции — преобразовать обходы в последовательности посещенных узлов и применить алгоритм word2vec для создания встраивания этих последовательностей узлов (вместо последовательностей слов)… довольно аккуратно, да? В дополнение к узлам мы также можем встраивать ребра и подграфы, но вложения узлов являются наиболее практичным типом вложений графов.

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

Алгоритм Node2Vec [3] просто упаковывает шаги, описанные выше (предвзятые случайные блуждания, за которыми следует Word2Vec) под одним зонтиком. Хотя Node2Vec, вероятно, является наиболее интуитивно понятным алгоритмом встраивания узлов, это не единственный способ: Fast Random Projection (FastRP) [4] — это алгоритм встраивания узлов, основанный на лемме Джонссона-Линденштрауса, согласно которой можно проецировать n векторы произвольной размерности в размерности O(log(n)) и при этом сохраняют попарные расстояния между точками: даже случайная линейная проекция может удовлетворять этому свойству. Node2Vec может стать очень медленным, поскольку мы увеличиваем длину обхода, и fastRP может быть быстрой альтернативой, хотя выбор оптимальных весов итераций не всегда интуитивно понятен.

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

Графическое обучение

Алгоритмы обучения на основе графов используют структуру графа для обучения. Хорошо известные собственные графовые алгоритмы:

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

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

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

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

Граф нейронных сетей

GNN — это модели глубокого обучения, которые нацелены на захват структуры графа в дополнение к обычным функциям узла. Вы можете сказать, что рекуррентные нейронные сети (RNN) и сверточные нейронные сети (CNN) уже кодируют некоторый уровень структуры в сети, так что же такого особенного в GNN? большинство реальных сетей не имеют ни входных измерений фиксированного размера, ни даже окрестностей фиксированного размера, кроме того, порядок узлов также не является фиксированным; В отличие от RNN и CNN, GNN инвариантны к перестановкам, а также работают с произвольными входными данными и размером окрестности. Нам понадобится полный курс для выпускников, чтобы охватить GNN, но здесь мы рассмотрим их наиболее важные операции, фильтрацию и объединение, а также одну из популярных архитектур GNN: GraphSAGE.

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

Объединение: объединение графов создает новый слой с меньшим количеством узлов, которые могут быть локальными или глобальными. Локальный пул похож на субдискретизацию узлов и обычно достигается путем выбора наиболее важных узлов или кластеризации узлов в меньшее количество групп. Слои глобального пула, с другой стороны, обеспечивают представление фиксированного размера всего графа и должны быть инвариантными к перестановке. Как вы, возможно, уже догадались, последний слой GNN обычно представляет собой глобальный слой пула.

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

GraphSAGE

GraphSAGE [5] — это простая, но эффективная индуктивная структура, которая использует выборку соседей и агрегацию для создания нового представления (встраивания) на уровне узлов для больших графов. Выборка по соседству — это разумная стратегия, которая создает каналы окрестностей одинакового размера в разных узлах графа и преобразует трансдуктивную настройку обучения графа в индуктивную настройку. Другими словами, вместо того, чтобы изучать отдельные вложения для каждого узла, GraphSAGE изучает функцию, которая сэмплирует и агрегирует локальное соседство узла и может использоваться всеми узлами.

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

Еще одним преимуществом GraphSAGE является то, что его можно использовать как в контролируемых, так и в неконтролируемых задачах обучения. При использовании в качестве неконтролируемого алгоритма он может создавать вложения узлов даже для разнородных графов (см. HinSAGE [6]).

Выводы

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

Если вы найдете это полезным и заинтересованы в другом блоге, чтобы расширить то, о чем я говорил здесь, дайте мне знать, и я обязательно расставлю его в приоритете.

Рекомендации

[1] Ю. Бенжио, А. Курвиль и П. Винсент, «Обучение представлениям: обзор и новые перспективы», в IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 35, нет. 8, стр. 1798–1828, август 2013 г., doi: 10.1109/TPAMI.2013.50.

[2] https://relational.fit.cvut.cz/dataset/CORA

[3] Гровер, Адитья и Лесковец, Юре. «node2vec: масштабируемое изучение функций для сетей». Документ, представленный на заседании 22-й международной конференции ACM SIGKDD по открытию знаний и интеллектуальному анализу данных, 2016 г.

[4] Х. Чен, С.Ф. Султан, Ю. Тиан, М. Чен, С. Скиена: Быстрое и точное встраивание в сеть с помощью очень разреженной случайной проекции, 2019.

[5] У. Л. Гамильтон, Р. Ин и Дж. Лесковец, «Индуктивное репрезентативное обучение на больших графах», arXiv.org. 08 июня 2017 г.

[6] https://stellargraph.readthedocs.io/en/stable/hinsage.html