Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Graph Neural Networksを完全に理解したい

shimacos
November 07, 2019

Graph Neural Networksを完全に理解したい

社内の輪講で発表した資料です。
Graph Neural NetworksについてSpectral MethodとSpatial Methodについて代表的な手法を簡単に紹介し、更にDeep Graph Library (DGL)を用いた具体的な実装方法を紹介しています。

shimacos

November 07, 2019
Tweet

More Decks by shimacos

Other Decks in Research

Transcript

  1. 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

    View full-size slide

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

    View full-size slide

  3. 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
    • ⾊々なドメインのデータに触れるのが好き

    View full-size slide

  4. 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

    View full-size slide

  5. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  9. 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

    View full-size slide

  10. 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を学習させる
    固有⾏列

    View full-size slide

  11. 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の始まり

    View full-size slide

  12. 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

    View full-size slide

  13. 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も悪さしてそう
    隣接⾏列によって近傍ノードの畳み込みを表現

    View full-size slide

  14. 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]

    View full-size slide

  15. 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]

    View full-size slide

  16. 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

    View full-size slide

  17. 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

    View full-size slide

  18. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  21. 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

    View full-size slide

  22. 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で更新

    View full-size slide

  23. 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に対応

    View full-size slide

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

    View full-size slide

  25. 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の定義

    View full-size slide

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

    View full-size slide

  27. 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の値を更新

    View full-size slide

  28. 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)
    など

    View full-size slide

  29. 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

    View full-size slide