圖神經網路入門

魚與魚 發表於 2020-11-22
神經網路

拜讀了Jure Leskovec的《Representation Learning on Networks》才明白圖神經網路到底在學什麼,是如何學的,不同GNN模型之間的關係是什麼。總的來說,不同型別的模型都是在探討如何利用圖的節點資訊去生成節點(圖)的embedding表示

圖表示學習的兩大主流思想

  • 線性化思想
    • Deepwalk,Node2vec,LINE
  • 圖神經網路
    • GCN,GraphSAGE,Gated GNN,subgraph embedding

Node embedding

image-20201122094426114

目標:編碼節點使其在embedding空間的相似性近似為在原網路的相似性

  • 定義編碼器encoder
  • 定義節點相似性函式
  • 優化引數使 \(similarity(u, v) \approx z_v^Tz_u\)

可以看出,前兩步是node embedding的核心。

第一個問題:如何對映節點到低維空間?

參考word2vec,藉助embedding-lookup就可以

image-20201122101546380image-20201122101605110

第二個問題:如何定義節點相似性?

1. Adjacency-based similarity

  • Similarity function 定義為原網路中兩節點之間的邊的權重

  • 用點積近似邊是否存在

    image-20201122100458809

  • 找到使損失最小化的 embedding matrix \(Z \in R^{d*|V|}\)

2. Multi-hop similarity

考慮 k-hop 節點

上述方法的大致思想都是:

  1. 定義節點對的相似性
  2. 優化embedding去近似它們的相似性

3.Random walk approaches

DeepWalk,Node2vec

Graph neural networks

圖G:

  • V 頂點集
  • A 鄰接矩陣
  • \(X\in R^{m*|V|}\)為節點特徵矩陣
    • 文字、影像,例如社交網路中人口學資訊
    • 節點的度,聚類係數等

如何表示節點

  • 核心思想:根據鄰居節點生成節點的embedding

    image-20201122111304416

    每個節點擁有獨立的計算圖

  • how to aggregate information across the layers

    • 最簡單的方法就是 求均值

      image-20201122112219124

      image-20201122112247138

    • 其他方法......

  • 定義loss訓練模型

    • 無監督
    • 有監督

下面不同的GNN演算法都是在探索如何利用鄰域節點生成當前節點的embedding表示

  • GNN基礎思想

    \[\mathbf{h}_{v}^{k}=\sigma\left(\mathbf{W}_{k} \sum_{u \in N(v)} \frac{\mathbf{h}_{u}^{k-1}}{|N(v)|}+\mathbf{B}_{k} \mathbf{h}_{v}^{k-1}\right) \]

  • GCN

    \[\mathbf{h}_{v}^{k}=\sigma\left(\mathbf{W}_{k} \sum_{u \in N(v) \cup v} \frac{\mathbf{h}_{u}^{k-1}}{\sqrt{|N(u)||N(v)|}}\right) \]

  • GraphSAGE

    \[\mathbf{h}_{v}^{k}=\sigma\left(\left[\mathbf{W}_{k} \cdot \operatorname{AGG}\left(\left\{\mathbf{h}_{u}^{k-1}, \forall u \in N(v)\right\}\right), \mathbf{B}_{k} \mathbf{h}_{v}^{k-1}\right]\right) \]

    AGG函式可以定義為:

    • Mean

      \[\mathrm{AGG}=\sum_{u \in N(v)} \frac{\mathbf{h}_{u}^{k-1}}{|N(v)|} \]

    • Pool

      \[\mathrm{AGG}=\sigma\left(\left\{\mathrm{Q} \mathrm{h}_{u}^{k-1}, \forall u \in N(v)\right\}\right) \]

    • LSTM

      \[\mathrm{AGG}=\mathrm{LSTM}\left(\left[\mathbf{h}_{u}^{k-1}, \forall u \in \pi(N(v))\right]\right) \]

  • Gated Graph Neural Networks

    \[\mathbf{m}_{v}^{k}=\mathbf{W} \sum_{u \in N(v)} \mathbf{h}_{u}^{k-1} \]

    \[\mathbf{h}_{v}^{k}=\operatorname{GRU}\left(\mathbf{h}_{v}^{k-1}, \mathbf{m}_{v}^{k}\right) \]

上述方法都是nodel-level embeddings,如何embedding圖?

  • Subgraph Embeddings

    image-20201122150048851

    • 可以對子圖的節點求和
    • 引入“虛擬節點”表示子圖

以上內容僅是對圖神經網路初步瞭解的學習,[1]非常適合入門GNN,推薦大家閱讀,有問題歡迎交流。

[1] Jure Leskovec, 《Representation Learning on Networks》http://snap.stanford.edu/proj/embeddings-www/

相關文章