【ぐらふにゅーらるねっとわーく】

グラフニューラルネットワーク(GNN) とは?

公開:
💡 つながりを読むAI——グラフの形ごと理解する神経回路
📌 このページのポイント
GNN:メッセージパッシングの仕組み 入力グラフ A B C D ノードAは B・C・D と隣接 集約 更新 メッセージパッシング後 A' 更新済み B C D B・C・Dの情報を集約してA'に更新
GNNのメッセージパッシング:隣接ノードの情報を集約してノード表現を更新する
ひよこ ひよこ
ペンギン先生、GNNって普通のニューラルネットワークと何が違うの?
ペンギン先生 ペンギン先生
普通のNNは画像(グリッド)や文章(シーケンス)みたいな「整った形」のデータが得意なんだよ。でも友人関係やタンパク質の分子構造みたいな「ノードとエッジのつながり」で表されるデータには対応できなかった。GNNはそのグラフ構造をそのまま入力できるんだ。
ひよこ ひよこ
ノードとエッジって、点と線のことだよね。それをどうやって学習するの?
ペンギン先生 ペンギン先生
「メッセージパッシング」という仕組みを使うんだよ。各ノードが隣のノードから情報を受け取って(メッセージ)、自分の表現ベクトルを更新する。それを何ステップか繰り返すことで、より遠い隣接関係の情報も取り込めるんだ。
ひよこ ひよこ
具体的にどんなことに使われてるの?
ペンギン先生 ペンギン先生
たとえばSNSでは「誰と誰がつながっているか」というグラフから友達推薦や詐欺アカウント検出ができるよ。製薬では分子をグラフとして表現して新薬候補の毒性を予測したり。ナレッジグラフを使ったQ&Aシステムにも使われているんだ。
ひよこ ひよこ
GCNとかGATとか亜種がたくさんあるけど、どう違うの?
ペンギン先生 ペンギン先生
GCN(Graph Convolutional Network)は近傍を均等に集約するシンプルな方法で、GATはAttentionを使って「どの隣人を重視するか」を学習できるんだよ。GraphSAGEはサンプリングで大規模グラフにも対応している。タスクや規模に応じて使い分けるんだ。
ひよこ ひよこ
グラフが大きくなるとメモリが大変になりそうだけど、それはどうするの?
ペンギン先生 ペンギン先生
良い着眼点だね!大規模グラフではすべてのノードを一度に処理するとメモリが足りなくなるから、ミニバッチ学習やサブグラフサンプリングを使うんだよ。GraphSAGEはその代表で、近傍を一部だけサンプリングしてスケーラブルに学習できる手法だね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「GNN」って出てきたら「グラフ構造データを扱えるNN」と思えればだいたいOK!
📖 おまけ:英語の意味
「Graph Neural Network」 = グラフニューラルネットワーク
💬 「Graph(グラフ)」+「Neural Network(ニューラルネットワーク)」を合わせた名前で、グラフ構造を処理するニューラルネットという意味がそのまま名前になっているんだよ
← 用語集にもどる