Авторы: Паридхи Махешвари, Джиан Вора, Шармила Редди Нанги, часть проекта курса Stanford CS 224W.

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

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

В идеале мы хотим изучить вложения таким образом, чтобы точки данных, которые «похожи» друг на друга, имели вложения, близкие друг к другу, а вложения «разнородных» точек данных были далеки друг от друга, для подходящей функции расстояния в многомерном пространстве ( такие как норма L2 или косинусное сходство).

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

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

С этим высокоуровневым введением в обучение с самоконтролем давайте посмотрим, как мы можем применить эту технику к графикам. В оставшейся части блога мы рассмотрим следующие вопросы вместе с фрагментами кода в PyTorch Geometric (популярный фреймворк для Graph ML, созданный поверх PyTorch):

  1. Как создавать разные «виды или дополнения графика?»
  2. Как строить модели, работающие на графах?
  3. Как обучать эти модели в режиме самоконтроля?
  4. Как использовать обучение с самоконтролем для последующих задач?

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

Увеличение данных

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

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

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

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

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

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

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

Графовые нейронные сети (GNN) — это класс моделей глубокого обучения, которые работают с входными данными графа. Эти сети приобрели огромную популярность в последние годы из-за их широкого применения в таких областях, как графы знаний, социальные сети и молекулярная биология. Их можно использовать для изучения вложений объектов графа (узлов, ребер или целых графов), и они показали замечательную производительность в таких задачах, как классификация графов, классификация узлов, предсказание ссылок и т. д.

Этот шаг представляет собой один слой GNN и повторяется несколько раз путем наложения слоев GNN. По мере увеличения количества слоев мы увеличиваем восприимчивое поле каждого узла, включая соседей соседей и так далее. В GNN K-уровня каждый узел имеет восприимчивое поле своего соседства K-hop.

Давайте углубимся и заглянем под капот. На уровне GNN есть две основные операции: объединение сообщений от всех соседних узлов и объединение с предыдущим внедрением данного узла. Математически,

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

  • GraphSAGE [1]: одна из первых работ, предлагающая индуктивную структуру обучения для графов, то есть возможность обобщать невидимые узлы во время логического вывода. Хотя в оригинальной статье представлены различные варианты функции aggregate, наиболее часто используется агрегатор объединения. Это преобразует встраивание каждого узла, используя полносвязный слой, и выполняет поэлементную операцию максимального объединения для агрегирования информации от всех соседей. Функция combine сначала объединяет выходные данные агрегата и предыдущего внедрения, а затем проходит через другой полносвязный уровень с активацией ReLU.

Это может быть реализовано как:

  • Сверточная сеть графов (GCN) [2]: функции агрегирования и объединения интегрированы в одно уравнение обновления, показанное ниже. Основное отличие от GraphSAGE заключается в использовании объединения или нормализации симметричного среднего вместо максимального объединения.

Это может быть реализовано как:

  • Graph Attention Network (GAT) [3]: этот метод реализует неизотропную агрегацию, при которой оценки важности (или внимания) присваиваются каждому ребру в графе. Это определяет вклад соседних узлов в обновление вложения данного узла. Преимущество этого метода заключается в том, что изученное внимание также можно использовать для лучшего анализа и интерпретации графика.

Это может быть реализовано как:

  • Graph Isomorphism Network (GIN) [4]: ​​простая, но мощная модель, которая обобщает тест изоморфизма WL (дополнительную информацию см. в этом блоге) для графов. По сути, он использует агрегатор суммы вместо агрегаторов максимального или среднего значения, которые могут захватывать весь мультимножество узлов в графе.

Это может быть реализовано как:

  • Simple Graph Convolution (SGC) [5]: в этой работе выдвигается гипотеза о том, что нелинейность в каждом слое GCN не является критической, и большая часть преимуществ возникает из-за агрегации соседей. Таким образом, они удаляют функции активации между слоями.

Результирующая сеть K-уровня становится линейной по весовым параметрам W, но имеет такое же рецептивное поле, как и GCN K-уровня. Это может быть реализовано как:

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

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

Контрастные потери

Цель состоит в том, чтобы оценить согласие между положительными парами выше, чем отрицательными. Для заданного графа его позитив строится с использованием рассмотренных ранее методов аугментации данных, а все остальные графы в мини-пакете составляют негативы. Наша самоконтролируемая модель может быть обучена с использованием задачи InfoNCE [6] или оценщика Дженсена-Шеннона [7].

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

Теперь мы можем собрать воедино строительные блоки, которые мы видели до сих пор, и обучить наши модели без каких-либо помеченных данных. Чтобы получить больше практического опыта, обратитесь к нашей Записной книжке Colab, которая сочетает в себе различные методы обучения с самоконтролем. Мы предоставляем простой в использовании интерфейс для обучения ваших собственных моделей, а также гибкость, позволяющую опробовать различные дополнения, GNN и контрастные потери. Всю нашу кодовую базу можно найти на Github.

Последующие задачи

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

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

Набор данных: Технический университет Дортмунда собрал широкий спектр различных наборов графических данных, известных как TUDatasets, которые доступны через torch_geometric.datasets.TUDataset в PyG. . Мы будем экспериментировать с одним из небольших наборов данных, MUTAG. Каждый график в этом наборе данных представляет собой химическое соединение, а также связанную с ним бинарную метку, которая представляет их мутагенное действие на определенную грамотрицательную бактерию. Набор данных включает 188 графов с 18 узлами, в среднем 20 ребер для каждого графа. Мы намерены выполнить бинарную классификацию этого набора данных.

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

Обучение. При обучении с кодировщиком GCN с использованием Cross Entropy Loss и Adam Optimizer мы достигаем точности классификации 60 %. Точность не очень высока из-за ограниченного количества размеченных данных.

Теперь давайте посмотрим, сможем ли мы использовать изученные ранее методы самоконтроля для повышения производительности. Мы можем использовать несколько методов увеличения данных, таких как Edge Perturbation и Node Dropping, чтобы обучить кодировщик GNN независимо и лучше изучить встраивание графов. Теперь предварительно обученные вложения вместе с головкой классификатора можно точно настроить с помощью доступного помеченного набора данных. При попытке использовать набор данных MUTAG мы заметили, что точность подскочила до 75 %, что на колоссальное 15 %-е улучшение по сравнению с предыдущим!

Мы также визуализируем вложения из нашего предварительно обученного кодировщика GNN в пространстве низкой размерности. Даже без доступа к каким-либо меткам модель с самоконтролем способна разделить два класса, что является замечательным достижением!

Вот еще несколько примеров, когда мы проводили один и тот же эксперимент на разных наборах данных. Обратите внимание, что все они обучены кодировщику GCN с самоконтролем, применяемым с помощью дополнений Edge Perturbation и Node Droping и целевой функции InfoNCE.

Это предварительное обучение с самоконтролем очень эффективно, особенно в случаях, когда у нас ограниченный объем размеченных данных. Рассмотрим настройку, в которой у нас есть доступ только к 20% помеченных обучающих данных. И снова самоконтролируемое обучение приходит нам на помощь и значительно повышает производительность модели!

Чтобы поэкспериментировать с большим количеством наборов данных и методов самоконтроля, следуйте инструкциям в нашем Google Colab или репозитории Github для этой работы.

Заключение

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

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

В заключение, вам не нужно иметь больше помеченных данных, чтобы улучшить производительность модели. Просто получите больше данных, и самоконтроль сделает свое дело!

Ссылки

  1. Гамильтон, Уилл, Читао Ин и Юре Лесковец. «Индуктивное репрезентативное обучение на больших графах». Достижения в области нейронных систем обработки информации 30 (2017 г.).
  2. Кипф, Томас Н. и Макс Веллинг. «Полуконтролируемая классификация с использованием графовых сверточных сетей». препринт arXiv arXiv:1609.02907 (2016 г.).
  3. Величкович, Петар и др. «Нарисуйте сети внимания». препринт arXiv arXiv:1710.10903 (2017 г.).
  4. Сюй, Кейулу и др. «Насколько эффективны графовые нейронные сети?» препринт arXiv arXiv:1810.00826 (2018 г.).
  5. Ву, Феликс и др. «Упрощение графовых сверточных сетей». Международная конференция по машинному обучению. ПМЛР, 2019.
  6. Оорд, Аарон ван ден, Яже Ли и Ориол Виньялс. «Репрезентативное обучение с контрастным прогностическим кодированием». препринт arXiv arXiv:1807.03748 (2018 г.).
  7. П. Величкович, В. Федус, В. Л. Гамильтон, П. Лио`, Ю. Бенжио и Д. Хьельм, «Информация о глубоком графе», Международная конференция по представлениям обучения, 2019 г.
  8. Вы, Юнинг и др. «Графическое контрастное обучение с дополнениями». Достижения в области нейронных систем обработки информации 33 (2020): 5812–5823.
  9. Цю, Цзечжун и др. «Gcc: графическое контрастное кодирование для предварительного обучения графовой нейронной сети». Материалы 26-й Международной конференции ACM SIGKDD по обнаружению знаний и интеллектуальному анализу данных. 2020.
  10. Хассани, Каве и Амир Хосейн Хасахмади. «Контрастное многоракурсное обучение представлению на графиках». Международная конференция по машинному обучению. ПМЛР, 2020.