Graph Neural Networks
graph neural networks (gnn) — нейросети для данных в виде графов
Graph Neural Networks (GNN) — класс нейросетей, который работает не с таблицами, картинками или текстами, а с графами: узлами и связями между ними. Социальные сети, молекулы, рекомендательные системы, транспортные сети — всё это естественно описывается графами. Под капотом — message passing: каждый узел собирает информацию у соседей, обновляет своё представление, и так несколько слоёв. Используется в Pinterest, Google Maps, AlphaFold, drug discovery.
Коротко
Коротко. Graph Neural Networks (GNN) — класс нейросетей для данных, естественно представимых в виде графов: узлы (объекты) + рёбра (связи). Под капотом — message passing: на каждом слое узел собирает сообщения от соседей и обновляет своё представление. Используется там, где связи важнее самих объектов: социальные сети (рекомендации друзей), молекулы (предсказание свойств), транспорт (оптимизация маршрутов), рекомендации, fraud detection. AlphaFold 3 (биология белков), Google Maps (ETA), Pinterest (рекомендации) — всё построено на GNN.
Что это такое
Большая часть нейросетей работает с регулярными структурами данных:
- Картинка — сетка пикселей. Идеально для CNN.
- Текст — последовательность токенов. Идеально для Transformer.
- Таблица — строки и колонки. Идеально для MLP.
Но многие реальные данные — нерегулярные, в виде графа:
- Социальная сеть — пользователи (узлы) и подписки/дружбы (рёбра).
- Молекула — атомы (узлы) и химические связи (рёбра).
- Транспортная сеть — перекрёстки и дороги.
- Knowledge graph — концепты и отношения.
- Код — функции и вызовы.
- Белок — аминокислоты в 3D и их взаимодействия.
Для таких данных нужна архитектура, которая естественно работает со связями. Это и есть GNN.
История:
- 2005-2009 — первые формулировки Graph Neural Network (Scarselli et al.).
- 2013-2016 — Graph Convolutional Networks (Kipf & Welling) — первый прорыв.
- 2017-2018 — Message Passing Neural Networks (MPNN), GraphSAGE, GAT (Graph Attention Network).
- 2019-2022 — production: Pinterest (PinSage), Uber (ETA), DeepMind (AlphaFold).
- 2023-2026 — взрыв в науке: AlphaFold 3 для белков, материаловедение, drug discovery.
Как это работает
Главная идея — message passing (передача сообщений). На каждом слое:
Для каждого узла v:
1. Собрать сообщения от всех соседей: m_i = MLP(h_neighbor_i, edge_type)
2. Агрегировать (sum / mean / max / attention): m = AGGREGATE(m_i)
3. Обновить представление узла: h_v = UPDATE(h_v, m)
После K слоёв каждый узел «знает» свою K-окрестность (друзей, друзей друзей и т.д.).
Основные варианты GNN
- GCN (Graph Convolutional Network) — простейшая, агрегация = взвешенное среднее соседей.
- GraphSAGE — sampling соседей для масштабирования (Pinterest использует).
- GAT (Graph Attention Network) — attention-механизм на соседях (как в Transformer).
- MPNN — общая абстракция с произвольной функцией message и update.
- GIN (Graph Isomorphism Network) — теоретически максимально выразительная.
- Graph Transformer — гибрид с classic transformer, для глобального внимания.
Что предсказывает GNN
- Node-level — свойство одного узла. Пример: «является ли этот пользователь спамером?».
- Edge-level — свойство связи. «Подружатся ли эти два пользователя?» (link prediction).
- Graph-level — свойство всего графа. «Является ли эта молекула токсичной?».
Почему не использовать обычную нейросеть
Можно представить граф как матрицу смежности (N×N) или как набор фичей узлов. Но:
- Размер. Для социальной сети с миллиардом пользователей матрица — 10^18 ячеек.
- Sparsity. В большинстве графов соседей у узла десятки, а не миллиарды.
- Permutation. Обычная сеть будет учить, что «5-й узел = Иван», а это бессмысленно.
- Heterogeneity. Разные типы узлов и рёбер — обычные сети плохо обрабатывают.
GNN решает все эти проблемы естественно.
Пример на практике
Pinterest строит рекомендательную систему. Граф:
- Узлы: ~3 миллиарда — pins (картинки) и boards (доски).
- Рёбра: «pin saved to board», ~18 миллиардов.
Задача: для пользователя, сохранившего pin X, рекомендовать похожие.
До GNN (классика): TF-IDF + collaborative filtering. Качество — посредственное.
С GNN (PinSage, 2018):
import torch
from torch_geometric.nn import SAGEConv
class PinSage(torch.nn.Module):
def __init__(self, hidden_dim):
super().__init__()
self.conv1 = SAGEConv(in_channels=128, out_channels=hidden_dim)
self.conv2 = SAGEConv(in_channels=hidden_dim, out_channels=hidden_dim)
def forward(self, x, edge_index):
h = torch.relu(self.conv1(x, edge_index))
h = self.conv2(h, edge_index)
return h # эмбеддинг каждого pin
# Поиск похожих:
embeddings = model(pin_features, edges)
similar = nearest_neighbors(embeddings[query_pin_id], k=10)
После внедрения — engagement +30%, save rate +20%. Это и есть power of GNN на real-world графах.
В науке GNN сделали возможной AlphaFold (предсказание структуры белка из последовательности). Молекула → граф → GNN → 3D-структура. Это получило Нобеля по химии 2024 для DeepMind.
В ComfyUI напрямую GNN не используется (там image/video pipeline), но похожие принципы — графовая структура самого workflow (узлы и связи между ними).
С чем часто путают
- GNN и Knowledge Graph — KG: способ представления данных. GNN: нейросеть, работающая с графами. GNN можно применить к Knowledge Graph.
- GNN и Transformer — Transformer работает с последовательностями. GNN — с графами. Graph Transformer — гибрид (transformer на графе с positional encoding по графу).
- GCN, GraphSAGE, GAT — разные архитектуры внутри семейства GNN. GCN — старейшая, GraphSAGE — для масштаба, GAT — с attention.
- Message passing и Information propagation — синонимы (с небольшими нюансами в реализации).
- GNN и Graph Database — GNN это нейросеть. Graph Database (Neo4j) — система хранения. Разные слои стека.
Частые ошибки и заблуждения
- «GNN всегда лучше для графов». Не всегда. На очень маленьких или плотных графах простой MLP с pooling может работать сопоставимо.
- «GNN — это про большие данные». Можно и на маленьких. Часто эффективны на ~1000 узлов (молекулы), ~миллион узлов (соц.сети).
- «Над GNN не нужно думать». Множество тонкостей: over-smoothing (после 5+ слоёв узлы становятся похожими), expressivity, обработка ребро-фич.
- «GNN требуют GPU как Transformer». Часто легче. Стандартная GCN на ~10K узлов обучается на CPU.
- «GNN — это академическая игрушка». Нет: Pinterest, Uber, Google Maps, Alibaba, Amazon — все используют GNN в production.
Связанные термины
- Neural Network — общая категория, GNN — её подкласс.
- Transformer — соседняя архитектура для последовательностей.
- Knowledge Graph — комплементарный концепт.
- Embedding — выход GNN — это эмбеддинги узлов.
- Deep Learning — GNN — часть deep learning эры.
Частые вопросы
Где GNN реально используется в production? Pinterest (PinSage — рекомендации), Uber (ETA — predicted arrival time), Google Maps (маршруты), Alibaba (рекомендации товаров), DeepMind (AlphaFold), Stripe (fraud detection), Twitter (рекомендации).
Какая библиотека лучшая? PyTorch Geometric — самая популярная. DGL — производительная альтернатива. Spektral — для TensorFlow/Keras. Для production — TigerGraph + GraphScope.
Сколько данных нужно? Зависит от задачи. Для node classification часто хватает полусамоконтролируемого обучения с 1-5% labeled узлов. Для graph-level — нужно много помеченных графов (обычно ~1000+).
Можно ли обучить дома? Да. GCN на ~100K узлов обучается на потребительском GPU за часы. Для масштаба Pinterest нужен кластер.
Что после GNN? Graph Transformers (с глобальным attention), GNN + LLM гибриды, Equivariant GNN для физики/молекул. Активная область исследований.
Главное
Graph Neural Networks (GNN) — класс нейросетей для данных, представимых в виде графов: социальные сети, молекулы, транспортные системы, рекомендации, knowledge graphs. Под капотом — message passing: каждый узел на каждом слое собирает информацию от соседей и обновляет своё представление. Главные варианты: GCN (старейшая), GraphSAGE (масштаб), GAT (с attention), Graph Transformer (гибрид). К 2026 — стандарт там, где связи важнее объектов: Pinterest, Google Maps, Uber, AlphaFold 3 (Нобель по химии 2024), drug discovery, материаловедение. Главное преимущество — permutation invariance и естественная работа с нерегулярными данными. Главная техническая проблема — over-smoothing на глубоких сетях. Библиотеки: PyTorch Geometric, DGL, Spektral. Активная и горячая область исследований 2026.