Rumah  >  Artikel  >  Peranti teknologi  >  Google secara rasmi mengumumkan keluaran TensorFlow-GNN 1.0! Persampelan dinamik dan interaktif untuk membina rangkaian saraf graf pada skala

Google secara rasmi mengumumkan keluaran TensorFlow-GNN 1.0! Persampelan dinamik dan interaktif untuk membina rangkaian saraf graf pada skala

WBOY
WBOYke hadapan
2024-02-07 21:50:26455semak imbas

Pada tahun 2005, kemunculan karya pembuatan zaman "The Graph Neural Network Model" membawa rangkaian saraf graf kepada semua orang.

Sebelum ini, cara saintis memproses data graf adalah dengan menukar graf kepada satu set "perwakilan vektor" semasa peringkat prapemprosesan data.

Kemunculan CNN telah mengubah sepenuhnya kelemahan kehilangan maklumat ini Dalam tempoh 20 tahun yang lalu, generasi model terus berkembang, mempromosikan kemajuan dalam bidang ML.

Hari ini, Google secara rasmi mengumumkan keluaran TensorFlow GNN 1.0 (TF-GNN) - perpustakaan yang diuji pengeluaran untuk membina GNN pada skala.

谷歌官宣TensorFlow-GNN 1.0发布!动态和交互采样,大规模构建图神经网络

Ia menyokong kedua-dua pemodelan dan latihan dalam TensorFlow, serta mengekstrak graf input daripada stor data yang besar.

TF-GNN dibina dari bawah untuk graf heterogen, di mana jenis objek dan perhubungan diwakili oleh set nod dan tepi yang berbeza.

Objek dan hubungannya di dunia nyata muncul dalam jenis yang berbeza, dan tumpuan heterogen TF-GNN menjadikannya sangat semula jadi untuk mewakilinya.

Saintis Google Anton Tsitsulin berkata bahawa pemodelan heterogen kompleks telah kembali!

谷歌官宣TensorFlow-GNN 1.0发布!动态和交互采样,大规模构建图神经网络

TF-GNN 1.0 pertama kali dikeluarkan

Objek dan hubungannya ada di mana-mana di dunia kita.

Kepentingan hubungan untuk memahami objek tidak kurang pentingnya daripada melihat sifat objek itu sendiri secara berasingan, seperti rangkaian pengangkutan, rangkaian pengeluaran, graf pengetahuan atau rangkaian sosial.

Matematik diskret dan sains komputer telah lama memformalkan rangkaian seperti graf, yang terdiri daripada "nod" yang disambungkan secara sewenang-wenang oleh tepi dalam pelbagai cara yang tidak teratur.

Walau bagaimanapun, kebanyakan algoritma pembelajaran mesin hanya membenarkan perhubungan tetap dan seragam antara objek input, seperti grid piksel, urutan perkataan atau tiada perhubungan langsung.

Graphic Neural Network, atau singkatannya GNN, ialah teknologi berkuasa yang bukan sahaja boleh mengeksploitasi ketersambungan graf (seperti algoritma awal DeepWalk dan Node2Vec), tetapi juga menggunakan ciri input nod dan tepi yang berbeza.

谷歌官宣TensorFlow-GNN 1.0发布!动态和交互采样,大规模构建图神经网络

GNN boleh berfungsi pada graf secara keseluruhan (adakah molekul ini bertindak balas dalam beberapa cara?), nod individu (mengikut petikan, apakah topik dokumen ini?), tepi berpotensi (ini Is produk yang mungkin dibeli dengan produk lain ) untuk ramalan.

Selain membuat ramalan pada graf, GNN ialah alat yang berkuasa untuk merapatkan jurang daripada kes penggunaan rangkaian saraf yang lebih tipikal.

Mereka mengekod maklumat hubungan diskret graf secara berterusan, membolehkannya digabungkan secara semula jadi ke dalam sistem pembelajaran mendalam yang lain.

Google hari ini secara rasmi mengumumkan TensorFlow GNN 1.0 (TF-GNN), perpustakaan yang diuji pengeluaran untuk membina GNN pada skala.

Dalam TensorFlow, graf sedemikian diwakili oleh objek jenis tfgnn.GraphTensor.

Ini ialah jenis tensor komposit (kumpulan tensor dalam kelas Python), diterima sebagai "objek kelas pertama" dalam tf.data.Dataset , tf.function dsb.

Ia boleh menyimpan bukan sahaja struktur graf, tetapi juga ciri-ciri nod, tepi dan keseluruhan graf.

Transformasi yang boleh dilatih untuk GraphTensors boleh ditakrifkan sebagai objek Lapisan dalam API Kera peringkat tinggi, atau terus menggunakan tfgnn.GraphTensor primitif.

GNN: Ramalan objek dalam konteks

Seterusnya, terangkan lagi TF-GNN, anda boleh melihat salah satu aplikasi biasa:

Ramalan rujukan silang dalam pangkalan data rujukan silang yang besar jenis nod tertentu dalam graf yang ditakrifkan oleh jadual

Sebagai contoh, dalam kertas arxiv pangkalan data sains komputer (CS), terdapat petikan satu-dengan-banyak dan hubungan petikan banyak-dengan-satu, yang boleh meramalkan kawasan subjek setiap kertas.

Seperti kebanyakan rangkaian saraf, GNN dilatih pada set data dengan banyak sampel berlabel (kira-kira berjuta-juta), tetapi setiap langkah latihan hanya terdiri daripada sekumpulan sampel latihan yang jauh lebih kecil (seperti Beratus-ratus).

Untuk menskalakan kepada berjuta-juta sampel, GNN dilatih pada aliran subgraf yang agak kecil dalam graf asas. Setiap subgraf mengandungi data mentah yang mencukupi untuk mengira keputusan GNN bagi nod berlabel pusat dan melatih model.

Proses ini, selalunya dipanggil pensampelan subgraf, amat penting untuk latihan GNN.

Kebanyakan alatan sedia ada melengkapkan pensampelan dalam cara kelompok dan menjana subgraf statik untuk latihan.

Dan TF-GNN menyediakan alatan untuk menambah baik perkara ini melalui pensampelan dinamik dan interaktif.

谷歌官宣TensorFlow-GNN 1.0发布!动态和交互采样,大规模构建图神经网络

Proses pensampelan subgraf, yang mengekstrak subgraf kecil yang boleh diambil tindakan daripada graf yang lebih besar untuk mencipta contoh input untuk latihan GNN

TF-GNN 1.0 memperkenalkan subgraf Python yang fleksibel, atau untuk subconfiguring API flexible pensampelan semua skala yang berkaitan: pensampelan interaktif dalam nota Colab.

Secara khusus, "pensampelan cekap" set data kecil yang disimpan dalam memori utama hos latihan tunggal, atau set data besar (sehingga ratusan juta nod dan data) yang disimpan dalam sistem fail rangkaian melalui Apache Beam tepi) untuk pensampelan teragih.

Pada subgraf sampel yang sama ini, tugas GNN adalah untuk mengira keadaan tersembunyi (atau potensi) nod punca agregat keadaan tersembunyi dan mengekod maklumat yang berkaitan kejiranan nod akar.

Kaedah biasa ialah "message passing neural network".

Dalam setiap pusingan pemesejan, nod menerima mesej daripada nod jiran di sepanjang tepi masuk dan mengemas kini keadaan tersembunyinya sendiri daripada tepi ini.

Selepas n pusingan, keadaan tersembunyi nod punca mencerminkan maklumat agregat semua nod dalam n tepi (seperti ditunjukkan dalam rajah di bawah, n=2). Mesej dan keadaan tersembunyi baharu dikira oleh lapisan tersembunyi rangkaian saraf.

Dalam graf heterogen, selalunya masuk akal untuk menggunakan lapisan tersembunyi yang dilatih secara berasingan untuk pelbagai jenis nod dan tepi. . nod. Setelah nod akar dicapai, ramalan akhir boleh dibuat

谷歌官宣TensorFlow-GNN 1.0发布!动态和交互采样,大规模构建图神经网络Persediaan latihan adalah dengan meletakkan lapisan output di atas keadaan tersembunyi GNN nod berlabel, mengira kerugian (untuk mengukur ralat ramalan) dan mengemas kini model melalui perambatan belakang Ini dilakukan menggunakan pemberat, yang biasa dalam mana-mana latihan rangkaian saraf.

Selain latihan diselia, GNN juga boleh dilatih dengan cara tanpa pengawasan, membolehkan kami mengira perwakilan berterusan (atau pembenaman) struktur graf diskret nod dan cirinya.

Perwakilan ini kemudiannya biasanya digunakan dalam sistem ML lain.

Dengan cara ini, maklumat hubungan diskret yang dikodkan oleh graf boleh digabungkan ke dalam kes penggunaan rangkaian saraf yang lebih tipikal. TF-GNN menyokong spesifikasi terperinci bagi sasaran yang tidak diawasi pada graf heterogen.

Membina seni bina GNN

Perpustakaan TF-GNN menyokong pembinaan dan latihan GNN pada tahap abstraksi yang berbeza.

Pada tahap tertinggi, pengguna boleh menggunakan mana-mana model pratakrif yang digabungkan dengan perpustakaan, yang diwakili sebagai lapisan Kera.

Selain set kecil model daripada literatur penyelidikan, TF-GNN didatangkan dengan templat model yang sangat boleh dikonfigurasikan yang menyediakan pilihan pemodelan yang dipilih dengan teliti.

Google menemui pilihan ini, memberikan garis dasar yang kukuh untuk banyak isu dalaman kami. Templat melaksanakan lapisan GNN pengguna hanya perlu memulakannya bermula dari lapisan Kera.

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中的大规模应用,并推动该领域的进一步创新。

Atas ialah kandungan terperinci Google secara rasmi mengumumkan keluaran TensorFlow-GNN 1.0! Persampelan dinamik dan interaktif untuk membina rangkaian saraf graf pada skala. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam