0Pricing
Learn AI with Python · Lekcja

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 GCNConv

Pojedyncza 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ń
  • GCNConv w 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

  1. Teoria grafów na potrzeby uczenia maszynowego
  2. Grafowe sieci konwolucyjne (GCN)
  3. Klasyfikacja węzłów za pomocą GNN
  4. Predykcja krawędzi i klasyfikacja grafów
← Powrót do Learn AI with Python