Grafowe sieci konwolucyjne (GCN)
Mechanizm przekazywania komunikatów, GCNConv, agregowanie cech węzłów, konfiguracja PyTorch Geometric.
Grafowe sieci konwolucyjne (GCN) to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Od CNN do GCN
Sieci CNN wykorzystują strukturę siatki w obrazach. Grafowa sieć konwolucyjna (GCN) uogólnia splot na grafy o nieregularnej strukturze, pozwalając każdemu węzłowi aktualizować swoją reprezentację za pomocą informacji od sąsiadów. Umożliwia to obsługę danych bez stałej siatki.
Przekazywanie komunikatów
Sieci GCN korzystają ze schematu przekazywania komunikatów: w każdej warstwie każdy węzeł (1) zbiera komunikaty od swoich sąsiadów, (2) agreguje je i (3) aktualizuje własne osadzenie. Łączenie warstw pozwala informacjom przepływać przez graf.
Agregowanie informacji od sąsiadów
Podstawową operacją jest agregowanie cech sąsiadów. Prosta warstwa GCN uśrednia wektory cech sąsiadów węzła (wraz z jego własnym wektorem), a następnie stosuje wyuczone przekształcenie liniowe i funkcję nieliniową.
# For each node v:
# h_v = activation( W * mean(features of v and its neighbors) )Dlaczego należy normalizować macierz sąsiedztwa
Węzły o dużym stopniu dominowałyby, gdybyśmy naiwnie sumowali informacje od sąsiadów. GCN używa znormalizowanej macierzy sąsiedztwa do skalowania udziału poszczególnych węzłów, dzięki czemu wielkość osadzeń węzłów pozostaje stabilna dla węzłów o różnym stopniu.
Wzór normalizacji
Normalizacja symetryczna najpierw dodaje pętle własne, a następnie skaluje macierz za pomocą stopni węzłów, co zapisujemy jako D^(-1/2) (A + I) D^(-1/2). Dodanie macierzy jednostkowej I pozwala węzłowi zachować własne cechy podczas agregowania.
# 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) to standardowa biblioteka do tworzenia GNN w PyTorch. Udostępnia gotowe warstwy, takie jak GCNConv, które implementują za Państwa znormalizowane przekazywanie komunikatów w splocie.
import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConvPojedyncza warstwa GCNConv
GCNConv(in_channels, out_channels) tworzy jeden splot grafowy. Przyjmuje macierz cech węzłów x oraz edge_index (połączenia grafu w formacie COO) i zwraca zaktualizowane osadzenia węzłów.
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]GCN z dwiema warstwami
Typowa sieć GCN składa się z dwóch warstw: pierwsza odwzorowuje cechy i agreguje informacje od sąsiadów oddalonych o jeden skok, a druga agreguje informacje z drugiego skoku, zapewniając każdemu węzłowi pole recepcyjne obejmujące dwa skoki.
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)Pole recepcyjne rośnie wraz z głębokością
Każda warstwa GCN rozszerza pole recepcyjne węzła o jeden skok. Dwie warstwy obejmują sąsiedztwa w odległości dwóch skoków, trzy warstwy — trzech skoków i tak dalej. Większa głębokość pozwala odległym informacjom dotrzeć do węzła.
Nadmierne wygładzanie
Jednak ułożenie zbyt wielu warstw powoduje nadmierne wygładzanie: wielokrotne uśrednianie informacji od sąsiadów sprawia, że osadzenia wszystkich węzłów zbliżają się do niemal tego samego wektora, niszcząc różnice potrzebne do klasyfikacji. Dlatego większość sieci GCN ma tylko 2 lub 3 warstwy.
Ograniczanie nadmiernego wygładzania
Techniki przeciwdziałania nadmiernemu wygładzaniu obejmują połączenia rezydualne/skrótowe, sieci jumping knowledge łączące wyniki poszczególnych warstw oraz po prostu utrzymywanie niewielkiej głębokości sieci. Płytkie sieci GCN często przewyższają głębokie na standardowych benchmarkach.
Szybki sprawdzian
Proszę sprawdzić swoją wiedzę o GCN.
Podsumowanie
Poznali Państwo grafowe sieci konwolucyjne:
- Sieci GCN korzystają ze schematu przekazywania komunikatów: agregują cechy sąsiadów, a następnie aktualizują własne
- Znormalizowana macierz sąsiedztwa z pętlami własnymi zapewnia stabilność osadzeń
GCNConvw PyTorch Geometric implementuje jeden splot- Typowa architektura to GCN z dwiema warstwami
- Zbyt duża głębokość powoduje nadmierne wygładzanie
Często zadawane pytania
Czy lekcja „Grafowe sieci konwolucyjne (GCN)” jest bezpłatna?
Tak — pełny tekst „Grafowe sieci konwolucyjne (GCN)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Grafowe sieci konwolucyjne (GCN)”?
Mechanizm przekazywania komunikatów, GCNConv, agregowanie cech węzłów, konfiguracja PyTorch Geometric. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Grafowe sieci konwolucyjne (GCN)”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Teoria grafów na potrzeby uczenia maszynowego
- Grafowe sieci konwolucyjne (GCN)
- Klasyfikacja węzłów za pomocą GNN
- Predykcja krawędzi i klasyfikacja grafów