Тренироваться или не тренироваться - вопрос не в этом
(Аноним)

Нетренированная сверточная сеть графов [1] (uGCN) со случайно назначенными весами была моим основным базовым кодировщиком для ряда задач с данными графов из-за чрезвычайно низкой стоимости, простоты реализации и довольно очевидной элегантности. Тем не менее, никто (насколько мне известно) не сообщил о тестах производительности этой простой модели по сравнению с ее старшей сестрой - полностью развитой (непрерывно обученной) сверточной графической сети (CGN) в контролируемой среде. Я так и сделал.

Мотивация: выяснить, создает ли uGCN высококачественные представления, которые можно использовать в ряде последующих задач на графиках в индуктивной настройке, чтобы обученные модели могли обобщать ранее невидимые данные (на основе недавно опубликовал результаты [2] для преобразовательной установки).

Результаты были интересными. В наихудшем сценарии простые модели (uGCN + степень ядра + случайный лес) набрали 54:90 по сравнению с непрерывно обученными GCN, в то время как более реалистичный сценарий привел к разрушительным 93:51, предполагая, что мы можем иметь почти бесплатные встраивания, которые превосходят по производительности или точно соответствуют непрерывно обученным GCN в задачах классификации графов за небольшую часть стоимости. Для обучения крошечным моделям потребовалось всего ~ 10 минут, в то время как весь эксперимент длился ~ 4 часа. Давайте перейдем к деталям и выясним, что произошло!

На всякий случай, если ваши предпочтения в чтении предпочитают код эссе, поэкспериментируйте с прилагаемой тетрадью colab.

Предварительные мероприятия

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

Граф, обычно записываемый как G = (V, E), представляет собой математическую модель, состоящую из набора вершин V и набора ребер E - попарных связей e (i, j) между вершинами i и j. Расширением Graph является Labeled Property Graph, который позволяет присваивать векторам признаков xi вершинам vi (мы также можем назначать признаки ребрам, но это выходит за рамки сегодняшнего эксперимента).

Графическая нейронная сеть [3] (GNN) - это модель машинного обучения (параметрическая функция, которая регулирует или, другими словами, изучает параметры на основе данных), которая расширяет хорошо известное семейство алгоритмов, основанных на биологии, в область неструктурированных графических данных. ИМХО, передача сообщений - это простейшая интуиция для механики GNN, и разумно сослаться на мнемоническое правило скажите мне, кто ваш друг, и я скажу вам, кто вы. Графические сверточные сети (GCN) очень хорошо описаны их изобретателем здесь (https://tkipf.github.io/graph-convolutional-networks/), и мне сложно рассказать историю лучше.

Данные

Давайте проведем серию экспериментов с общедоступными данными. Мы собираемся (i) получить данные из TUDatasets [4] (набор эталонных наборов данных) и (ii) ограничить наше упражнение бинарной классификацией (предсказанием свойств) малых молекул. Еще одним ограничением в наших усилиях является (iii) использование графов с помеченными вершинами.

Индуцированные ограничения оставляют нам список наборов данных, широко используемых для тестирования новых алгоритмов. Это: СПИД, BZR, COX2, DHFR, MUTAG и БЕЛКИ. Все эти данные уже доступны в составе Pytorch Geometric [5] (библиотеки для глубокого обучения на графах) в двух версиях: исходной и очищенной от дубликатов [6]. Остается 12 наборов данных.

Данные антивирусного скрининга СПИДа [7]

Программа DTP AIDS Antivirus Screen проверила десятки тысяч соединений на предмет доказательства активности против ВИЧ. Доступны результаты скрининга и данные о химической структуре соединений, на которые не распространяется соглашение о конфиденциальности. Исходный набор данных содержит 2000 молекул, а его очищенная версия оставляет нам 1110 точек данных.

Лиганды бензодиазепиновых рецепторов (BZR) [8]

Исходный набор данных содержит 405 молекул, а его очищенная версия оставляет нам 276 точек данных.

Ингибиторы циклооксигеназы-2 (ЦОГ-2) [8]

Исходный набор данных содержит 467 молекул, а его очищенная версия оставляет нам 237 точек данных.

Ингибиторы дигидрофолатредуктазы (ДГФР) [8]

Исходный набор данных содержит 756 молекул, а его очищенная версия оставляет нам 578 точек данных.

MUTAG [9]

Набор данных MUTAG состоит из 188 химических соединений, разделенных на два класса в соответствии с их мутагенным действием на бактерии. Его очищенная версия оставляет нам 135 структур.

БЕЛКИ [10]

Графики белков из файлов белков банка данных белков (PDB) - набора данных ферментов и неферментов. Исходный набор данных содержит 1113 молекул, а его очищенная версия оставляет нам 975 точек данных.

Дизайн эксперимента

Да будет турнир!

Для каждого набора данных мы проводим 12 раундов обучения и тестирования.

Для каждого раунда мы:

I

Сделайте рандомизированное разделение 80/20 в Pytorch Geometric (начиная со случайного начального числа = 42 и увеличивая начальное значение на 1 для каждого следующего раунда), чтобы 80% точек данных (графиков) были назначены в обучающий набор, а остальные 20% зайти в тестовый набор;

II

Обучите модели на обучающем наборе и оцените точность на тестовом наборе.

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

Для сетей GCN мы запускаем 200 эпох обучения и тестирования со скоростью обучения = 0,01 и сообщаем:

(А) средняя точность за 10 финальных эпох - реалистичный сценарий;

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

III

Лучшая модель получает 1 балл;

IV

Если есть ничья, дело идет к самой маленькой модели.

Всего необходимо получить 288 баллов: 12 наборов данных * 12 раундов * 2 сценария.

Модели

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

import networkx as nx 
import numpy as np  
from scipy.sparse import csgraph 
# g - a NetworkX graph
numNodes = len(g.nodes) 
degreeHist = nx.degree_histogram(g) 
# normalize
degreeKernel = [x/numNodes for x in degreeHist]

Нетренированная сверточная сеть с графами (uGCN) - сверточная сеть с графиками прямой связи со случайным образом назначенными весами для 3 слоев с активациями ReLU между ними. Мы применяем глобальное объединение средних значений к выходным 64-мерным векторам (вложения узлов), чтобы получить представления для графов.

# INPUT
# g - a NetworkX graph
# X - node features of a graph g (np.array) 
# W0, W1, W2 - randomly assigned weights
# PREPROCESSING
# A - adjacency matrix of a graph g
A = nx.convert_matrix.to_scipy_sparse_matrix(g)
# D - normalized laplacian matrix of a graph g derived from A
D = sparse.csgraph.laplacian(A, normed=True) 
# GRAPH CONVOLUTIONAL NETWORK - FORWARD PASS
# Layer 0 
Xc = D @ X @ W0 
# ReLU 
Xc = Xc * (Xc>0) 
# concatenation of node features with those aggregated of neighbors
Xn = np.hstack((X, Xc)) 
# Layer 1
Xc = D @ Xn @ W1 
# ReLU 
Xc = Xc * (Xc>0) 
Xn = np.hstack((Xn, Xc)) 
# Layer 2 - node embeddings
Xc = D @ Xn @ W2 
# global mean pooling - graph embedding 
embedding = Xc.sum(axis=0) / Xc.shape[0]

Комбинация DK и uGCN (Mix) - конкатенация представлений графов, полученных моделями DK и uGCN.

mix = degreeKernel + list(embedding)

Классификатор Случайный лес (RF) (из пакета Scikit-learn [11]) из 100 деревьев с максимальной глубиной 17 обучается на вышеуказанном.

Сверточная сеть графов (CGN) - сквозной классификатор, состоящий из 3 сверточных слоев (64-мерных) с активациями ReLU между ними, глобальный средний уровень объединения (до этого момента GCN близко соответствует uGCN ), за которым следует слой исключения и линейный классификатор. Мы собираемся называть модели в лучшем сценарии (B) как GCN-B, а модели в реалистичном сценарии (A) как GCN-A. Мы собираемся использовать эталонную реализацию GCN для Pytorch Geometric, чтобы сделать турнир максимально честным.

Результаты

После 144 раундов (12 наборов данных * 12 раундов) сравнительного анализа между простыми моделями и непрерывно обученными GCN общее количество 288 точек распределено следующим образом:

147:141

Точность тестовых наборов варьировалась в зависимости от группы, и были ситуации, когда крошечные модели преобладали над сложными соперниками.

Например, ядро ​​степеней взяло все 48 точек в наборе данных СПИДа, демонстрируя на 10+ процентов лучшую точность, чем у непрерывно обученного GCN.

Набрано очков:

90 - ГЦН-Б;

71 — DK;

51 - ГЦН-А;

21 - uGCN.

Clean wins:
DK in all versions of AIDS dataset in both scenarios (48 points);
GCN-B (scenario B) has championed in cleaned BZR (12), COX2 (24) and PROTEINS (24) - all versions;
The rest of the points distributed as follows.
-----------------
Dataset: BZR, cleaned: yes
Scenario: A
DK      0
uGCN    3
Mix     1
GCN     8
-----------------
Dataset: BZR, cleaned: no
Scenario: A
DK      4
uGCN    1
Mix     4
GCN     3
-----------------
Dataset: BZR, cleaned: no
Scenario: B
DK       1
uGCN     0
Mix      1
GCN     10
-----------------
Dataset: COX2, cleaned: yes
Scenario: A
DK      0
uGCN    3
Mix     1
GCN     8
-----------------
Dataset: COX2, cleaned: no
Scenario: A
DK       0
uGCN     1
Mix      1
GCN     10
-----------------
Dataset: DHFR, cleaned: yes
Scenario: A
DK      1
uGCN    1
Mix     4
GCN     6
-----------------
Dataset: DHFR, cleaned: yes
Scenario: B
DK      0
uGCN    0
Mix     3
GCN     9
-----------------
Dataset: DHFR, cleaned: no
Scenario: A
DK      2
uGCN    4
Mix     5
GCN     1
-----------------
Dataset: DHFR, cleaned: no
Scenario: B
DK      0
uGCN    1
Mix     5
GCN     6
-----------------
Dataset: MUTAG, cleaned: yes
Scenario: A
DK      2
uGCN    3
Mix     6
GCN     1
-----------------
Dataset: MUTAG, cleaned: yes
Scenario: B
DK      1
uGCN    2
Mix     5
GCN     4
-----------------
Dataset: MUTAG, cleaned: no
Scenario: A
DK      5
uGCN    0
Mix     7
GCN     0
-----------------
Dataset: MUTAG, cleaned: no
Scenario: B
DK      5
uGCN    0
Mix     6
GCN     1
-----------------
Dataset: PROTEINS, cleaned: yes
Scenario: A
DK      2
uGCN    1
Mix     0
GCN     9
-----------------
Dataset: PROTEINS, cleaned: no
Scenario: A
DK      0
uGCN    1
Mix     6
GCN     5
-----------------

Пожалуйста, ознакомьтесь с записной книжкой Colab для получения подробного отчета о производительности или обратитесь к этой сводке раундов (csv) или этой таблице Google.

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

Заключение

Как мы видим, эксперимент доказывает гипотезу о том, что в настройке прогнозирования свойств графа для небольших молекул мы можем иметь почти бесплатные вложения, которые превосходят по производительности или близко соответствуют сквозным обученным GCN в задачах классификации графов за небольшую часть стоимости . Эти результаты согласуются с результатами [2] в том, что концептуально распространение меток очень похоже на передачу сообщений в сверточных сетях Graph. Объяснение такой хорошей производительности, возможно, коренится в дилемме: должны ли мы настраивать параметры спектрального фильтра так, чтобы выходные вложения стали линейно разделяемыми, или просто выбрать более надежный классификатор, как мы только что сделали.

Разница в производительности между раундами еще раз напоминает, что каждый тест непростой. Стоит упомянуть теорему о бесплатном обеде и заявить, что использование нескольких моделей, скорее всего, будет хорошим выбором. Также стоит отметить, что разбиение действительно влияет на производительность - для одного и того же набора данных одни и те же модели демонстрируют существенно разное качество принимаемых решений. Вот почему при сравнительном анализе моделей убедитесь, что вы тренируете и тестируете их на идентичных данных. Кроме того, установка случайных семян - не панацея…

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

Послесловие

Я впервые публично рассказал об uGCN как о решении, которое можно использовать почти для всех, более двух лет назад на Встрече PyData-Lisbon, назвав его Королевский величественный ярлык через пространство Фурье, и собрал первый конвейер для классификации графов вокруг в тот раз, чтобы продемонстрировать силу сверток графов девушке, стремящейся запустить свой аэрокосмический стартап. Это эссе является побочным продуктом реального эксперимента (с личными данными), в котором мы могли незначительно превысить производительность, установленную крошечными моделями, после многих часов обучения.

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

Прежде чем окунуться в чудесный мир машинного обучения на графах, ознакомьтесь с основами. Прилагаются большие усилия, чтобы последние результаты (а также классические методы) были доступны широкой аудитории бесплатно. Назовем лишь некоторые из многих начинаний, заслуживающих внимания: cs224w учебная программа и лекции, Open Graph Benchmark [14] и недавняя работа по основам Geometric Deep Learning [15], которая обеспечивает четкую основу для создание новых архитектур, которые еще предстоит разработать. Еще одна вещь - всегда начинайте с простых базовых показателей, таких как методы ядра или сверточные сети с неконтролируемым графом - довольно часто эти крошечные модели превосходны.

Будьте устойчивы, используйте эффективные алгоритмы. Иногда не учиться - это сила.

использованная литература

[1] Кипф и Веллинг, Полууправляемая классификация с графовыми сверточными сетями (2017), Международная конференция по обучающим представлениям;
[2] Хуанг и др., Сочетание распространения меток и простых моделей превосходит графические нейронные сети ( 2021 г.), Международная конференция по обучающим представлениям;
[3] Скарселли и др., Модель графической нейронной сети (2009 г.), Транзакции IEEE в нейронных сетях (том: 20, выпуск: 1, январь 2009 г.); < br /> [4] Моррис и др., TUDataset: Сборник эталонных наборов данных для обучения с помощью графиков (2020 г.), ICML 2020 Workshop on Graph Presentation Learning and Beyond;
[5] Fey & Lenssen, Fast Graph Presentation Обучение с помощью PyTorch Geometric (2019), семинар ICLR по обучению представлению на графах и многообразиях;
[6] Иванов, Свиридов и Бурнаев, Понимание систематической ошибки изоморфизма в наборах данных графов (2019), препринт arXiv arXiv: 1910.12091;
[7] Ризен и Бунке, Репозиторий графической базы данных IAM для распознавания графовых образов a nd Machine Learning (2008 г.), In: da Vitora Lobo, N. et al. (Ред.), SSPR и SPR 2008, LNCS, т. 5342, pp. 287–297;
[8] Sutherland et al., Сплайновая подгонка с генетическим алгоритмом: метод развития отношений между структурой классификации и активностью (2003), J. Chem. Инф. Comput. Sci., 43, 1906–1915;
[9] Debnath et al., Взаимосвязь между структурой и активностью мутагенных ароматических и гетероароматических нитросоединений (1991), J. Med. Chem. 34 (2): 786–797;
[10] Dobson & Doig, Отличие ферментных структур от неферментных без выравнивания (2003), J. Mol. Biol., 330 (4): 771–783;
[11] Pedregosa et al., Scikit-learn: Machine Learning in Python (2011), JMLR 12, pp. 2825–2830;
[ 12] Waskom, seaborn: визуализация статистических данных (2021), Journal of Open Source Software, 6 (60), 3021; ​​
[13] Хантер, Matplotlib: 2D Graphics Environment (2007), Computing in Science & Engineering , т. 9, вып. 3, pp. 90–95;
[14] Hu et al., Open Graph Benchmark: Datasets for Machine Learning on Graphs (2020), препринт arXiv arXiv: 2005.00687;
[15] Bronstein et al. ., Геометрическое глубокое обучение: сетки, группы, графики, геодезические и датчики (2021 г.), препринт arXiv arXiv: 2104.13478.