カプセルグラフニューラルネットワークのPytorch実装(ICLR 2019)。

グラフニューラルネットワーク(GNNS)から学習した高品質のノード埋め込みは、幅広いノードベースのアプリケーションに適用されており、その一部は最先端(SOTA)パフォーマンスを達成しています。ただし、GNNSから学習したノード埋め込みを適用してグラフ埋め込みを生成する場合、スカラーノード表現はノード/グラフプロパティを効率的に保存するのに十分ではなく、最適なグラフ埋め込みをもたらします。 Capsule Neural Network(CapsNet)に触発されて、Capsule Graph Neural Network(Capsgnn)を提案します。カプセルの概念を採用して、既存のGNNベースのグラフ埋め込みアルゴリズムの弱点に対処します。カプセルの形でノード機能を抽出することにより、ルーティングメカニズムを利用して、グラフレベルで重要な情報をキャプチャできます。その結果、私たちのモデルは、各グラフの複数の埋め込みを生成して、さまざまな側面からグラフプロパティをキャプチャします。 Capsgnnに組み込まれたAttonest Moduleは、さまざまなサイズのグラフに取り組むために使用されます。これにより、モデルはグラフの重要な部分に焦点を当てることができます。 10個のグラフ構造化データセットを使用した当社の広範な評価は、capsgnnがデータ駆動型によってグラフ全体の巨視的特性をキャプチャするために動作する強力なメカニズムを持っていることを示しています。新しい機器のおかげで、いくつかのグラフ分類タスクで他のSOTAテクニックよりも優れています。
このリポジトリは、論文に記載されているように、capsgnnのPytorch実装を提供します。
カプセルグラフニューラルネットワーク。 Zhang Xinyi、Lihui Chen。 ICLR、2019。[紙]
コアカプセルニューラルネットワークの実装が適応されています[こちら]。
コードベースはPython 3.5.2に実装されています。開発に使用されるパッケージバージョンはすぐにあります。
networkx 2.4
tqdm 4.28.1
numpy 1.15.4
pandas 0.23.4
texttable 1.5.0
scipy 1.1.0
argparse 1.1.0
torch 1.1.0
torch-scatter 1.4.0
torch-sparse 0.4.3
torch-cluster 1.4.5
torch-geometric 1.3.2
torchvision 0.3.0
コードは、各グラフがJSONとして保存されている入力フォルダーからトレーニング用のグラフを採用します。テストに使用されるグラフは、JSONファイルとしても保存されます。すべてのノードIDおよびノードラベルは0からインデックス作成する必要があります。JSONシリアル化を可能にするために、辞書のキーは文字列を保存します。
すべてのJSONファイルには、次のキー価値構造があります。
{ "edges" : [ [ 0 , 1 ] , [ 1 , 2 ] , [ 2 , 3 ] , [ 3 , 4 ] ] ,
"labels" : { "0" : "A" , "1" : "B" , "2" : "C" , "3" : "A" , "4" : "B" } ,
"target" : 1 }**エッジ**キーには、接続構造を説明するエッジリスト値があります。 **ラベル**キーには、辞書として保存されている各ノードのラベルがあります。このネストされた辞書ラベル内には、ノード識別子はキーです。 **ターゲット**キーには、クラスメンバーシップである整数値があります。
予測は `output/`ディレクトリに保存されます。各埋め込みには、グラフ識別子を備えたヘッダーと列があります。最後に、予測は識別子列によってソートされます。
capsgnnモデルのトレーニングは、次のコマンドライン引数を提供する「src/main.py」スクリプトによって処理されます。
--training-graphs STR Training graphs folder. Default is `input/train/`.
--testing-graphs STR Testing graphs folder. Default is `input/test/`.
--prediction-path STR Output predictions file. Default is `output/watts_predictions.csv`.
--epochs INT Number of epochs. Default is 100.
--batch-size INT Number fo graphs per batch. Default is 32.
--gcn-filters INT Number of filters in GCNs. Default is 20.
--gcn-layers INT Number of GCNs chained together. Default is 2.
--inner-attention-dimension INT Number of neurons in attention. Default is 20.
--capsule-dimensions INT Number of capsule neurons. Default is 8.
--number-of-capsules INT Number of capsules in layer. Default is 8.
--weight-decay FLOAT Weight decay of Adam. Defatuls is 10^-6.
--lambd FLOAT Regularization parameter. Default is 0.5.
--theta FLOAT Reconstruction loss weight. Default is 0.1.
--learning-rate FLOAT Adam learning rate. Default is 0.01.
次のコマンドはモデルを学習し、予測を保存します。デフォルトのデータセットでモデルのトレーニング:
$ python src/main.py
100エポックのCapsgnnnモデルのトレーニング。
$ python src/main.py --epochs 100バッチサイズの変更。
$ python src/main.py --batch-size 128ライセンス