Les Graph Neural Networks sont des réseaux de neurones conçus pour opérer directement sur des structures de graphes. La plupart des données du monde réel sont naturellement des graphes : réseaux sociaux, molécules, codes source, connaissances, routage réseau.

Pourquoi les graphes ?§

Les architectures classiques (CNN, RNN) supposent des données structurées (grilles, séquences). Les graphes brisent ces hypothèses :

PropriétéGrille (image)Séquence (texte)Graphe
StructureRégulière, fixeOrdonnéeIrrégulière, variable
VoisinageFixe (3×3)Fixe (gauche/droite)Variable (degrés différents)
OrdreDéfiniDéfiniArbitraire (permutation-invariant)

Applications :

Représentation d’un graphe§

Un graphe G = (V, E) comprend :

Principe fondamental : Message Passing§

L’idée centrale de la plupart des GNN est le message passing : chaque nœud agrège les informations de ses voisins pour mettre à jour sa représentation.

graph LR
    subgraph "Itération t"
        v[Nœud v\nhᵥᵗ]
        u1[Voisin u₁\nhᵤ₁ᵗ] -->|message| agg
        u2[Voisin u₂\nhᵤ₂ᵗ] -->|message| agg
        u3[Voisin u₃\nhᵤ₃ᵗ] -->|message| agg
        agg[Agrégation\nmᵥᵗ] --> upd[Mise à jour\nhᵥᵗ⁺¹]
        v --> upd
    end

Formule générale :

mᵥᵗ = AGGREGATE({hᵤᵗ : u ∈ N(v)})   # Agrégation des voisins
hᵥᵗ⁺¹ = UPDATE(hᵥᵗ, mᵥᵗ)            # Mise à jour du nœud

Après K couches, chaque nœud encode l’information de son voisinage à distance K.

GCN — Graph Convolutional Network (Kipf & Welling, 2017)§

Variante spectrale simplifiée. Agrégation par somme pondérée normalisée.

H⁽ˡ⁺¹⁾ = σ( D̃⁻¹/² Ã D̃⁻¹/² H⁽ˡ⁾ W⁽ˡ⁾ )
import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConv

class GCN(torch.nn.Module):
    def __init__(self, input_dim, hidden_dim, output_dim):
        super().__init__()
        self.conv1 = GCNConv(input_dim, hidden_dim)
        self.conv2 = GCNConv(hidden_dim, output_dim)

    def forward(self, x, edge_index):
        x = F.relu(self.conv1(x, edge_index))
        x = F.dropout(x, p=0.5, training=self.training)
        x = self.conv2(x, edge_index)
        return F.log_softmax(x, dim=1)

Limitation : agrégation non différenciée → tous les voisins ont le même poids.

GAT — Graph Attention Network (Veličković et al., 2018)§

Introduit un mécanisme d’attention pour pondérer différemment les voisins.

αᵢⱼ = softmax( LeakyReLU( aᵀ [Whᵢ ‖ Whⱼ] ) )
h'ᵢ = σ( Σⱼ αᵢⱼ · Whⱼ )

Avantage : apprend quels voisins sont importants, interprétable.

GraphSAGE (Hamilton et al., 2017)§

Conçu pour l’inductive learning : capable de généraliser à des nœuds non vus pendant l’entraînement (scalable aux grands graphes).

hᵥˡ = σ( W · CONCAT(hᵥˡ⁻¹, AGG({hᵤˡ⁻¹ : u ∈ N(v)})) )

Agrégateurs disponibles : Mean, Max, LSTM (sur voisins ordonnés aléatoirement)

Neighborhood sampling : au lieu d’utiliser tous les voisins (potentiellement très nombreux), échantillonne un nombre fixe de voisins par couche → passage à l’échelle.

Tâches sur les graphes§

graph TD
    taches[Tâches GNN]
    taches --> node[Classification de nœuds\nex: type d'utilisateur\ndans un réseau social]
    taches --> link[Prédiction de lien\nex: recommandation\nconnexion future]
    taches --> graph[Classification de graphes\nex: molécule toxique\nou non]
    taches --> gen[Génération de graphes\nex: molécule optimale]

Readout (graph-level prediction) : pour obtenir une représentation du graphe entier, agréger toutes les représentations de nœuds :

h_G = READOUT({hᵥ : v ∈ V})

(Somme, moyenne, max, ou attention hiérarchique)

Limites des GNN§

Surissage (Over-smoothing) : avec trop de couches, toutes les représentations de nœuds convergent vers la même valeur → perte de discrimination. En pratique, 2-3 couches suffisent souvent.

Goulot d’étranglement (Bottleneck) : pour atteindre des nœuds distants, l’information doit passer par tous les nœuds intermédiaires, se compressant à chaque couche.

Over-squashing : l’information de voisinages exponentiellement larges est compressée dans un vecteur de taille fixe.

Expressivité : les GNN à base de message passing ne peuvent pas distinguer certains graphes non-isomorphes (théorème de Weisfeiler-Lehman).

GNN avancés§

ModèleInnovationUsage
GIN (Graph Isomorphism Network)Maximise l’expressivité (WL-test)Classification de graphes
MPNNFramework général pour chimiePropriétés moléculaires
DiffPoolPooling hiérarchique différentiableGraphes complexes
Graph TransformerSelf-attention globale sur grapheLongues dépendances
SchNet, DimeNetGNN sur molécules 3DDrug discovery

Comparaison des variantes§

ModèleAgrégationPoints fortsLimitation
GCNSomme normaliséeSimple, efficacePoids égaux
GATAttention appriseInterprétable, sélectifCoût mémoire
GraphSAGEMean/Max/LSTMScalable, inductifPas d’attention
GINSomme + MLPMaximalement expressifPlus complexe