Graph Convolutional Network (GCN)
Framework di message passing, GCNConv, aggregazione delle feature dei nodi, configurazione di PyTorch Geometric
Graph Convolutional Network (GCN) è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Dalle CNN alle GCN
Le CNN sfruttano la struttura a griglia delle immagini. Una Graph Convolutional Network (GCN) generalizza la convoluzione ai grafi irregolari, consentendo a ogni nodo di aggiornare la propria rappresentazione usando le informazioni dei nodi vicini. Questo permette di gestire dati privi di una griglia fissa.
Passaggio di messaggi
Le GCN seguono il framework del passaggio di messaggi: a ogni livello, ogni nodo (1) raccoglie i messaggi dai nodi vicini, (2) li aggrega e (3) aggiorna il proprio embedding. La sovrapposizione di più livelli permette alle informazioni di propagarsi attraverso il grafo.
Aggregazione dei vicini
L'operazione fondamentale consiste nell'aggregare le caratteristiche dei vicini. Un semplice livello GCN calcola la media dei vettori delle caratteristiche dei vicini di un nodo (incluso il nodo stesso), quindi applica una trasformazione lineare appresa e una non linearità.
# For each node v:
# h_v = activation( W * mean(features of v and its neighbors) )Perché normalizzare l'adiacenza
I nodi con molti archi dominerebbero il risultato se sommassimo ingenuamente i vicini. La GCN usa la matrice di adiacenza normalizzata per ridimensionare i contributi, mantenendo stabile il modulo degli embedding dei nodi con gradi diversi.
La formula di normalizzazione
La normalizzazione simmetrica aggiunge i self-loop e poi ridimensiona in base ai gradi dei nodi, come indicato da D^(-1/2) (A + I) D^(-1/2). L'aggiunta della matrice identità I consente a un nodo di conservare le proprie caratteristiche durante l'aggregazione.
# 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) è la libreria standard per le GNN in PyTorch. Fornisce livelli già pronti, come GCNConv, che implementano per Lei la convoluzione con passaggio di messaggi normalizzato.
import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConvUn singolo livello GCNConv
GCNConv(in_channels, out_channels) crea una convoluzione sul grafo. Riceve la matrice delle caratteristiche dei nodi x e edge_index (la connettività del grafo in formato COO) e restituisce gli embedding aggiornati dei nodi.
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]Una GCN a 2 livelli
Una GCN tipica sovrappone due livelli: il primo proietta le caratteristiche e aggrega i vicini a un hop di distanza, mentre il secondo aggrega quelli a due hop, fornendo a ogni nodo un campo ricettivo di 2 hop.
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)Il campo ricettivo cresce con la profondità
Ogni livello GCN amplia di un hop il campo ricettivo di un nodo. Due livelli considerano vicinati a 2 hop, tre livelli vicinati a 3 hop e così via. La profondità permette alle informazioni distanti di raggiungere un nodo.
Over-smoothing
Tuttavia, sovrapporre troppi livelli causa l'over-smoothing: la ripetuta media dei vicini fa convergere gli embedding di tutti i nodi verso vettori quasi identici, eliminando le differenze necessarie per la classificazione. Per questo la maggior parte delle GCN usa solo 2 o 3 livelli.
Contrastare l'over-smoothing
Le tecniche per contrastare l'over-smoothing includono connessioni residue/skip, reti jumping-knowledge che combinano le uscite dei vari livelli e il semplice mantenimento di una rete poco profonda. Le GCN poco profonde spesso superano quelle profonde nei benchmark standard.
Verifica rapida
Verifichi le Sue conoscenze sulle GCN.
Riepilogo
Ha appreso le Graph Convolutional Networks:
- Le GCN seguono il framework del passaggio di messaggi: aggregano le caratteristiche dei vicini e poi aggiornano il nodo
- La matrice di adiacenza normalizzata con self-loop mantiene stabili gli embedding
GCNConvin PyTorch Geometric implementa una convoluzione- Un'architettura comune è una GCN a 2 livelli
- Una profondità eccessiva causa l'over-smoothing
Domande Frequenti
La lezione «Graph Convolutional Network (GCN)» è gratuita?
Sì — il testo completo di «Graph Convolutional Network (GCN)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Graph Convolutional Network (GCN)»?
Framework di message passing, GCNConv, aggregazione delle feature dei nodi, configurazione di PyTorch Geometric Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Graph Convolutional Network (GCN)»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Teoria dei grafi per il machine learning
- Graph Convolutional Network (GCN)
- Classificazione dei nodi con le GNN
- Predizione dei link e classificazione dei grafi