| Grafik dinamis | Tgn |
|---|---|
![]() | ![]() |
Terlepas dari kebanyakan model yang berbeda untuk pembelajaran mendalam pada grafik, beberapa pendekatan telah diusulkan sejauh ini untuk menangani grafik yang menghadirkan semacam sifat dinamis (misalnya fitur yang berkembang atau konektivitas dari waktu ke waktu).
Dalam makalah ini, kami menyajikan jaringan grafik temporal (TGNs), kerangka kerja generik dan efisien untuk pembelajaran mendalam pada grafik dinamis yang direpresentasikan sebagai urutan peristiwa waktunya. Berkat kombinasi baru dari modul memori dan operator berbasis grafik, TGNs dapat secara signifikan mengungguli pendekatan sebelumnya pada saat yang sama lebih efisien secara komputasi.
Kami selanjutnya menunjukkan bahwa beberapa model sebelumnya untuk belajar pada grafik dinamis dapat dilemparkan sebagai contoh spesifik dari kerangka kerja kami. Kami melakukan studi ablasi terperinci tentang berbagai komponen kerangka kerja kami dan merancang konfigurasi terbaik yang mencapai kinerja canggih pada beberapa tugas prediksi transduktif dan induktif untuk grafik dinamis.
Dependensi (dengan python> = 3.7):
pandas==1.1.0
torch==1.6.0
scikit_learn==0.23.1
Unduh Dataset Sampel (mis. Wikipedia dan Reddit) dari sini dan menyimpan file CSV mereka dalam folder bernama data/ .
Kami menggunakan format npy padat untuk menyimpan fitur dalam format biner. Jika fitur tepi atau fitur node tidak ada, mereka akan diganti dengan vektor nol.
python utils/preprocess_data.py --data wikipedia --bipartite
python utils/preprocess_data.py --data reddit --bipartite
Pembelajaran yang di-swadaya menggunakan tugas prediksi tautan:
# TGN-attn: Supervised learning on the wikipedia dataset
python train_self_supervised.py --use_memory --prefix tgn-attn --n_runs 10
# TGN-attn-reddit: Supervised learning on the reddit dataset
python train_self_supervised.py -d reddit --use_memory --prefix tgn-attn-reddit --n_runs 10
Pembelajaran yang diawasi pada klasifikasi simpul dinamis (ini membutuhkan model terlatih dari tugas yang di-swadaya, misalnya menjalankan perintah di atas):
# TGN-attn: self-supervised learning on the wikipedia dataset
python train_supervised.py --use_memory --prefix tgn-attn --n_runs 10
# TGN-attn-reddit: self-supervised learning on the reddit dataset
python train_supervised.py -d reddit --use_memory --prefix tgn-attn-reddit --n_runs 10
### Wikipedia Self-supervised
# Jodie
python train_self_supervised.py --use_memory --memory_updater rnn --embedding_module time --prefix jodie_rnn --n_runs 10
# DyRep
python train_self_supervised.py --use_memory --memory_updater rnn --dyrep --use_destination_embedding_in_message --prefix dyrep_rnn --n_runs 10
### Reddit Self-supervised
# Jodie
python train_self_supervised.py -d reddit --use_memory --memory_updater rnn --embedding_module time --prefix jodie_rnn_reddit --n_runs 10
# DyRep
python train_self_supervised.py -d reddit --use_memory --memory_updater rnn --dyrep --use_destination_embedding_in_message --prefix dyrep_rnn_reddit --n_runs 10
### Wikipedia Supervised
# Jodie
python train_supervised.py --use_memory --memory_updater rnn --embedding_module time --prefix jodie_rnn --n_runs 10
# DyRep
python train_supervised.py --use_memory --memory_updater rnn --dyrep --use_destination_embedding_in_message --prefix dyrep_rnn --n_runs 10
### Reddit Supervised
# Jodie
python train_supervised.py -d reddit --use_memory --memory_updater rnn --embedding_module time --prefix jodie_rnn_reddit --n_runs 10
# DyRep
python train_supervised.py -d reddit --use_memory --memory_updater rnn --dyrep --use_destination_embedding_in_message --prefix dyrep_rnn_reddit --n_runs 10
Perintah untuk mereplikasi semua hasil dalam studi ablasi melalui modul yang berbeda:
# TGN-2l
python train_self_supervised.py --use_memory --n_layer 2 --prefix tgn-2l --n_runs 10
# TGN-no-mem
python train_self_supervised.py --prefix tgn-no-mem --n_runs 10
# TGN-time
python train_self_supervised.py --use_memory --embedding_module time --prefix tgn-time --n_runs 10
# TGN-id
python train_self_supervised.py --use_memory --embedding_module identity --prefix tgn-id --n_runs 10
# TGN-sum
python train_self_supervised.py --use_memory --embedding_module graph_sum --prefix tgn-sum --n_runs 10
# TGN-mean
python train_self_supervised.py --use_memory --aggregator mean --prefix tgn-mean --n_runs 10
optional arguments:
-d DATA, --data DATA Data sources to use (wikipedia or reddit)
--bs BS Batch size
--prefix PREFIX Prefix to name checkpoints and results
--n_degree N_DEGREE Number of neighbors to sample at each layer
--n_head N_HEAD Number of heads used in the attention layer
--n_epoch N_EPOCH Number of epochs
--n_layer N_LAYER Number of graph attention layers
--lr LR Learning rate
--patience Patience of the early stopping strategy
--n_runs Number of runs (compute mean and std of results)
--drop_out DROP_OUT Dropout probability
--gpu GPU Idx for the gpu to use
--node_dim NODE_DIM Dimensions of the node embedding
--time_dim TIME_DIM Dimensions of the time embedding
--use_memory Whether to use a memory for the nodes
--embedding_module Type of the embedding module
--message_function Type of the message function
--memory_updater Type of the memory updater
--aggregator Type of the message aggregator
--memory_update_at_the_end Whether to update the memory at the end or at the start of the batch
--message_dim Dimension of the messages
--memory_dim Dimension of the memory
--backprop_every Number of batches to process before performing backpropagation
--different_new_nodes Whether to use different unseen nodes for validation and testing
--uniform Whether to sample the temporal neighbors uniformly (or instead take the most recent ones)
--randomize_features Whether to randomize node features
--dyrep Whether to run the model as DyRep
@inproceedings { tgn_icml_grl2020 ,
title = { Temporal Graph Networks for Deep Learning on Dynamic Graphs } ,
author = { Emanuele Rossi and Ben Chamberlain and Fabrizio Frasca and Davide Eynard and Federico
Monti and Michael Bronstein } ,
booktitle = { ICML 2020 Workshop on Graph Representation Learning } ,
year = { 2020 }
}