# Графовые нейронные сети: как GNN объединяют соцсети, химию и навигацию Google

Источник: https://www.youtube.com/watch?v=0niIwb37nF0
Канал: MIT OpenCourseWare
Опубликовано: 11.02.2026

---

Профессор Массачусетского технологического института (MIT) Филип Изола открывает пятую лекцию курса по архитектурам глубокого обучения, посвящая её графовым нейронным сетям (GNN). По мнению Изолы, глубокое обучение — это «самая красивая математика», а графы — универсальный язык для описания связей в мире, от социальных сетей до молекулярных структур.

## 🕸️ Почему графы повсюду: от соцсетей до физики
[[JUMP:04:06]]

Филип Изола [00:28] начинает с того, что графовые структуры являются естественным способом представления данных во многих областях. В отличие от стандартных табличных данных, графы описывают объекты (узлы) и их взаимоотношения (ребра).

Сферы применения графовых моделей, упомянутые в лекции:

*   **Социальные сети:** Пользователи и их дружеские связи [04:34].
*   **Биология и генетика:** Взаимодействие генов и белков [05:01].
*   **Химия:** Молекулы как графы, где атомы — узлы, а химические связи — ребра [07:41]. Это критически важно для предсказания токсичности лекарств [08:22].
*   **Веб-поиск:** Алгоритм PageRank от Google, рассматривающий интернет как граф гиперссылок [05:26].
*   **Логистика и навигация:** Google Maps использует графы дорог для поиска кратчайшего пути [09:42].
*   **Физика:** Моделирование динамики жидкостей и частиц как системы взаимодействующих узлов [11:14].

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

## 🧱 Архитектура GNN: как это работает
[[JUMP:14:02]]

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

1.  **Матрица смежности (Adjacency Matrix):** Описывает топологию графа (кто с кем соединен) [15:09].
2.  **Атрибуты узлов:** Векторы признаков для каждого узла (например, тип атома в молекуле) [14:28].

### Проблема обычных нейросетей (MLP)
Если просто «развернуть» матрицу смежности в один длинный вектор и подать её в обычный перцептрон (MLP), возникнет проблема **чувствительности к перестановке** (permutation sensitivity) [20:44]. По словам Изолы, выбор индексов для узлов (какой узел будет первым, какой — четвертым) абсолютно произволен. Модель должна выдавать один и тот же результат, как бы мы ни перемешали строки и столбцы в матрице смежности, если структура графа осталась прежней. Это свойство называется **инвариантностью к перестановкам** [21:56].

### Алгоритм передачи сообщений (Message Passing)
[[JUMP:32:59]]

Основной цикл работы GNN состоит из двух повторяющихся шагов для каждого слоя $k$:

1.  **Агрегация (Aggregate):** Узел собирает «сообщения» (векторы признаков) от всех своих соседей [33:53]. Функция агрегации должна быть инвариантной к порядку соседей (например, сумма, среднее или максимум) [37:08].
2.  **Обновление (Update):** Узел объединяет собранное сообщение со своим собственным текущим вектором признаков, чтобы получить новое представление [34:49].

Этот процесс повторяется $k$ раз, что позволяет информации распространяться по графу. После $k$ шагов каждый узел «знает» о своих соседях на расстоянии $k$ хопов [35:18].

## 🔄 GNN как обобщение других архитектур
[[JUMP:54:32]]

Изола подчеркивает, что многие знакомые архитектуры — это лишь частные случаи графовых сетей:

*   **MLP (Многослойный перцептрон):** Это GNN, состоящая всего из одного узла без связей [55:51].
*   **CNN (Сверточные нейросети):** Это GNN, работающая на регулярной сетке (решетке), где у каждого узла фиксированное количество соседей в строго определенных позициях [56:03].
*   **Трансформеры (Transformers):** Это GNN на полносвязном графе (каждый узел соединен с каждым), где в качестве функции агрегации используется механизм внимания (attention) [57:10].

## 📐 Теоретические пределы: что GNN не могут «увидеть»
[[JUMP:1:06:33]]

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

Существуют пары графов, которые структурно различны, но для GNN выглядят абсолютно одинаково [1:09:16]. Это происходит потому, что GNN видит мир через «дерево окрестностей». Если деревья развертки для всех узлов в двух разных графах совпадают, сеть выдаст идентичные предсказания для обоих [1:08:49].

Филип Изола проводит параллель с классической теорией графов:

*   Мощность GNN по различению графов эквивалентна **тесту Вайсфейлера — Лемана (1-WL algorithm)**, разработанному еще в 1960-х годах [1:11:44].
*   GNN не могут определить такие свойства, как длина самого длинного цикла или диаметр графа [1:18:35].

## 🛠️ Практические нюансы и инструменты
[[JUMP:1:15:31]]

Профессор приводит пример того, как мелкие детали реализации влияют на результат:

*   **Сумма vs Среднее:** Использование среднего арифметического (Mean) вместо суммы (Sum) при агрегации может резко снизить точность [1:17:29]. По мнению Изолы, среднее «теряет» информацию о количестве соседей (степени узла), что критично для многих задач [1:18:09].
*   **Позиционное кодирование:** Чтобы обойти ограничения и различать изоморфные (с точки зрения 1-WL) графы, узлам можно добавлять информацию об их положении. Популярный метод — использование собственных векторов Лапласиана графа (graph Laplacian eigenvectors) [1:20:10].

Для реализации GNN в коде участникам рекомендуется использовать специализированные библиотеки (хотя конкретные названия инструментов вроде PyTorch Geometric не звучат, упоминается общая работа в PyTorch [1:16:09]).

### Как обучить свою GNN (пошаговый алгоритм):

1.  **Подготовить данные:** Представить входные данные в виде списка узлов с признаками и списка ребер (матрицы смежности) [1:02:42].
2.  **Выбрать функции:** Определить функцию агрегации (например, MLP + Sum) и функцию обновления (например, Linear + ReLU) [1:03:50].
3.  **Определить задачу:**
    *   Классификация узлов (например, предсказать интересы пользователя) [06:07].
    *   Классификация графа (например, предсказать токсичность молекулы) — в этом случае добавляется финальный шаг «считывания» (readout), агрегирующий все узлы в один вектор [46:07].
4.  **Запустить обучение:** Использовать стандартный метод обратного распространения ошибки (backpropagation) через развернутый граф вычислений [54:06].