Heim >Technologie-Peripheriegeräte >KI >Google hat offiziell die Veröffentlichung von TensorFlow-GNN 1.0 angekündigt! Dynamisches und interaktives Sampling zum Aufbau grafischer neuronaler Netze im großen Maßstab
Im Jahr 2005 brachte das Aufkommen des epochalen Werks „The Graph Neural Network Model“ graphische neuronale Netze für jedermann zugänglich.
Zuvor verarbeiteten Wissenschaftler Diagrammdaten so, dass sie das Diagramm während der Datenvorverarbeitungsphase in eine Reihe von „Vektordarstellungen“ umwandelten.
Das Aufkommen von CNN hat diesen Nachteil des Informationsverlusts völlig verändert. In den letzten 20 Jahren haben sich Generationen von Modellen weiterentwickelt und den Fortschritt im Bereich ML gefördert.
Heute hat Google offiziell die Veröffentlichung von TensorFlow GNN 1.0 (TF-GNN) angekündigt – einer produktionserprobten Bibliothek zum Erstellen von GNNs im großen Maßstab.
Es unterstützt sowohl die Modellierung als auch das Training in TensorFlow sowie das Extrahieren von Eingabediagrammen aus großen Datenspeichern.
TF-GNN wurde von Grund auf für heterogene Diagramme entwickelt, bei denen Objekttypen und Beziehungen durch unterschiedliche Sätze von Knoten und Kanten dargestellt werden.
Objekte und ihre Beziehungen in der realen Welt erscheinen in unterschiedlichen Typen, und der heterogene Fokus von TF-GNN macht es sehr natürlich, sie darzustellen.
Der Google-Wissenschaftler Anton Tsitsulin sagte, dass die komplexe heterogene Modellierung zurück ist!
Objekte und ihre Beziehungen sind überall in unserer Welt.
Die Bedeutung von Beziehungen für das Verständnis eines Objekts ist nicht weniger wichtig als die isolierte Betrachtung der Eigenschaften des Objekts selbst, wie z. B. Transportnetzwerke, Produktionsnetzwerke, Wissensgraphen oder soziale Netzwerke.
Diskrete Mathematik und Informatik haben solche Netzwerke seit langem als Graphen formalisiert, die aus „Knoten“ bestehen, die durch Kanten auf verschiedene unregelmäßige Weise willkürlich verbunden sind.
Die meisten Algorithmen für maschinelles Lernen erlauben jedoch nur regelmäßige und einheitliche Beziehungen zwischen Eingabeobjekten, wie z. B. Pixelgitter, Wortfolgen oder überhaupt keine Beziehung.
Graphic Neural Network, kurz GNN, ist eine leistungsstarke Technologie, die nicht nur die Konnektivität von Graphen (wie die frühen Algorithmen DeepWalk und Node2Vec) nutzen kann, sondern auch verschiedene Knoten- und Kanteneingabefunktionen nutzen kann.
GNN kann an der Grafik als Ganzes arbeiten (reagiert dieses Molekül auf irgendeine Weise?), an einzelnen Knoten (was ist laut Zitat das Thema dieses Dokuments?), an potenziellen Kanten (dies ist Wird das Produkt wahrscheinlich zusammen mit einem anderen Produkt gekauft?
GNNs können nicht nur Vorhersagen in Diagrammen treffen, sondern sind auch ein leistungsstarkes Werkzeug, um die Lücke zu typischeren Anwendungsfällen neuronaler Netze zu schließen.
Sie kodieren die diskreten relationalen Informationen des Diagramms kontinuierlich, sodass sie auf natürliche Weise in ein anderes Deep-Learning-System integriert werden können.
Google hat heute offiziell TensorFlow GNN 1.0 (TF-GNN) angekündigt, eine produktionserprobte Bibliothek zum Erstellen von GNNs im großen Maßstab.
In TensorFlow wird ein solcher Graph durch ein Objekt vom Typ tfgnn.GraphTensor dargestellt.
Dies ist ein zusammengesetzter Tensortyp (eine Sammlung von Tensoren in einer Python-Klasse), der in tf.data.Dataset, tf.function usw. als „erstklassiges Objekt“ akzeptiert wird.
Es kann nicht nur die Diagrammstruktur, sondern auch die Eigenschaften von Knoten, Kanten und dem gesamten Diagramm speichern.
Trainierbare Transformationen für GraphTensors können als Layers-Objekte in der Kera-API auf hoher Ebene oder direkt mithilfe des tfgnn.GraphTensor-Grundelements definiert werden.
Als nächstes erklären wir TF-GNN weiter. Sie können sich eine der typischen Anwendungen ansehen:
Vorhersage in einer riesigen Datenbank, durch Querverweis Attribute von bestimmte Arten von Knoten im durch die Tabelle definierten Diagramm
Zum Beispiel gibt es in der Zitierdatenbank arxiv der Informatik (CS) Eins-zu-Viele-Zitate und Viele-zu-Eins-Zitatbeziehungen, die den Themenbereich jeder Arbeit vorhersagen können.
Wie die meisten neuronalen Netze werden GNNs anhand von Datensätzen mit vielen gekennzeichneten Stichproben (ungefähr Millionen) trainiert, aber jeder Trainingsschritt besteht nur aus einem Stapel viel kleinerer Trainingsstichproben (z. B. Hunderte).
Um auf Millionen von Stichproben zu skalieren, werden GNNs auf einem Strom einigermaßen kleiner Untergraphen im zugrunde liegenden Diagramm trainiert. Jeder Untergraph enthält genügend Rohdaten, um die GNN-Ergebnisse des zentralen markierten Knotens zu berechnen und das Modell zu trainieren.
Dieser Prozess, der oft als Subgraph-Sampling bezeichnet wird, ist für das GNN-Training äußerst wichtig.
Die meisten vorhandenen Tools führen die Probenahme stapelweise durch und generieren statische Untergraphen für das Training.
Und TF-GNN bietet Tools, um dies durch dynamisches und interaktives Sampling zu verbessern.
Der Prozess des Subgraph-Samplings, der kleine, umsetzbare Subgraphen aus einem größeren Graphen extrahiert, um Eingabebeispiele für das GNN-Training zu erstellen
TF-GNN 1.0 führt eine flexible Python-API zum Konfigurieren dynamischer oder Batch-Subgraphen ein Sampling aller relevanten Skalen: interaktives Sampling in Colab-Notizen.
Konkret „effizientes Sampling“ kleiner Datensätze, die im Hauptspeicher eines einzelnen Trainingshosts gespeichert sind, oder riesiger Datensätze (bis zu Hunderten Millionen Knoten und Daten), die über Apache Beam Milliarden in Netzwerkdateisystemen gespeichert sind Kanten) für verteiltes Sampling.
Auf diesen gleichen abgetasteten Untergraphen besteht die Aufgabe von GNN darin, den verborgenen (oder potenziellen) Zustand des Wurzelknotens zu berechnen und die relevanten Informationen der Nachbarschaft des Wurzelknotens zu kodieren.
Eine gängige Methode ist das „Message Passing Neural Network“.
In jeder Nachrichtenrunde empfängt ein Knoten Nachrichten von benachbarten Knoten entlang der eingehenden Kanten und aktualisiert seinen eigenen verborgenen Zustand von diesen Kanten aus.
Nach n Runden spiegelt der verborgene Zustand des Wurzelknotens die aggregierten Informationen aller Knoten innerhalb von n Kanten wider (wie in der Abbildung unten gezeigt, n = 2). Die Nachricht und der neue verborgene Zustand werden von der verborgenen Schicht des neuronalen Netzwerks berechnet.
In heterogenen Diagrammen ist es oft sinnvoll, separat trainierte verborgene Schichten für verschiedene Arten von Knoten und Kanten zu verwenden.
Das Bild zeigt ein einfaches „Message Passing Neural Network“. In diesem Netzwerk wird der Knotenstatus bei jedem Schritt vom externen Knoten an den internen Knoten weitergegeben und der neue Knotenstatus am internen Knoten berechnet Knoten. Sobald der Wurzelknoten erreicht ist, kann die endgültige Vorhersage getroffen werden
Der Trainingsaufbau besteht darin, die Ausgabeschicht über dem verborgenen Zustand des GNN des markierten Knotens zu platzieren und den Verlust zu berechnen (um den Vorhersagefehler zu messen). und Aktualisieren des Modells über Backpropagation. Dies erfolgt mithilfe von Gewichten, was bei jedem Training neuronaler Netzwerke üblich ist.
Zusätzlich zum überwachten Training können GNNs auch unüberwacht trainiert werden, was uns die Berechnung kontinuierlicher Darstellungen (oder Einbettungen) diskreter Graphstrukturen von Knoten und ihrer Merkmale ermöglicht.
Diese Darstellungen werden dann häufig in anderen ML-Systemen verwendet.
Auf diese Weise können die vom Diagramm kodierten diskreten relationalen Informationen in typischere Anwendungsfälle neuronaler Netze integriert werden. TF-GNN unterstützt die feinkörnige Spezifikation unbeaufsichtigter Ziele in heterogenen Diagrammen.
Die TF-GNN-Bibliothek unterstützt den Aufbau und das Training von GNNs auf verschiedenen Abstraktionsebenen.
Auf der höchsten Ebene können Benutzer jedes vordefinierte Modell verwenden, das mit der Bibliothek gebündelt ist und als Kera-Ebenen dargestellt wird.
Zusätzlich zu einer kleinen Reihe von Modellen aus der Forschungsliteratur verfügt TF-GNN über eine hochgradig konfigurierbare Modellvorlage, die sorgfältig ausgewählte Modellierungsoptionen bietet.
Google entdeckt diese Entscheidungen und liefert so eine solide Grundlage für viele unserer internen Probleme. Die Vorlage implementiert die GNN-Schicht; der Benutzer muss sie nur ausgehend von der Kera-Schicht initialisieren.
import tensorflow_gnn as tfgnnfrom tensorflow_gnn.models import mt_albisdef model_fn(graph_tensor_spec: tfgnn.GraphTensorSpec):"""Builds a GNN as a Keras model."""graph = inputs = tf.keras.Input(type_spec=graph_tensor_spec)# Encode input features (callback omitted for brevity).graph = tfgnn.keras.layers.MapFeatures(node_sets_fn=set_initial_node_states)(graph)# For each round of message passing...for _ in range(2):# ... create and apply a Keras layer.graph = mt_albis.MtAlbisGraphUpdate(units=128, message_dim=64,attention_type="none", simple_conv_reduce_type="mean",normalization_type="layer", next_state_type="residual",state_dropout_rate=0.2, l2_regularizatinotallow=1e-5,)(graph)return tf.keras.Model(inputs, graph)
在最低层,用户可以根据用于在图中传递数据的原语,从头开始编写GNN模型,比如将数据从节点广播到其所有传出边,或将数据从其所有传入边汇集到节点中。
当涉及到特征或隐藏状态时,TF-GNN 的图数据模型对节点、边和整个输入图一视同仁。
因此,它不仅可以直接表示像MPNN那样以节点为中心的模型,而且还可以表示更一般形式的的图网络。
这可以(但不一定)使用Kera作为核心TensorFlow顶部的建模框架来完成。
虽然高级用户可以自由地进行定制模型训练,但TF-GNN Runner还提供了一种简洁的方法,在常见情况下协调Kera模型的训练。
一个简单的调用可能如下所示:
from tensorflow_gnn import runnerrunner.run( task=runner.RootNodeBinaryClassification("papers", ...), model_fn=model_fn, trainer=runner.KerasTrainer(tf.distribute.MirroredStrategy(), model_dir="/tmp/model"), optimizer_fn=tf.keras.optimizers.Adam, epochs=10, global_batch_size=128, train_ds_provider=runner.TFRecordDatasetProvider("/tmp/train*"), valid_ds_provider=runner.TFRecordDatasetProvider("/tmp/validation*"), gtspec=...,)
Runner为ML Pain提供了现成的解决方案,如分布式训练和云TPU上固定形状的 tfgnn.GraphTensor 填充。
除了单一任务的训练(如上所示)外,它还支持多个(两个或更多)任务的联合训练。
例如,非监督任务可以与监督任务混合,以形成具有特定于应用的归纳偏差的最终连续表示(或嵌入)。调用方只需将任务参数替换为任务映射:
from tensorflow_gnn import runnerfrom tensorflow_gnn.models import contrastive_lossesrunner.run( task={"classification": runner.RootNodeBinaryClassification("papers", ...),"dgi": contrastive_losses.DeepGraphInfomaxTask("papers"),},...)
此外,TF-GNN Runner还包括用于模型归因的集成梯度实现。
集成梯度输出是一个GraphTensor,其连接性与观察到的GraphTensor相同,但其特征用梯度值代替,在GNN预测中,较大的梯度值比较小的梯度值贡献更多。
总之,谷歌希望TF-GNN将有助于推动GNN在TensorFlow中的大规模应用,并推动该领域的进一步创新。
Das obige ist der detaillierte Inhalt vonGoogle hat offiziell die Veröffentlichung von TensorFlow-GNN 1.0 angekündigt! Dynamisches und interaktives Sampling zum Aufbau grafischer neuronaler Netze im großen Maßstab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!