Slide 1

Slide 1 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 1 Graph Neural Networks を完全に理解したい (株) Mobility Technologies AIシステム部 データサイエンスG (DeNAから出向) 島越 直⼈ 2019/11/07

Slide 2

Slide 2 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. (DeNA在籍時の成果をまとめたものなので、DeNAフォーマットの資料になります) 2

Slide 3

Slide 3 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. ⾃⼰紹介 • 名前 • 島越 直⼈ (シマコシ ナオト) • よくトリゴエと間違えられますがシマコシです。 • Twitter • @nt_4o54 • 経歴 • 奈良県出⾝ • KUの機械系⼤学院 卒 • 2019/04 ~ 2020/03 DeNA • 2020/04 ~ Mobility Technologiesに出向 • Kaggle • @shimacos (⾦ 1, ソロ銀 2) • Kaggle Master • ⾊々なドメインのデータに触れるのが好き

Slide 4

Slide 4 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. ⽬的 n Graph Neural Networks (GNN)と⼀⾔に⾔っても⾊々な種類があってわかりにく い。体系的に理解したい。 ⁃ Graphの対象が広い (Knowledge Graph, 道路ネットワーク, 分⼦構造, etc …) ⁃ その結果として解きたいタスクも様々 ⁃ 少し調べると数式が多く出てきて実装が⾒えにくい n 今⽇は「完全に理解した」ところまで到達するのが⽬標 ⁃ なるべく抽象度をあげて理解することでそれぞれのアルゴリズムが得意なタスクを知る 4 https://note.mu/kaneshin/n/n11ec6c23fb11

Slide 5

Slide 5 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 今⽇話すこと n GNNがどのように派⽣してきたか ⁃ RecGNN ⁃ Spectral-based GNN ⁃ Spacial-based GNN n どのように実装すればよいか ⁃ Deep Graph LibraryによるGraph Convolutional Networkの実装例 5

Slide 6

Slide 6 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. GNNとは︖ n ⼀⾔でいうとGraphデータに対して応⽤したNeural Network n 画像との違いは︖ ⁃ 畳み込みたいノードの数が不変 ⁃ ノードの並び順に意味がない 6 Image Graph https://arxiv.org/abs/1901.00596

Slide 7

Slide 7 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Graph Neural Networkの種類 7 だいたいこの順番で 発展してきた https://arxiv.org/abs/1901.00596 今回主に話すのはこの辺り

Slide 8

Slide 8 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 数式 n 基本的にhttps://arxiv.org/abs/1901.00596に基づいています。 8

Slide 9

Slide 9 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Recurrent Graph Neural Networks 9 n 初期に提案されたGNN n 周囲ノードの情報の伝播を同じ関数を⽤いて再帰的に⾏う ⁃ ConvGNNは畳み込みごとに異なる重みを⽤いる ⁃ 計算コストが⾮常に⾼い n 再帰関数にGRUを⽤いたGated Graph Neural Network [Y. LI et al., 2015] など RecGNNとConvGNNの違い https://arxiv.org/abs/1901.00596

Slide 10

Slide 10 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Spectral-based Convolutional Graph Neural Networks 10 n RecGNNは計算コストが⾼い ⁃ CNNのような並列計算可能な畳み込みを定義したい n グラフ信号処理的に畳み込みを定義 (詳細は@yiemon773さんの素晴らしい資料を参照) ⁃ グラフラプラシアン の固有値分解 を考える ⁃ グラフフーリエ変換を として定義 ⁃ を でfilteringする問題として置き換えることができる n 問題点 ⁃ 固有値分解の計算コストが⾼い ⁃ が に依存しているため、異なる構造のグラフ間でパラメータを共有できない をlearnableにする →意味のあるfilterを学習させる 固有⾏列

Slide 11

Slide 11 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Spectral-based Convolutional Graph Neural Networks 11 n ChebNet [M. Differrard et al., 2016] ⁃ をチェビシェフ多項式 で近似することで固有値分解の計算を省略 n Graph Convolutional Network (GCN) [T. N. Kipf et al., 2017] ⁃ ChebNetにおいて と仮定をおく ⁃ この学習は経験的に不安定であることが知られており、⾃⼰ノードへのエッジを加えて 正規化するnormalization trickによってこの問題を回避 , ⾃⾝を含む周辺ノードを重み付けて ⾜し合わせることに対応。 直感的に理解しやすい形になった。 = Spatial-based ConvGNNの始まり

Slide 12

Slide 12 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Spatial-based Convolutional Graph Neural Networks n グラフの空間的な関係に基づいて畳み込みを定義 ⁃ Spectal-basedよりも直感的で最近の研究はSpatial-basedのものが多数派 ⁃ この研究の先駆けはNeural Network for Graphs [A. Micheli et al., 2009] の周辺ノードの特徴量 を 重み で⾜し合わせる Residual connection and Skip connection

Slide 13

Slide 13 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Spatial-based Convolutional Graph Neural Networks n グラフの空間的な関係に基づいて畳み込みを定義 ⁃ Spectal-basedよりも直感的で最近の研究はSpatial-basedのものが多数派 ⁃ この研究の先駆けはNeural Network for Graphs [A. Micheli et al., 2009] ⁃ GCNとの違いは隣接⾏列がnormalizeされていないため学習が不安定になる点 • Residual connectionやskip connectionも悪さしてそう 隣接⾏列によって近傍ノードの畳み込みを表現

Slide 14

Slide 14 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Spatial-based Convolutional Graph Neural Networks n Diffusion Graph Convolutional Network [J. Atwood et al., 2016] ⁃ グラフ上の畳み込みを拡散過程として捉えて定義 ⁃ あるノードからノードへの情報の伝播は特定の遷移確率によって⾏われるという仮定をおい た ⁃ K回上記の畳み込みを⾏ったのちに⾜し合わせる ⁃ Center nodeから遠いノードの情報がほとんど伝達されないという問題が存在 • ノード間距離に応じて隣接⾏列を⽤意し、shortest pathsを追加した PGC-DGCNN [D. V. Tran et al., 2018] • 近傍ノードをQグループに分割し、グループごとにパラメータを持たせるPartition Graph Convolution[S. Yan et al., 2018]

Slide 15

Slide 15 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Spatial-based Convolutional Graph Neural Networks n GraphSage [W. Hamilton et al., 2017] ⁃ ⼤規模グラフに対するグラフ畳み込み ⁃ 近傍ノードの数はノードによって⼤幅に異なることが多いため、⾮効率になりがち ⁃ 近傍ノードをエッジに沿って固定ステップだけRandom Sampling ( ) ⁃ Update function は順番に依存しない関数である必要がある ⁃ 更に多くの効率的なアルゴリズムが登場している • 各レイヤーで固定数のノードをRandom SamplingするFast-GCN[J. Cheng et al., 2018] • グラフクラスタリングアルゴリズムを⽤いてsubgraphを作成し、その中でのみ畳み込みを⾏う Cluster-GCN [W. L. Chiang et al., 2019]

Slide 16

Slide 16 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Spatial-based Convolutional Graph Neural Networks n Graph Attention Network [P. Velickovic et al., 2017] ⁃ 近傍ノードがどの程度central nodeの更新に寄与するかを学習させる ⁃ Multi-head Attentionを⽤いることでnode classificationにおいてGraphSageを⼤きく上回る ⁃ 発展系 • Self-Attentionを⽤いたGated Attention Network [J. Zhang et al., 2018] • LSTM-likeなgating mechanismを⽤いた GeniePath [Z.Liu et al., 2018] https://arxiv.org/pdf/1802.00910.pdf

Slide 17

Slide 17 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Spatial-based Convolutional Graph Neural Networks n Relational Graph Convolutional Network [S. Michael et al., 2017] ⁃ エッジの向きに意味のある有向グラフの特徴を利⽤するネットワーク ⁃ エッジの種類ごとに異なる重み を⽤いる https://arxiv.org/pdf/1703.06103.pdf

Slide 18

Slide 18 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. まとめ n Spectral-ConvGNNよりSpacial-ConvGNNが現在は主流 ⁃ Spectral-basedはグラフ全体を同時に扱うため、scalabilityが低い。 • Spacial-basedはノードに着⽬するため、⼯夫することで⼤規模グラフも扱うことができる ⁃ Spectral-basedはグラフが固定されてることが前提 • Spacial-basedは異なる場所のノードでも容易に重みを共有することができる ⁃ Spectral-basedは有向グラフを扱えない n ConvGNNの⽅向性としては以下のようなものが多い印象 ⁃ 離れているノードの情報をどのようにして⽤いるか ⁃ ⼤規模グラフに対してどのようにして情報を落とさず効率的に畳み込みを計算するか ⁃ EdgeのAttentionをどのようにして計算するか (Edgeの有無が定かではないグラフにどう適応 するか) 18

Slide 19

Slide 19 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 19 なんとなく概念的には分かってきたような気がするけど どうやって実装するの︖︖

Slide 20

Slide 20 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 20 なんとなく概念的には分かってきたような気がするけど どうやって実装するの︖︖ Deep Graph Library (DGL)が便利︕︕︕

Slide 21

Slide 21 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Deep Graph Library の使い⽅ n G = dgl.DGLGraph(graph_data) でグラフを作成 ⁃ An edge list (e.g. [(0, 1), (1, 2), ...]) ⁃ networkx graph object. ⁃ scipy sparse matrix n G.ndata[‘feat’] = torch.randn((num_node, num_feature)) : 各nodeに特徴量を持たせる ⁃ G.ndata 内にdict型で保存 n G.edata[‘feat’] = torch.ones(( num_edge, )) : 各edgeに特徴量を持たせる n G.nodes[node_idx], G.edges[src, dst] : 特徴量辞書にアクセス n G.in_degrees[node_idx] : node_idx の node と繋がるnodeの数を取得 21

Slide 22

Slide 22 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Deep Graph Library の使い⽅ n G.update_all(message_func, reduce_func, [apply_node_func]) ⁃ message_func : srcの特徴がdstにedgeを通ってどのように伝播されるかを定義 ⁃ reduce_func : message_funcによって伝播された特徴をどのようにaggregateするかを定義 22 https://docs.dgl.ai/tutorials/basics/3_pagerank.html message_func を通して edge.dst.mailbox に ⼀時的に値が格納される srcのnodeに apply_node_funcを適⽤ srcのnodeとdstのnodeから dstのnodeを resuce_funcで更新

Slide 23

Slide 23 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Message Passing Neural Network (MPNN) [Glimer et al., 2017] 23 n GNNを3つの関数でフレームワーク化 ⁃ Message Function • エッジの特徴と周辺ノードから特徴量を伝達する役割 ⁃ Update Function • Message Functionで伝播された特徴と⾃ノードの特徴から⾃ノードをUpdateする役割 ⁃ Readout Function • 最終的な出⼒を作成する関数 (Graphの特徴を得るときに⽤いられることが多い) n これに則ればDGLのupdate_allで任意のGNNを表現できる (はず) update_allの message_funcに対応 update_allの reduce_funcに対応

Slide 24

Slide 24 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Graph Convolutional Network の DGL 実装 24 with n GCNの定義

Slide 25

Slide 25 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Graph Convolutional Network の DGL 実装 25 with 事前にグラフに⾃⼰回帰の edgeを組み込むことで解決 g.add_edges(g.nodes(), g.nodes()) n GCNの定義

Slide 26

Slide 26 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Graph Convolutional Network の DGL 実装 26 with 各nodeにおける次数の normを計算して g.ndataに格納する n GCNの定義

Slide 27

Slide 27 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Graph Convolutional Network の DGL 実装 27 with mailboxに格納されている src nodeの ’m’ をsumして dst nodeの ‘h’ に格納する n GCNの定義 update_allで 全てのnodeの値を更新

Slide 28

Slide 28 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 既に多くのGNNが組み込まれているため⾮常に便利 28 めちゃくちゃ簡単に書ける︕︕ n GraphConv (GCN) n RelGraphConv (Relational GCN) n GATConv (GAT) n SAGEConv (Graph SAGE) n GINConv (GIN) n ChebConv (ChebNet) など

Slide 29

Slide 29 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. 参考 29 n A Comprehensive Survey on Graph Neural Networks n @shionhondaさんのGNNまとめシリーズ n Learning Graph Neural Networks with Deep Graph Library (KDD'19 hands-on tutorial ) n はじめてのGraph Convolutional Network