SNSの友達関係、分子構造、知識グラフ。これらはグラフで表現されるが、通常のニューラルネットワークでは扱いにくい。グラフニューラルネットワーク(GNN)は、グラフ構造を直接入力として受け取り、ノードや辺、グラフ全体の表現を学習する。近傍の情報を集約するメッセージパッシングが、その核心にある。

GNN メッセージパッシング GCN GAT グラフ学習

なぜGNNが必要か

グラフデータの特徴:

特徴 問題点
可変サイズ ノード数が固定でない → 固定長入力のNNに入らない
順序なし ノードに順番がない → 順列不変性が必要
非ユークリッド グリッド構造でない → CNNが直接使えない

メッセージパッシング

メッセージパッシング(Message Passing)

GNNの基本的な計算パターン:

1. 集約(Aggregate):近傍ノードの情報を集める

2. 更新(Update):自身の表現を更新する

h_v^(k) = UPDATE(h_v^(k-1), AGGREGATE({h_u^(k-1) : u ∈ N(v)}))

k回繰り返すと、k-hop近傍の情報が集約される。

代表的なGNNアーキテクチャ

GCN(Graph Convolutional Network)

GCN

H^(k) = σ(D̃^(-1/2) Ã D̃^(-1/2) H^(k-1) W^(k))

à = A + I(自己ループを追加した隣接行列)

D̃ = 次数行列

近傍の平均を取るシンプルな構造。

GAT(Graph Attention Network)

GAT

近傍ノードに異なる重み(attention)を付ける。

α_ij = softmax(LeakyReLU(a^T [Wh_i || Wh_j]))

重要な近傍に集中できる。

アーキテクチャ比較

モデル 集約方法 特徴
GCN 正規化平均 シンプル、効率的
GraphSAGE サンプリング + 集約 大規模グラフ向け
GAT Attention重み付き和 異質グラフに強い
GIN 和 + MLP 表現力が高い

GNNのタスク

タスク 出力
ノード分類 各ノードのラベル 論文の分野分類
リンク予測 辺の存在確率 友達推薦
グラフ分類 グラフ全体のラベル 分子の毒性予測

実務での応用

WEB開発での応用

推薦システム:ユーザー-アイテム二部グラフでの協調フィルタリング。

不正検知:取引ネットワークでの異常パターン検出。

ナレッジグラフ補完:欠けている関係の推論。

AI/MLでの応用

創薬:分子グラフから物性・活性を予測。

タンパク質構造:AlphaFold2でも使われる構造予測。

シーン理解:物体間の関係をグラフでモデル化。

コード解析:AST(抽象構文木)からの脆弱性検出。

実装ライブラリ

ライブラリ ベース 特徴
PyTorch Geometric PyTorch 最も広く使われる、豊富なモデル
DGL PyTorch/TensorFlow 大規模グラフ、分散学習
Spektral TensorFlow/Keras Keras風API

深掘りリンク

  • PyTorch Geometric ドキュメント
  • 論文:Kipf & Welling (2017) "Semi-Supervised Classification with Graph Convolutional Networks"
  • チュートリアル:Stanford CS224W(Graph ML)
  • 次のステップ:Heterogeneous GNN、Temporal GNN