Opanowanie grafowych sieci neuronowych – od wykresów po spostrzeżenia

Opanowanie grafowych sieci neuronowych – od wykresów po spostrzeżenia

Węzeł źródłowy: 2545835

Wprowadzenie

Opanowanie grafowych sieci neuronowych jest ważnym narzędziem do przetwarzania i uczenia się na podstawie danych o strukturze graficznej. Ta kreatywna metoda zmieniła wiele dziedzin, w tym opracowywanie leków, systemy rekomendacji, analizę sieci społecznościowych i nie tylko. Przed zagłębieniem się w podstawy i implementację GNN konieczne jest zrozumienie podstawowych pojęć związanych z grafami, w tym węzłami, wierzchołkami i reprezentacjami, takimi jak macierze sąsiedztwa lub listy. Jeśli dopiero zaczynasz przygodę z wykresami, warto zapoznać się z tymi podstawami przed zapoznaniem się z sieciami GNN.

 Cele kształcenia

  • Przedstaw czytelnikom podstawy grafowych sieci neuronowych (GNN).
  • Poznaj ewolucję sieci GNN od tradycyjnych sieci neuronowe.
  • Podaj przykład implementacji krok po kroku sieci GNN do klasyfikacji węzłów.
  • Zilustruj kluczowe pojęcia, takie jak uczenie się reprezentacji, osadzanie węzłów i przewidywania na poziomie wykresu.
  • Podkreśl wszechstronność i zastosowania sieci GNN w różnych dziedzinach.

Spis treści

Wykorzystanie grafowych sieci neuronowych

Grafowe sieci neuronowe znajdują szerokie zastosowanie w dziedzinach, w których dane są naturalnie przedstawiane w postaci wykresów. Niektóre kluczowe obszary, w których sieci GNN są szczególnie przydatne, obejmują:

  • Analiza sieci społecznościowej: Sieci GNN mogą analizować sieci społecznościowe w celu identyfikacji społeczności, osób wpływowych i wzorców przepływu informacji.
  • Systemy rekomendacji: Sieci GNN przodują w spersonalizowanych systemach rekomendacji, analizując interakcje między użytkownikiem a elementem na wykresie.
  • Odkrycie narkotyków: Sieci GNN mogą modelować struktury molekularne w postaci wykresów, pomagając w odkrywaniu leków i przewidywaniu właściwości chemicznych.
  • Wykrywanie oszustw: Sieci GNN mogą wykrywać nietypowe wzorce w transakcjach finansowych przedstawiane w formie wykresów, usprawniając systemy wykrywania oszustw.
  • Optymalizacja przepływu ruchu: Sieci GNN mogą optymalizować przepływ ruchu, analizując sieci drogowe i prognozując wzorce zatorów.

Prawdziwy scenariusz przypadku: analiza sieci społecznościowej

W przypadku sieci neuronowych Mastering Graph rozważmy rzeczywisty scenariusz, w którym sieci GNN są stosowane do analizy sieci społecznościowych. Wyobraź sobie platformę mediów społecznościowych, na której użytkownicy wchodzą w interakcję poprzez śledzenie, polubienie i udostępnianie treści. Każdy użytkownik i fragment treści można przedstawić jako węzły na wykresie, których krawędzie wskazują interakcje.

Problem Statement

Chcemy zidentyfikować wpływowych użytkowników w sieci, aby zoptymalizować kampanie marketingowe i strategie promocji treści.

Podejście GNN

Rozwiązaniem powyższego problemu jest podejście GNN. Zagłębmy się w rozwiązanie:

  • Osadzanie węzłów: Użyj sieci GNN, aby nauczyć się osadzania każdego węzła użytkownika, rejestrując jego wpływ i wzorce zaangażowania.
  • Wykrywanie społeczności: Zastosuj w oparciu o GNN algorytmy wykrywania społeczności w celu identyfikacji grup użytkowników o podobnych zainteresowaniach lub zachowaniach.
  • Przewidywanie wpływu: Wytrenuj model GNN, aby przewidywał wpływ użytkowników na podstawie ich interakcji w sieci i poziomów zaangażowania.

Biblioteki dla grafowych sieci neuronowych

Oprócz popularnych bibliotek, takich jak PyTorch Geometric i DGL (Deep Graph Library), istnieje kilka innych bibliotek, których można używać w Graph Neural Networks:

  • WykresSAGE: Biblioteka do uczenia się reprezentacji indukcyjnej na dużych wykresach.
  • Wykres gwiazdowy: Oferuje skalowalne algorytmy i struktury danych dla wykresu uczenie maszynowe.
  • Spektralne: Koncentruje się na grafowych sieciach neuronowych dla Keras i TensorFlow.

Przechowywanie danych i formatów wykresów

Dane wykresu można przechowywać w różnych formatach, w zależności od rozmiaru i złożoności wykresu. Typowe formaty przechowywania obejmują:

  • Macierz sąsiedztwa: Macierz kwadratowa reprezentująca połączenia między węzłami. Nadaje się do małych wykresów.
  • Listy sąsiedztwa: Listy sąsiadów dla każdego węzła, efektywne w przypadku grafów rzadkich.
  • Lista krawędzi: Prosta lista krawędzi, odpowiednia do podstawowych reprezentacji grafów.
  • Bazy danych wykresów: Wyspecjalizowane bazy danych, takie jak Neo4j lub Amazon Neptune, przeznaczone do przechowywania i wysyłania zapytań do danych wykresów na dużą skalę.

 Wykres wiedzy a wykres GNN

Wykres wiedzy i wykres GNN służą różnym celom i mają odrębną strukturę:

  • Wykres wiedzy: Koncentruje się na reprezentowaniu wiedzy ze świata rzeczywistego za pomocą jednostek, atrybutów i relacji. Jest często używany w semantycznych aplikacjach internetowych i reprezentacji wiedzy.
  • Wykres GNN: Reprezentuje dane dla uczenie maszynowe zadania wykorzystujące węzły, krawędzie i funkcje. Sieci GNN działają na tych wykresach, aby uczyć się wzorców, dokonywać prognoz i wykonywać zadania, takie jak klasyfikacja węzłów lub przewidywanie połączeń.

Ewolucja grafowych sieci neuronowych

Grafowe sieci neuronowe są rozszerzeniem tradycyjnych sieci neuronowych zaprojektowanych do obsługi danych o strukturze graficznej. W przeciwieństwie do tradycyjnych sieci neuronowych z wyprzedzeniem, sieci GNN mogą skutecznie uchwycić zależności i interakcje między węzłami na wykresie.

Sieci GNN są jak inteligentni detektywi zajmujący się wykresami. Wyobraź sobie, że każdy węzeł na wykresie to osoba, a krawędzie między nimi to połączenia lub relacje. GNN to detektywi, którzy poznają te osoby i ich relacje, aby rozwiązać zagadki lub dokonać przewidywań.

  • Nauka reprezentacji: Sieci GNN uczą się reprezentować dane wykresu w sposób, który oddaje zarówno strukturę wykresu (kto jest z kim połączony), jak i cechy każdego węzła (np. cechy osoby).
  • Osadzanie węzłów: Każdy węzeł otrzymuje nową reprezentację zwaną osadzeniem. To jakby podsumowanie, które zawiera informacje o samym węźle i jego połączeniach na wykresie.
  • Korzystanie z osadzania węzłów: Aby przewidzieć rzeczy dotyczące poszczególnych węzłów (takich jak ich kategoria lub etykieta), możemy bezpośrednio wykorzystać ich osadzenie. To tak, jakby patrzeć na profil danej osoby, aby lepiej ją zrozumieć.
  • Prognozy na poziomie wykresu: Jeśli chcemy zrozumieć cały wykres lub dokonać prognoz dotyczących całej sieci, łączymy w inteligentny sposób wszystkie osadzania węzłów, aby uzyskać podsumowanie całego wykresu. To jak oddalenie, żeby zobaczyć większy obraz.
  • Operacja łączenia: Możemy również skompresować wykres do reprezentacji o stałym rozmiarze, korzystając z łączenia. To jak skondensowanie historii w krótkie streszczenie bez utraty ważnych szczegółów.
  • Podobieństwo w osadzaniu: Węzły lub wykresy, które są podobne (w oparciu o funkcje lub kontekst), będą miały podobne osadzenie. To jak rozpoznawanie podobnych wzorców lub tematów w różnych historiach.
  • Funkcje krawędzi: Sieci GNN mogą również współpracować z funkcjami brzegowymi (informacjami o połączeniach między węzłami) i włączać je do osadzania węzłów. To jak dodanie dodatkowych szczegółów do profilu każdej osoby na podstawie ich relacji.

Wymagania dotyczące danych dla sieci GNN

  • Struktura wykresu: Węzły i krawędzie definiujące graf.
  • Funkcje węzła: Wektory cech powiązane z każdym węzłem (np. profile użytkowników, atrybuty pozycji).
  • Funkcje krawędzi: Opcjonalne atrybuty powiązane z krawędziami (np. wagi krawędzi, odległości).

Jak działają grafowe sieci neuronowe?

Aby zrozumieć, jak działają grafowe sieci neuronowe (GNN), użyjmy prostego przykładowego scenariusza obejmującego wykres sieci społecznościowej. Załóżmy, że mamy wykres przedstawiający sieć społecznościową, w której węzły to pojedyncze osoby, a krawędzie oznaczają przyjaźnie między nimi. Każdy węzeł (osoba) ma powiązane cechy, takie jak wiek, zainteresowania i lokalizacja.

Reprezentacja wykresu

  • Węzły: Każdy węzeł reprezentuje osobę w sieci społecznościowej i ma powiązane cechy, takie jak wiek, zainteresowania (np. sport, muzyka) i lokalizacja.
  • Krawędzie: Krawędzie między węzłami reprezentują przyjaźnie lub powiązania między jednostkami.
  • Początkowe cechy węzła: Każdy węzeł (osoba) na wykresie ma swój własny zestaw cech (np. wiek, zainteresowania, lokalizacja).

Przekazywanie wiadomości

Przekazywanie wiadomości jest podstawową operacją sieci GNN. Oto jak to działa:

  • Agregacja sąsiedzka: Każdy węzeł zbiera informacje od sąsiadujących węzłów. Na przykład dana osoba może zbierać informacje o zainteresowaniach i lokalizacjach swoich znajomych.
  • Kombinacja informacji: Zebrane informacje są łączone w określony sposób z cechami własnymi węzła (np. za pomocą sumy ważonej lub tzw sieci neuronowe warstwa).
  • Zaktualizuj funkcje węzła: Na podstawie zebranych i połączonych informacji każdy węzeł aktualizuje swoje własne funkcje, tworząc nowe osadzania lub reprezentacje, które przechwytują zarówno jego własne atrybuty, jak i atrybuty sąsiadów.

Splot wykresu

Ten proces gromadzenia, łączenia i aktualizowania cech węzłów jest podobny do splotu wykresu. Rozszerza koncepcję splotu (wykorzystywaną w przetwarzaniu obrazu) na nieregularne struktury grafów.

Grafuj sieci neuronowe

Zamiast oplatać regularną siatkę pikseli, sieci GNN owijają się wokół węzłów i krawędzi wykresu, wykorzystując relacje lokalnego sąsiedztwa do wydobywania i rozpowszechniania informacji.

Proces iteracyjny

Sieci GNN często działają wielowarstwowo. W każdej warstwie:

  • Węzły wymieniają wiadomości ze swoimi sąsiadami.
  • Wymieniane informacje są agregowane i wykorzystywane do aktualizacji osadzania węzłów.
  • Te zaktualizowane osadzania są następnie przekazywane do następnej warstwy w celu dalszego udoskonalenia.
  • Iteracyjny charakter komunikatów przekazywanych przez warstwy pozwala sieciom GNN uchwycić na wykresie coraz bardziej złożone wzorce i zależności.

Wydajność

Po kilku warstwach przekazywania wiadomości i aktualizacji funkcji, końcowe osadzenie węzłów może zostać wykorzystane do różnych dalszych zadań, takich jak klasyfikacja węzłów (np. przewidywanie zainteresowań), przewidywanie linków (np. sugerowanie nowych przyjaźni) lub zadania na poziomie wykresu (np. wykrywanie społeczności).

Zrozumienie przekazywania wiadomości

Zagłębmy się w działanie sieci GNN, stosując bardziej graficzne i matematyczne podejście, koncentrując się na pojedynczym węźle. Rozważmy wykres pokazany poniżej i skoncentrujemy się na szarym węźle oznaczonym jako 5.

Opanowanie grafowych sieci neuronowych

Inicjalizacji

Rozpocznij od zainicjowania reprezentacji węzłów przy użyciu odpowiadających im wektorów cech.

Opanowanie grafowych sieci neuronowych

Przekazywanie wiadomości

Iteracyjnie aktualizuj reprezentacje węzłów, agregując informacje z sąsiednich węzłów. Zwykle odbywa się to za pomocą funkcji przekazywania komunikatów, które łączą cechy sąsiednich węzłów.

Opanowanie grafowych sieci neuronowych

Tutaj węzeł 5, który ma dwóch sąsiadów (węzły 2 i 4), uzyskuje informację o swoim stanie i stanach węzłów sąsiednich. Stany te są zwykle oznaczane jako (h), reprezentujące bieżący krok czasowy (k).

Zbiór

Agreguj wiadomości od sąsiadów przy użyciu określonej funkcji agregacji (np. suma, średnia, maks.).

Opanowanie grafowych sieci neuronowych

Dodatkowo w naszym przykładzie procedura ta łączy osadzenia sąsiadujących stanów (h2_k i h4_k), tworząc ujednoliconą reprezentację.

Aktualizacja

Aktualizuj reprezentacje węzłów na podstawie zagregowanych komunikatów.

Aktualizacja

Na tym etapie łączymy bieżący stan węzła h5 z zagregowanymi informacjami od jego sąsiadów, aby wygenerować nowe osadzenie w warstwie k+1.

Następnie aktualizujemy adnotacje lub osadzania na naszym wykresie. Ten proces przekazywania komunikatów zachodzi we wszystkich węzłach, co skutkuje nowymi osadzaniami dla każdego węzła na każdym wykresie. 

Rozmiar nowego osadzania jest hiperparametrem zależnym od danych wykresu.

Opanowanie grafowych sieci neuronowych

Obecnie węzeł 6 zawiera informacje tylko o węzłach żółtych i o sobie samym, ponieważ jest zielony i żółty. Nie wie o węzłach fioletowych, szarych i czerwonych. To się jednak zmieni, jeśli przeprowadzimy kolejną rundę przekazywania wiadomości. 

Drugie fragmenty

Podobnie dla węzła 5, po przekazaniu komunikatu, łączymy jego sąsiednie stany, dokonujemy agregacji i generujemy nowe osadzenie w warstwie k+n. 

Drugie fragmenty

Po drugiej rundzie przekazywania wiadomości z rysunku jasno wynika, że ​​osadzenie każdego węzła uległo zmianie i teraz każdy węzeł na wykresie wie coś o wszystkich pozostałych węzłach. Na przykład węzeł 1 wie również o węźle 6.

Opanowanie grafowych sieci neuronowych

Proces można powtarzać wielokrotnie, dostosowując się do liczby warstw w sieci GNN. Zapewnia to, że osadzenie każdego węzła zawiera informacje o każdym innym węźle, w tym zarówno informacje oparte na cechach, jak i informacje strukturalne. 

Generowanie danych wyjściowych

Generowanie danych wyjściowych obejmuje wykorzystanie zaktualizowanych reprezentacji węzłów do różnych zadań. Dzięki zaktualizowanym osadzaniom zawierającym kompleksową wiedzę o grafie możemy wykonywać wiele zadań, wykorzystując wszystkie niezbędne informacje z wykresu. 

Ponieważ mamy osadzane aktualizacje, które zawierają całą wiedzę, możemy wykonać tutaj wiele zadań, ponieważ zawierają one wszystkie potrzebne informacje o wykresie. To jest podstawowa idea sieci GNN. Koncepcja ta stanowi podstawową ideę sieci GNN.

Zadania realizowane przez GNN

Grafowe sieci neuronowe wyróżniają się w różnych zadaniach:

  • Klasyfikacja węzłów: przewidywanie etykiet lub właściwości węzłów na podstawie ich połączeń.
  • Przewidywanie łączy: przewidywanie brakujących lub przyszłych krawędzi na wykresie.
  • Klasyfikacja wykresów: Klasyfikacja całych wykresów na podstawie ich właściwości strukturalnych.
  • Systemy rekomendacji: generowanie spersonalizowanych rekomendacji w oparciu o interakcje użytkownik-element w formie wykresu.

Implementacja klasyfikacji węzłów

Zaimplementujmy proste zadanie klasyfikacji węzłów przy użyciu sieci neuronowej Graph PyTorch.

Konfigurowanie wykresu

Zacznijmy od zdefiniowania struktury naszego wykresu. Mamy prosty graf z 6 węzłami połączonymi krawędziami, tworzącymi sieć zależności.

Implementacja GNN
# Define the graph structure
edges = [(0, 1), (0, 2), (1, 3), (1, 4), (1, 5), (2, 0), (2, 3), (3, 1), (3, 4), (4, 1), (4, 3), (5, 1)]

Konwertujemy te krawędzie na geometryczny indeks krawędzi PyTorch w celu przetwarzania.

# Convert edges to PyG edge index

edge_index = torch.tensor([[edge[0] for edge in edges], [edge[1] for edge in edges]], dtype=torch.long)

Funkcje i etykiety węzłów

Każdy węzeł na naszym wykresie ma 16 cech i mamy odpowiednie etykiety binarne do klasyfikacji węzłów.

# Define node features and labels

num_nodes = 6
num_features = 16  # Example feature size
node_features = torch.randn(num_nodes, num_features)  # Random features for illustration
node_labels = torch.FloatTensor([0, 1, 1, 0, 1, 0])  # Example node labels (using FloatTensor for binary cross-entropy)

Tworzenie obiektu danych PyG

Używając klasy Data PyTorch Geometric, hermetyzujemy nasze funkcje węzłów, indeks krawędzi i etykiety w jednym obiekcie danych.

# Create a PyG data object
data = Data(x=node_features, edge_index=edge_index, y=node_labels)

Wyjścia

Implementacja GNN

Budowa modelu GCN

Nasz model GCN składa się z dwóch warstw GCN, po których następuje aktywacja sigmoidalna w celu klasyfikacji binarnej.

# Define the GCN model using PyG
class GCN(nn.Module):
   def __init__(self, input_dim, hidden_dim, output_dim):
       super(GCN, self).__init__()
       self.conv1 = GCNConv(input_dim, hidden_dim)
       self.conv2 = GCNConv(hidden_dim, output_dim)


   def forward(self, data):
       x, edge_index = data.x, data.edge_index
       x = F.relu(self.conv1(x, edge_index))
       x = F.sigmoid(self.conv2(x, edge_index))  # Use sigmoid activation for binary classification
       return x

Wyjście:

Implementacja GNN

Trenowanie modelu

Trenujemy model GCN przy użyciu binarnej straty entropii krzyżowej i optymalizatora Adama.

# Initialize the model and optimizer
model = GCN(num_features, 32, 1)  # Output dimension is 1 for binary classification
optimizer = optim.Adam(model.parameters(), lr=0.01)


# Training loop with loss tracking using PyG
model.train()
losses = []  # List to store loss values
for epoch in range(500):
   optimizer.zero_grad()
   out = model(data)
   loss = F.binary_cross_entropy(out, data.y.view(-1, 1))  # Use binary cross-entropy loss
   losses.append(loss.item())  # Store the loss value
   loss.backward()
   optimizer.step()

Wykreślanie strat

Wykreślmy teraz krzywą straty:

# Plotting the loss curve
plt.plot(range(1, len(losses) + 1), losses, label='Training Loss', marker='*')
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.title('Training Loss Curve using PyTorch Geometric')
plt.legend()
plt.show()
Implementacja GNN

Dokonywanie prognoz

Po szkoleniu oceniamy model i dokonujemy prognoz na tych samych danych.

# Prediction
model.eval()
predictions = model(data).round().squeeze().detach().numpy()

# Print true and predicted labels for each node
for node_idx, (true_label, pred_label) in enumerate(zip(data.y.numpy(), predictions)):
   print(f"Node {node_idx+1}: True Label {true_label}, Predicted Label {pred_label}")

Wyjście:

Ocena

Oceńmy teraz model:

# Print predictions and classification report
print("nClassification Report:")
print(classification_report(data.y.numpy(), predictions))

Wyjście:

Implementacja GNN

wdrożyliśmy GCN do klasyfikacji węzłów przy użyciu PyTorch Geometric. Widzieliśmy, jak konfigurować dane wykresu, budować i trenować model oraz oceniać jego wydajność. 

Wnioski

Graficzne sieci neuronowe (GNN) okazały się potężnym narzędziem do przetwarzania i uczenia się na podstawie danych o strukturze grafowej. Wykorzystując nieodłączne relacje i struktury na wykresach, sieci GNN umożliwiają nam łatwe radzenie sobie ze złożonymi zadaniami uczenia maszynowego. W tym poście na blogu omówiono podstawy opanowywania Graph Neural Networks, ich ewolucji, wdrażania i zastosowań, pokazując ich potencjał do zrewolucjonizowania systemów AI w różnych dziedzinach.

Na wynos

  • Badane sieci GNN rozszerzają tradycyjne sieci neuronowe, aby efektywnie obsługiwać dane o strukturze graficznej.
  • Uczenie się reprezentacji i osadzanie węzłów to podstawowe pojęcia w sieciach GNN, które obejmują zarówno strukturę wykresu, jak i cechy węzłów.
  • Sieci GNN mogą wykonywać zadania, takie jak klasyfikacja węzłów, przewidywanie połączeń i przewidywania na poziomie wykresu.
  • Przekazywanie wiadomości, agregacja i sploty grafów to podstawowe operacje w sieciach GNN.
  • Grafowe sieci neuronowe mają różnorodne zastosowania w sieciach społecznościowych, systemach rekomendacji, odkrywaniu leków i nie tylko.

Często Zadawane Pytania

Pytanie 1. Jaka jest różnica między sieciami GNN a tradycyjnymi sieciami neuronowymi? 

O. Sieci GNN zaprojektowano do przetwarzania danych o strukturze graficznej i przechwytywania relacji między węzłami, podczas gdy tradycyjne sieci neuronowe działają na danych strukturalnych, takich jak obrazy lub tekst.

Pytanie 2. W jaki sposób sieci GNN radzą sobie z wykresami o zmiennej wielkości? 

O. Sieci GNN wykorzystują techniki takie jak przekazywanie komunikatów i sploty grafów do przetwarzania wykresów o zmiennej wielkości poprzez agregację informacji z sąsiednich węzłów.

Pytanie 3. Jakie są popularne frameworki GNN? 

O. Popularne platformy GNN obejmują PyTorch Geometric, Deep Graph Library (DGL) i GraphSAGE.

Pytanie 4. Czy sieci GNN mogą obsługiwać grafy skierowane? 

O. Tak, sieci GNN mogą obsługiwać zarówno grafy nieskierowane, jak i skierowane, uwzględniając kierunki krawędzi podczas przekazywania i agregacji komunikatów.

Pytanie 5. Jakie są zaawansowane zastosowania sieci GNN? 

O. Zaawansowane zastosowania sieci GNN obejmują wykrywanie oszustw w sieciach finansowych, przewidywanie struktury białek w bioinformatyce oraz przewidywanie ruchu w sieciach transportowych.

Znak czasu:

Więcej z Analityka Widhja