0Pricing
Learn AI with Python · Leçon

Réseaux convolutifs de graphes (GCN)

Cadre de propagation des messages, GCNConv, agrégation des caractéristiques des nœuds, configuration de PyTorch Geometric.

Réseaux convolutifs de graphes (GCN) est une leçon Learn AI with Python gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn AI with Python, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn AI with Python comprend 4 leçons au total.

Des CNN aux GCN

Les CNN exploitent la structure en grille des images. Un réseau convolutif sur les graphes (GCN) généralise la convolution aux graphes irréguliers : chaque nœud peut mettre à jour sa représentation en utilisant les informations de ses voisins. Cette approche convient aux données qui ne possèdent pas de grille fixe.

Propagation de messages

Les GCN suivent le cadre de la propagation de messages : à chaque couche, chaque nœud (1) recueille les messages de ses voisins, (2) les agrège, puis (3) met à jour sa propre représentation vectorielle. Empiler les couches permet aux informations de circuler dans le graphe.

Agrégation des voisins

L’opération centrale consiste à agréger les caractéristiques des voisins. Une couche GCN simple calcule la moyenne des vecteurs de caractéristiques des voisins d’un nœud (ainsi que du nœud lui-même), puis applique une transformation linéaire apprise et une non-linéarité.

# For each node v:
#   h_v = activation( W * mean(features of v and its neighbors) )

Pourquoi normaliser l’adjacence

Les nœuds de degré élevé domineraient le résultat si nous additionnions naïvement les voisins. Les GCN utilisent l’adjacence normalisée pour mettre à l’échelle les contributions et maintenir stable l’amplitude des représentations vectorielles des nœuds, malgré leurs degrés différents.

La formule de normalisation

La normalisation symétrique ajoute des boucles sur les nœuds eux-mêmes, puis effectue une mise à l’échelle selon les degrés des nœuds. Elle s’écrit D^(-1/2) (A + I) D^(-1/2). Ajouter la matrice identité I permet à un nœud de conserver ses propres caractéristiques pendant l’agrégation.

# A_hat = A + I  (add self-loops)
# D_hat = degree matrix of A_hat
# A_norm = D_hat^(-1/2) * A_hat * D_hat^(-1/2)

PyTorch Geometric

PyTorch Geometric (PyG) est la bibliothèque standard pour les GNN dans PyTorch. Elle fournit des couches prêtes à l’emploi, comme GCNConv, qui implémentent pour vous la convolution avec propagation de messages normalisée.

import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConv

Une seule couche GCNConv

GCNConv(in_channels, out_channels) crée une convolution sur les graphes. Elle reçoit la matrice de caractéristiques des nœuds x et edge_index (la connectivité du graphe au format COO), puis renvoie les représentations vectorielles mises à jour des nœuds.

conv = GCNConv(in_channels=16, out_channels=32)
# x: [num_nodes, 16], edge_index: [2, num_edges]
h = conv(x, edge_index)  # -> [num_nodes, 32]

Un GCN à deux couches

Un GCN classique empile deux couches : la première projette les caractéristiques et agrège les voisins situés à un saut, tandis que la seconde agrège ceux situés à deux sauts. Chaque nœud dispose ainsi d’un champ réceptif de deux sauts.

class GCN(torch.nn.Module):
    def __init__(self, in_dim, hid, out):
        super().__init__()
        self.conv1 = GCNConv(in_dim, hid)
        self.conv2 = GCNConv(hid, out)

    def forward(self, x, edge_index):
        x = F.relu(self.conv1(x, edge_index))
        x = F.dropout(x, training=self.training)
        return self.conv2(x, edge_index)

Le champ réceptif augmente avec la profondeur

Chaque couche GCN étend le champ réceptif d’un nœud d’un saut supplémentaire. Deux couches voient les voisinages à deux sauts, trois couches ceux à trois sauts, et ainsi de suite. La profondeur permet à des informations éloignées d’atteindre un nœud.

Lissage excessif

Mais empiler trop de couches provoque un lissage excessif : les moyennes répétées des voisins font converger toutes les représentations vectorielles des nœuds vers un vecteur presque identique, ce qui détruit les distinctions nécessaires à la classification. C’est pourquoi la plupart des GCN utilisent seulement 2 ou 3 couches.

Réduire le lissage excessif

Pour lutter contre le lissage excessif, on peut utiliser des connexions résiduelles ou de saut, des réseaux à connaissances sautantes qui combinent les sorties des couches, ou simplement conserver un réseau peu profond. Les GCN peu profonds sont souvent plus performants que les réseaux profonds sur les jeux de données de référence courants.

Vérification rapide

Vérifiez vos connaissances sur les GCN.

Récapitulatif

Vous avez appris les réseaux convolutifs sur les graphes :

  • Les GCN suivent le cadre de la propagation de messages : ils agrègent les caractéristiques des voisins, puis effectuent une mise à jour
  • L’adjacence normalisée avec des boucles sur les nœuds eux-mêmes maintient la stabilité des représentations vectorielles
  • GCNConv dans PyTorch Geometric implémente une convolution
  • Une architecture courante est un GCN à deux couches
  • Une profondeur excessive provoque un lissage excessif

Questions Fréquemment Posées

La leçon « Réseaux convolutifs de graphes (GCN) » est-elle gratuite ?

Oui — le texte complet de « Réseaux convolutifs de graphes (GCN) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn AI with Python, passe à CoddyKit PRO. Le cours Learn AI with Python comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Réseaux convolutifs de graphes (GCN) » ?

Cadre de propagation des messages, GCNConv, agrégation des caractéristiques des nœuds, configuration de PyTorch Geometric. Tu pratiques Learn AI with Python avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Learn AI with Python ?

Aucune expérience préalable n'est requise. Learn AI with Python sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Réseaux convolutifs de graphes (GCN) » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Learn AI with Python ?

Oui. Chaque leçon Learn AI with Python inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Théorie des graphes pour l’apprentissage automatique
  2. Réseaux convolutifs de graphes (GCN)
  3. Classification de nœuds avec les GNN
  4. Prédiction de liens et classification de graphes
← Retour à Learn AI with Python