Grafkonvolutionsnetværk (GCN)
Message-passing-framework, GCNConv, aggregering af node features, opsætning af PyTorch Geometric.
Grafkonvolutionsnetværk (GCN) er en gratis Lær AI med Python-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Lær AI med Python, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Lær AI med Python-kurset indeholder 4 lektioner i alt.
Fra CNN'er til GCN'er
CNN'er udnytter gitterstrukturen i billeder. Et grafkonvolutionsnetværk (GCN) generaliserer konvolution til uregelmæssige grafer, så hver knude kan opdatere sin repræsentation ved hjælp af oplysninger fra sine naboer. Det håndterer data uden et fast gitter.
Meddelelsesudveksling
GCN'er følger rammeværket for meddelelsesudveksling: På hvert lag (1) indsamler hver knude meddelelser fra sine naboer, (2) aggregerer dem og (3) opdaterer sin egen indlejring. Når lagene stables, kan information flyde gennem grafen.
Aggregering af naboknuder
Den centrale operation er at aggregere naboknudernes egenskaber. Et simpelt GCN-lag beregner gennemsnittet af en knudes naboknuders egenskabsvektorer (samt knudens egen), og anvender derefter en lært lineær transformation og en ikke-linearitet.
# For each node v:
# h_v = activation( W * mean(features of v and its neighbors) )Hvorfor normalisere tilstødelsesmatricen
Knuder med mange kanter ville dominere, hvis vi naivt summerede naboerne. GCN bruger den normaliserede tilstødelsesmatrix til at skalere bidragene, så størrelsen af knudeindlejringerne forbliver stabil på tværs af knuder med forskellig grad.
Normaliseringsformlen
Den symmetriske normalisering tilføjer selvsløjfer og skalerer derefter efter knudernes grader, skrevet som D^(-1/2) (A + I) D^(-1/2). Når identitetsmatricen I tilføjes, kan en knude bevare sine egne egenskaber under aggregeringen.
# 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) er standardbiblioteket til GNN'er i PyTorch. Det indeholder færdige lag som GCNConv, der implementerer den normaliserede konvolution med meddelelsesudveksling for dig.
import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConvEt enkelt GCNConv-lag
GCNConv(in_channels, out_channels) opretter én grafkonvolution. Den modtager knudernes egenskabsmatrix x og edge_index (grafens forbindelser i COO-format) og returnerer opdaterede knudeindlejringer.
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]En GCN med to lag
En typisk GCN består af to lag: Det første projicerer egenskaberne og aggregerer oplysninger fra direkte naboer, mens det andet aggregerer oplysninger fra naboer to kanter væk, så hver knude får et påvirkningsområde på to kanter.
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)Det receptive felt vokser med dybden
Hvert GCN-lag udvider en knudes påvirkningsområde med ét naboskridt. To lag ser naboområder to skridt væk, tre lag ser områder tre skridt væk og så videre. Dybden gør det muligt for information på afstand at nå en knude.
Overudjævning
Hvis man derimod stabler for mange lag, opstår der overudjævning: Gentagen gennemsnitsberegning af naboer får alle knudeindlejringer til at nærme sig næsten den samme vektor, så de forskelle, der er nødvendige for klassifikation, forsvinder. Derfor bruger de fleste GCN'er kun 2 eller 3 lag.
Begrænsning af overudjævning
Teknikker til at modvirke overudjævning omfatter residualforbindelser og springforbindelser, netværk, der kombinerer resultater fra flere lag, samt ganske enkelt at holde netværket lavt. GCN'er med få lag klarer sig ofte bedre end dybe modeller på standardtests.
Hurtigt tjek
Test din viden om GCN'er.
Opsummering
Du har lært om grafkonvolutionsnetværk:
- GCN'er følger rammeværket for meddelelsesudveksling: De aggregerer naboknudernes egenskaber og opdaterer derefter knuderne
- Den normaliserede tilstødelsesmatrix med selvsløjfer holder indlejringerne stabile
GCNConvi PyTorch Geometric implementerer én konvolution- En almindelig arkitektur er en GCN med to lag
- For stor dybde medfører overudjævning
Lær Python med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 53
- Lektioner
- 225
Ofte stillede spørgsmål
Er lektionen “Grafkonvolutionsnetværk (GCN)” gratis?
Ja — alle 3 lektioner i læringssporet Lær AI med Python, inklusive “Grafkonvolutionsnetværk (GCN)”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Lær AI med Python-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Grafkonvolutionsnetværk (GCN)”?
Message-passing-framework, GCNConv, aggregering af node features, opsætning af PyTorch Geometric. Du øver dig i Lær AI med Python med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Lær AI med Python?
Der kræves ingen tidligere erfaring. Lær AI med Python på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Grafkonvolutionsnetværk (GCN)”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Lær AI med Python-lektion?
Ja. Alle Lær AI med Python-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Grafteori til machine learning
- Grafkonvolutionsnetværk (GCN)
- Nodeklassifikation med GNN
- Link prediction og grafklassifikation