Graph Neural Networks

graph neural networks (gnn) — нейросети для данных в виде графов

Раздел
Основы AI
Сокращ.
GNN
Обновлено
18.05.26

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

  1. Node-level — свойство одного узла. Пример: «является ли этот пользователь спамером?».
  2. Edge-level — свойство связи. «Подружатся ли эти два пользователя?» (link prediction).
  3. 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.

Связанные термины

Частые вопросы

Где 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.