Графовые нейронные сети¶
Графовые нейронные сети (Graph Neural Networks, GNNs)¶
Графовые нейронные сети - это частный класс нейронных сетей, которые предназначены для работы с графовыми данными. В привычных для нас сетях, таких как полносвязные или сверточные нейронные сети, входные данные обычно представляют собой векторы или тензоры, но в графовых нейронных сетях входные данные представляют собой графы.
Граф¶
Граф обычно определяется как \(G = (V, E)\), где \(V\) - множество вершин (узлов), а \(E\) - множество ребер. Вершина \(v_i \in V\) может иметь признаки, обозначаемые как \(x_i\). Ребро \((v_i, v_j) \in E\) может иметь свои признаки, обозначаемые как \(e_{ij}\).
Графовая свертка¶
Одним из основных компонентов графовых нейронных сетей является операция графовой свертки. В сверточных нейронных сетях, свертка обеспечивает агрегацию информации от ближайших соседей. Аналогичная идея применяется в графовых нейронных сетях, где ближайшими соседями являются соседние вершины в графе.
Операция графовой свертки может быть формализована следующим образом: для каждой вершины \(v_i\) мы агрегируем информацию от ее соседей \(N_i\) следующим образом:
где \(h_i^{(l)}\) - это скрытое состояние вершины \(v_i\) на слое \(l\), \(W^{(l)}\) - это матрица весов на слое \(l\), \(\sigma\) - это функция активации, и \(N_i\) - это множество соседей вершины \(v_i\).
Графовая сверточная сеть (Graph Convolutional Network, GCN)¶
Одним из основных типов графовых нейронных сетей является Графовая Сверточная Сеть (GCN). Она вычисляет скрытые состояния вершин в графе с помощью операции графовой свертки:
где \(A\) - матрица смежности графа, \(D\) - диагональная матрица степеней (где \(D_{ii}\) - это степень вершины \(i\)), \(H^{(l)}\) - матрица скрытых состояний на слое \(l\), и \(W^{(l)}\) - матрица весов на слое \(l\).
Примечание: обычно \(A\) модифицируется для включения self-loops (петель), что позволяет учитывать собственные признаки вершин в свертке.
Применения GNNs¶
Графовые нейронные сети широко применяются в различных задачах, таких как предсказание свойств молекул, классификация графов, связность узлов, и других задачах, где данные имеют структуру графа.