Graph-Faltungs-Neuronales Netzwerk GCN und Graph-Neuronales Netzwerk GNN

Inhaltsverzeichnis

1. Warum brauchen wir GCN?

2. Die Kernformel von GCN

1. Keinen eigenen Einfluss hinzufügen

2. Fügen Sie Ihren eigenen Einfluss hinzu

3. Zusammenfassung

1. Es kann durch GCN in niedrigdimensionale, kontinuierliche und dichte umgewandelt werden

2. Nutzen Sie die Knotenattribute voll aus

3. Zeitkomplexität des Algorithmus

4. Vorteile des graphischen neuronalen Netzwerks (GNN)

5. Kategorien von GCN

6. Der Unterschied zwischen GCN und GNN

7. Der Unterschied zwischen GNN und GAN

8. Argumentationscode für die GCN-Matrixformel


1. Warum brauchen wir GCN?

Die Struktur eines Diagramms ist im Allgemeinen sehr unregelmäßig und kann alsunendlichdimensionale Daten betrachtet werden, also. Die traditionellen CNN und RNN sind begrenzt und weisen eine Übersetzungsinvarianz auf. Die umgebende Struktur jedes Knotens kann jedoch einzigartig sein. Die Daten dieser Struktur machen die traditionellen CNN und RNN sofort ungültig. Daher haben viele Wissenschaftler seit dem letzten Jahrhundert damit begonnen, die Verarbeitung dieser Art von Daten zu untersuchen. Hier sind viele Methoden entstanden, wie GNN, DeepWalk, node2vec usw., GCN ist nur eine davon. Keine Übersetzungsinvarianz

GCN (Graph Convolutional Neural Network) hat tatsächlich die gleiche Funktion wie CNN, es ist ein Merkmalsextraktor, sein Objekt sind jedoch Diagrammdaten. GCN hat eine clevere Methode zum Extrahieren von Features aus Diagrammdaten entwickelt, sodass wir diese Features zur Klassifizierung von DiagrammdatenKnoten (Knotenklassifizierung) verwenden können ), Diagrammklassifizierung (Grafikklassifizierung), Kantenvorhersage (Linkvorhersage ), und Sie können auch die Einbettungsdarstellung vonGraph (Graph Embedding . )

Einzelheiten finden Sie unter:Graph Convolutional Neural Network GCN_bilibili_bilibili

2. Die Kernformel von GCN

1. Keinen eigenen Einfluss hinzufügen

Wie in der Abbildung oben gezeigt, gibt es von rechts nach links die Schichten 0, 1 und 2. Am Beispiel von C verbindet Punkt C vier Punkte A, B, E und F. Die vier Punkte werden Element für Element hinzugefügt Berechnen Sie den Durchschnitt. , N(v) in der obigen Abbildung ist eine Zahl, die in diesem Beispiel gleich 4 ist, W ist das Gewicht, die grüne ist die Aktivierungsfunktion, das Ganze ist eine rekursive Formel, k + 1 ist abgeleitet von k.

Der Zweck der Mittelung besteht darin, sie sinnvoller zu gestalten. Wie in der folgenden Abbildung gezeigt, wird das Gewicht höher, wenn links weniger Verbindungen vorhanden sind. Wenn rechts mehr Verbindungen vorhanden sind, wird der Nenner größer und entsprechend Das Gewicht wird geringer (im Luftraum).

     Wandeln Sie die Kernformel des vorherigen Schritts in Matrixform um, um die folgende Abbildung zu erhalten: A ist die Adjazenzmatrix, D ist die Diagonalmatrix, und dann werden beide Seiten mit der negativen Hälfte von D multipliziert, um den maximalen Eigenwert zu normalisieren und sicherzustellen. ist 1.

Kurz gesagt, es wird Rekursion.

2. Fügen Sie Ihren eigenen Einfluss hinzu

       Das Bild unten ist ein Diagramm, das seinen eigenen Einfluss hinzufügt, was bedeutet, dass der Knoten eine selbstgeschlossene Schleife ausführt.

       Die entsprechende Adjazenzmatrix entspricht dem Hinzufügen einer Identitätsmatrix I zur ursprünglichen A-Matrix, wie in der folgenden Abbildung dargestellt.

       Die entsprechende rekursive Formel kann wie folgt aktualisiert werden, wobei das Obige der Synthese unten entspricht.

       Die entsprechenden Gewichte, die getrennt werden können, können auch unterschiedlich sein. B in der Abbildung unten stellt das selbstaktualisierende Gewicht dar.

3. Zusammenfassung

1. Es kann durch GCN in niedrigdimensionale, kontinuierliche und dichte umgewandelt werden

       GCN kann sowohl Direct Push als auch induktives Lernen durchführen, während herkömmliche Methoden wie Random Walk-basierte Methoden, Matrixzerlegungsmethoden und Label-Propagation nur Direct Push durchführen können. Die Mängel von Direct Push liegen jedoch auf der Hand. Die direkte Inferenzmethode kann nicht auf neue Knoten verallgemeinert werden und die Random-Walk-Sequenz muss erneut abgetastet werden, um die Einbettungsvektoren aller Knoten zu optimieren und zu aktualisieren. Induktives Lernen kann jedoch auf neue Knoten verallgemeinert werden, und es kann auch Transferlernen durchgeführt werden, z. B. mithilfe graphischer neuronaler Netzwerkmethoden wie GAT und GIN (unter Verwendung des Paradigmas rechnerischer Graphen, um strukturelle Ähnlichkeiten wie geografische Entfernungen zu erhalten).

2. Nutzen Sie die Knotenattribute voll aus

        Jeder Knoten erstellt ein eigenes Berechnungsdiagramm, das Punktattribute, Beschriftungskategorien und andere Informationen vollständig nutzen und Parameter gemeinsam nutzen kann, wie in der folgenden Abbildung dargestellt. Bei DeepWalk, Node2Vec und LINE gibt es jedoch keine Feature-Annotation für Knotenattribute.

3. Zeitkomplexität des Algorithmus

Die zeitliche Komplexität des Algorithmus nimmt mit zunehmender Skalierung linear zu, wie in der Abbildung oben dargestellt.

4. Vorteile des graphischen neuronalen Netzwerks (GNN)

Deep Learning verfügt über eine starke Anpassungslernfähigkeit, was darauf hinweist, dass die erlernten Einbettungsvektoren von hoher Qualität sind

Auf den Schultern von Deep-Learning-Giganten stehen

Induktive LernfähigkeitInduktives Lernen: auf neue Knoten und neue Diagramme verallgemeinern

Kleine Anzahl von Parametern, alle Berechnungsdiagramme teilen sich das neuronale Netzwerk

Knoten verwendenAttributmerkmale

Knoten verwendenKategorien markieren

Knotenstruktur unterscheidenStrukturelle funktionale Rolle (Brücke, Nabe, periphere Kante)

Mit nur wenigen Schichten können zwei beliebige Knoten miteinander interagieren.

5. Kategorien von GCN

  1. Ursprüngliches GCN: Das GCN, das erstmals 2017 von Kipf und Welling vorgeschlagen wurde, ist die grundlegendste Form, die den Durchschnittswert von Nachbarknoten verwendet (Die obige Beschreibungsformel ist das ursprüngliche GCN)Als Gewicht der Faltungsoperation wird die Darstellung des Knotens durch mehrschichtige Faltungsoperationen gelernt.

  2. GCN mit mehreren Maßstäben: Um Graphstrukturen unterschiedlicher Maßstäbe zu handhaben, haben einige Forschungsarbeiten GCN mit mehreren Maßstäben eingeführt. Diese Modelle erfassen unterschiedliche Bereiche von Nachbarknoteninformationen, indem sieFaltungskerne unterschiedlicher Größe auf verschiedenen Ebenen anwenden, um besser in das Diagramm zu passen. Strukturelle Änderungen.

  3. Spatial GCN: Spatial GCN ist eine Methode, die in der GCN-Variante Bildfeld verwendet wird. Es verwendet die räumliche Struktur des Bildes als topologische Struktur des Diagramms und führt die Faltungsoperation des Bildes über GCN durch, um die Darstellung des Bildes zu lernen. Spatial GCN hat bei Aufgaben wie Bildsegmentierung und Zielerkennung gute Ergebnisse erzielt.

  4. Spatio-Temporal GCN: Spatio-Temporal GCN ist eine Methode, die aufspatio-temporale Daten angewendet wird GCN-Variante. Es berücksichtigt die zeitlichen und räumlichen Beziehungen von Knoten in Diagrammdaten und führt über GCN Informationsübertragung und Merkmalslernen in der räumlich-zeitlichen Dimension durch. Dieses Modell wird häufig in der Verkehrsvorhersage, Verhaltenserkennung und anderen Bereichen eingesetzt.

  5. Aufmerksamkeitsmechanismus GCN: Der Aufmerksamkeitsmechanismus GCN (Graph Attention Networks, GAT) führt denAufmerksamkeitsmechanismus um die Wichtigkeitsgewichte zwischen verschiedenen Knoten dynamisch zu lernen. Diese Modelle weisen adaptiv Aufmerksamkeitsgewichte zu, sodass Knoten wichtigen Nachbarknoten bei der Informationsübertragung mehr Aufmerksamkeit schenken können.

6. Der Unterschied zwischen GCN und GNN

1. GNN ist ein umfassenderes Konzept, das eine Vielzahl von graphischen neuronalen Netzwerkmodellen umfasst, wie etwa GCN, GraphSAGE, GAT (Graph Attention). Netzwerke) usw. GNN ist ein Gesamtrahmen und GCN ist eine spezifische Implementierung von GNN. GCN ist eines der frühesten vorgeschlagenen Modelle in GNN. Es lernt die Knotendarstellung durch die Aggregation von Informationen von lokalen Nachbarknoten.

2, Informationsübertragungsmethode: In GNN erfolgt die Darstellung von Knoten durch Informationsübertragung Aggregationzu lernen. GCN verwendet eine Faltungsoperation basierend auf Nachbarknoten, um die Merkmale von Knoten mit den Merkmalen von Nachbarknoten zu falten. Produkt -Vorgang zum Aktualisieren der Darstellung des Knotens. Andere GNN-Modelle verwenden möglicherweise andere Informationsübertragungsmethoden, z. B. GraphSAGE mithilfe der Stichprobenziehung und Aggregation von Nachbarknoten, GAT mithilfe des Aufmerksamkeitsmechanismus usw.

3, Die Definition der Faltungsoperation:Die Faltungsoperation in GCN basiert auf Tula Die spektrale Faltung des Plath-Operators ist definiert, der die Verbindungsbeziehung zwischen Knoten zum Übertragen von Merkmalen verwendet. Diese Faltungsoperation ist im Bereich der Graphen sehr klassisch und kann als lineare Kombination der Eigenschaften eines Knotens mit den Eigenschaften benachbarter Knoten angesehen werden. Andere GNN-Modelle verwenden möglicherweise andere Faltungsdefinitionen, z. B. durchschnittliches Pooling in GraphSAGE, adaptive Aufmerksamkeitsgewichte in GAT usw.

7. Der Unterschied zwischen GNN und GAN

1. Aufgabentyp: GNN wird hauptsächlich zumDarstellungslernen von Diagrammdaten und Diagrammanalyseaufgaben verwendet, mit dem Ziel, die Darstellung von Knoten zu lernen oder Diagramme und die Beziehungen zwischen Knoten. GNN kann fürKnotenklassifizierung, Diagrammklassifizierung, Linkvorhersage, Aufgaben zur Diagrammerstellung. Und GAN wird hauptsächlich zum Generieren von Modellen verwendet, um neue Stichproben zu generieren, die den Originaldaten ähneln.

2. Lernziel: Das Lernziel von GNN besteht darin, die Darstellung von Knoten oder Diagrammen zu erlernen, um die nachfolgende Knotenklassifizierung, Diagrammklassifizierung und andere Aufgaben zu erleichtern. GNN aktualisiert die Knotendarstellung durch Informationsübertragungs- und Aggregationsoperationen und erfasst lokale und globale Diagrammstrukturinformationen durch mehrschichtige Faltungsoperationen. Das Lernziel von GAN besteht darin, realistische Proben über das Generatornetzwerk zu generieren und die generierten Proben über das Diskriminatornetzwerk von echten Proben zu unterscheiden.

3. Netzwerkstruktur: GNN besteht normalerweise ausmehreren Graphfaltungsschichten. Jede Graphfaltungsschicht leitet die Informationen von Nachbarknoten weiter. Aggregieren zu Knotendarstellung aktualisieren. Die Netzwerkstruktur von GNN umfasst hauptsächlich Knotendarstellungs-Lern- und Informationsübertragungsschichten. GAN besteht ausGeneratornetzwerk und Diskriminatornetzwerk. Das Generatornetzwerk generiert Proben, die echten Proben ähneln, und das Diskriminatornetzwerk bewertet die Authentizität der generierten Proben.

4. Datentyp: GNN eignet sich für graphstrukturierte Daten, wie z. B. soziale Netzwerke, Wissensgraphen, molekulare Strukturen usw. Es kann Knoteneigenschaften und Verbindungsbeziehungen zwischen Knoten verarbeiten. GAN eignet sich füreine Vielzahl von Datentypen, wie zum Beispiel Bilder, Text, Audio usw..

5. Anwendungsfelder: GNN wird häufig in derAnalyse sozialer Netzwerke, Empfehlungssystemen, Bioinformatik und anderen Bereichen sowie in der verwendet Bild- und Videofelder Strukturierte Datenanalyse in . GAN wird hauptsächlich in Bereichen wie Bildgenerierung, Bildwiederherstellung, Bildkonvertierung und Textgenerierung in der Verarbeitung natürlicher Sprache verwendet.

8. Argumentationscode für die GCN-Matrixformel

import numpy as np
from scipy.linalg import fractional_matrix_power

A=np.mat('0,1,1,1,0,0;1,0,1,0,0,0;1,1,0,0,1,1;1,0,0,0,0,0;0,0,1,0,0,1;0,0,1,0,1,0')
print(A)

D=np.mat('3,0,0,0,0,0;0,2,0,0,0,0;0,0,4,0,0,0;0,0,0,1,0,0;0,0,0,0,2,0;0,0,0,0,0,2')
print(D)
# print(D**(-1))
D_half=fractional_matrix_power(D,0.5)
# print(D_half)
D_half_neg=fractional_matrix_power(D,-0.5)
# print(D_half_neg)

A_row=np.matmul(D**(-1),A)
# print(A_row)
Eigen_values,Eigen_vectors=np.linalg.eig(A_row)#计算特征值
# print(Eigen_values)

A_col=np.matmul(A,D**(-1))
# print(A_col)
Eigen_values,Eigen_vectors=np.linalg.eig(A_col)
print(Eigen_values)

A_naive=D**(-1) @ A @ D**(-1)
print(A_naive)
Eigen_values,Eigen_vectors=np.linalg.eig(A_naive)
print(Eigen_values)

A_sym=D_half_neg @ A @ D_half_neg  #保证了特征值的归一化  最大特征值始终为1
print(A_sym)
V,D=np.linalg.eig(A_sym)
print(V)

Supongo que te gusta

Origin blog.csdn.net/zhu_xian_gang/article/details/133981654
Recomendado
Clasificación