Graph Neural Networks (GNN) sind spezielle neuronale Netze, die dazu dienen, schwierige Probleme auf der Grundlage von Graphen zu lösen, die eine komplexe Datenstruktur bilden. Erfahre unten mehr über die Funktionsweise, die Architekturen und die Anwendungen von GNNs.
Was sind grafische neuronale Netze?
Mit dem exponentiellen Wachstum der Datenwissenschaft hat auch das Machine Learning weitere Veränderungen erfahren, um sich an die sich ändernden Datenstrukturen und die Nachfrage anzupassen.
So wurde es mit dem Auftreten neuer Datentypen und der Zunahme unstrukturierter Daten notwendig, Modelle für maschinelles Lernen zu erstellen, die sich an unstrukturierte Daten wie Graphen anpassen können.
Ein Beispiel hierfür sind die Graphischen Neuronalen Netze (GNN), die Daten aus einem Graphen verarbeiten können. GNNs sind eine Erweiterung der herkömmlichen neuronalen Netze aus dem Bereich des Deep Learning, die zur Verarbeitung strukturierter Daten verwendet werden. Graphen sind nützliche, komplexe, unstrukturierte Datenstrukturen, mit denen reale Phänomene wie Luftstraßen-Navigationssysteme und Molekülstrukturen dargestellt werden können.
Was ist ein Graph?
Ein Graph ist eine komplexe Datenstruktur, die zur Darstellung von Objekten und deren Beziehungen untereinander verwendet wird. Ein Graph besteht aus einer Reihe von Knoten (engl. nodes) und Kanten (engl. edges oder links). Durch die Kanten werden die verschiedenen Knoten miteinander verbunden. Kanten können gerichtet oder ungerichtet sein. In einem gerichteten Graphen haben die Kanten eine Richtung, die die Richtung der Beziehung angibt, während in einem ungerichteten Graphen die Kanten keine Richtung haben.
In der Praxis können Knoten die Nutzer eines sozialen Netzwerks darstellen, während Beziehungen die Freundschaften zwischen den Nutzern darstellen. Ein Graph kann auch als die Struktur eines Moleküls oder eines Transportnetzes betrachtet werden.
Im Fall von GNN verwendet ein Graph Merkmalsvektoren (engl. embeddings), um alle Informationen über einen Graphen wie seine Struktur und seine Beziehungen zu kodieren. Die Einbettungen konstruieren also eine numerische Darstellung eines Graphen, die später zum Trainieren von Machine-Learning-Algorithmen verwendet werden kann.
In einem Graphen gibt es zwei Arten von Einbettungen: Knoteneinbettungen (node embeddings) und Kanteneinbettungen (edge embeddings). Mit Node-Embeddings können die Eigenschaften jedes Knotens dargestellt werden, während Kanten-Embeddings dazu dienen, die Eigenschaften der Beziehungen zwischen den Knoten zu modellieren.
Wie funktionieren grafische neuronale Netze?
Die Funktionsweise von grafischen neuronalen Netzen beruht auf einer Technik, die als „message passing“ bezeichnet wird. Diese Technik ermöglicht die Verarbeitung von Informationen durch den Austausch von Informationen zwischen den Knoten eines Graphen und ihren Nachbarn. Das Ziel dieser Technik ist es, den Zustand jedes Knotens zu ändern, indem er die lokalen Informationen seiner Nachbarn und die in den Kanten enthaltenen Informationen nutzt.
Konkret bedeutet dies, dass das „Message Passing“ die in den Node Embeddings enthaltenen Informationen über die Kanten des Graphen weiterleitet. Jeder Knoten sendet nämlich mithilfe seines Node Embeddings eine Nachricht an seine Nachbarknoten. Jede Nachricht enthält Informationen über den sendenden Knoten und spezifische Eigenschaften der Kante, die den Knoten mit seinem Nachbarn verbindet. Der Empfängerknoten kombiniert dann alle Nachrichten seiner Nachbarn mit seinem anfänglichen Node Embedding und den entsprechenden Kanten-Embeddings, um sein eigenes Node Embedding mithilfe einer nichtlinearen Funktion zu aktualisieren. Die Kombination zwischen den Nachrichten der Nachbarknoten und dem ursprünglichen Embedding kann je nach Kontext verschiedenen Operationen (Summe, Durchschnitt, Maximum…) entsprechen.
Die Message-Passing-Technik wird mehrmals wiederholt, damit jeder Knoten die Informationen seiner Nachbarn einbeziehen und so immer mehr Informationen über die Struktur des Graphen erfassen kann. Am Ende des Prozesses enthält jeder Knoten ein aktualisiertes node embedding, das alle Merkmale seiner Nachbarn und die Kanten embeddings berücksichtigt. Im embedding space, der dem Vektorraum entspricht, in dem die node embeddings zusammengefasst sind, hängt der Abstand zwischen den node embeddings also von ihrer Ähnlichkeit ab. Je ähnlicher die node embeddings sind, desto näher liegen sie beieinander.
Es ist auch hervorzuheben, dass die Message-Passing-Funktionen durch Permutation der Reihenfolge der Nachbarknoten invariant sind. Dies ermöglicht es GNNs, die Interaktionen zwischen den Knoten unabhängig von der Reihenfolge der Knoten zu betrachten und die Ergebnisse zu vereinheitlichen.
Um GNNs zu trainieren, werden zunächst jeder Schicht des neuronalen Netzes zufällige Gewichtswerte zugewiesen. Anschließend werden die Gewichte durch eine Kostenfunktion, die an das zu lösende Problem angepasst ist, das minimiert werden soll, an die verschiedenen Schichten des Netzes angepasst. Durch die Message-Passing-Funktion werden die Gewichte der versteckten Schichten der GNNs entsprechend geändert.
Eine weitere Technik, die für GNNs verwendet wird, ist das Pooling, aber seine Anwendung variiert je nach der verwendeten Architektur. Nachdem die Knoteneinbettungen nach mehreren Iterationen des Message Passing aktualisiert wurden, kann es sinnvoll sein, die Größe der numerischen Darstellung des Graphen zu reduzieren, um die Fähigkeit der Modelle, große Graphen zu verarbeiten, zu verbessern.
Hier ist Pooling von Vorteil, da es eine globale Einbettung erzeugt, die mit diesem bestimmten Bereich des Graphen verbunden ist. Dieses globale Embedding wird aus einer Kombination der Node-Embeddings einer bestimmten Region des Graphen gebildet.
Welche verschiedenen GNN-Architekturen gibt es?
Es gibt verschiedene Arten von GNN-Architekturen, hier eine Beschreibung der bekanntesten Architekturen :
1. MPGNN (Message Passing Graph Neural Networks). MPGNNs verwenden Message Passing, um jeden Knoten mithilfe von Informationen zu aktualisieren, die in jedem benachbarten Knoten enthalten sind.
2. GCNNs (Graph Convolutional Neural Networks), auch bekannt als Graph Convolutional Neural Networks (Graphenfaltende neuronale Netze). Diese Netze wenden eine Faltungsschicht auf die Einbettungen der Knoten und Kanten an.
3. Graph Attention Neural Networks (GATs), auch bekannt als Graph Attention Neuronal Networks (GATs). Bei dieser Art von Architektur wird die Bedeutung der benachbarten Knoten während der Phase der Informationsweitergabe (message passing) gewichtet. Für jedes Knotenpaar wird ein Aufmerksamkeitswert berechnet, der zur Gewichtung der einzelnen Knoten verwendet wird.
Wozu dienen die GNN?
Die Anwendungen von GNNs sind vielfältig, hier einige Beispiele:
Node Classification (Knotenklassifizierung): Man könnte GNNs verwenden, um die Knoten eines Graphen zu klassifizieren. Zum Beispiel könnte man sie verwenden, um einen Nutzer einer E-Commerce-Website nach seinen Interessen zu klassifizieren.
Graph Classification (Klassifizierung von Graphen): GNNs könnten verwendet werden, um Graphen zu klassifizieren. GNN könnte z. B. verwendet werden, um den Typ eines Moleküls anhand seiner (durch einen Graphen dargestellten) Struktur vorherzusagen.
Recommender system (Empfehlungssystem) : GNNs werden verwendet, um Nutzern auf der Grundlage ihrer Daten Inhalte zu empfehlen. Dies ist z. B. bei einer Musikstreaming-Website wie Spotify der Fall, die GNNs verwendet, um einem Nutzer ähnliche Künstler, Lieder, Playlists und Alben zu empfehlen, die mit der Geschichte des Nutzers in Verbindung stehen.
Natural Language Processing (NLP): Mit GNNs kann man also Text klassifizieren oder Text generieren. Zum Beispiel können GNNs verwendet werden, um eine Stimmungsanalyse von Bewertungen durchzuführen, die mit einer Website verknüpft sind. Jeder Beitrag wird nach seiner Tonalität (positiv, negativ oder neutral) klassifiziert.
Link Prediction (Vorhersage von Links): GNNs werden hier verwendet, um neue Verbindungen zwischen Knoten in einem Graphen vorherzusagen. In einem sozialen Netzwerk könnte GNN z. B. verwendet werden, um vorherzusagen, ob Nutzer eher Freunde werden.
Computer Vision: GNNs werden verwendet, um Bilder wie Graphen zu behandeln. Konkret können sie zur Objekterkennung oder zur Zeichenerkennung eingesetzt werden.
Clustering: GNNs werden verwendet, um Bilder nach ihrem Inhalt zu gruppieren. Dies wird erreicht, indem der Bereich der Einbettungen getrennt wird. Dies ist der Raum, in dem die Embedding-Nodes lokalisiert sind.
Pour en savoir plus sur les GNN, n’hésitez pas à consulter la vidéo suivante :
Fazit
Daher sind GNNs sehr nützlich, um komplexe Probleme durch die Manipulation von Graphen zu behandeln, die komplexe, unstrukturierte Datenstrukturen darstellen.
Die Funktionsweise von GNNs beruht hauptsächlich auf der Message-Passing-Funktion, die es ermöglicht, Node-Embeddings zu konstruieren, die an die Struktur und die Informationen des Graphen angepasst sind.
GNNs weisen zahlreiche Architekturen wie MPGNNs, GCNNs und GATs auf. GNNs können in vielen verschiedenen Kontexten eingesetzt werden, z. B. für Computer Vision, Link Prediction, Recommendation und NLP. Da sich GNNs noch in der Forschungsphase befinden, ist es möglich, dass neue Architekturen entwickelt werden. Aufgrund ihres Potenzials und ihrer Leistungsfähigkeit werden GNNs immer häufiger zur Lösung von Problemen eingesetzt werden.
Wenn du dich in Deep Learning ausbilden lassen möchtest, um tiefer in die Materie der neuronalen Netze einzusteigen, dann schau dir unsere Kurse in Machine Learning Engineering und Deep Learning an.