| 動的グラフ | TGN |
|---|---|
![]() | ![]() |
グラフ上の深い学習のためのさまざまなモデルが多数あるにもかかわらず、これまで、何らかの動的な性質(進化する特徴や時間の経過に伴う接続性)を提示するグラフを扱うために、これまでのところほとんどアプローチが提案されていません。
このホワイトペーパーでは、タイミングイベントのシーケンスとして表される動的グラフでの深い学習のための一般的で効率的なフレームワークである、時間グラフネットワーク(TGN)を紹介します。メモリモジュールとグラフベースの演算子の新しい組み合わせのおかげで、TGNは、以前のアプローチが同時に計算上効率的であると同時に大幅に上回ることができます。
さらに、動的グラフで学習するためのいくつかの以前のモデルを、フレームワークの特定のインスタンスとしてキャストできることを示しています。フレームワークのさまざまなコンポーネントの詳細なアブレーション研究を実行し、動的グラフのいくつかのトランスダクティブおよび誘導予測タスクで最先端のパフォーマンスを達成する最適な構成を考案します。
依存関係(Python> = 3.7を使用):
pandas==1.1.0
torch==1.6.0
scikit_learn==0.23.1
ここからサンプルデータセット(WikipediaやRedditなど)をダウンロードし、CSVファイルをdata/という名前のフォルダーに保存します。
密なnpy形式を使用して、機能をバイナリ形式で保存します。エッジ機能またはノード機能がない場合、それらはゼロのベクトルに置き換えられます。
python utils/preprocess_data.py --data wikipedia --bipartite
python utils/preprocess_data.py --data reddit --bipartite
リンク予測タスクを使用した自己教師の学習:
# 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
動的ノード分類に関する監視された学習(これには、上記のコマンドを実行することにより、自己監視されたタスクからの訓練されたモデルが必要です):
# 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
さまざまなモジュールを介したアブレーション研究ですべての結果を再現するコマンド:
# 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 }
}