Graph Convolutional Network(GCN)は、グラフ上の近傍ノードの特徴を集約して各ノードの表現を更新するニューラルネットワーク(GNN)です。CNNが画像の「上下左右の画素」を混ぜるのに対し、GCNはエッジでつながった隣人を混ぜる——本記事はスペクトル理論の細部より、「格子の畳み込みをグラフにどう写したか」に焦点を当てます。
なぜグラフ専用のNNが要るか
ユーザー同士のつながり、論文の引用関係、駅の路線網——こうしたデータは表や画像のように整列していません。ノード(頂点)とエッジ(辺)で関係だけが与えられ、隣接の数も相手もバラバラです。
通常の全結合ニューラルネットワークにそのまま入れると、誰と誰がつながっているかという構造情報が失われます。GNNはこの構造を保ったまま学習する家族で、GCNはその中でもシンプルで影響力の大きい基礎形です。
CNNとのたとえ
| 観点 | CNN(画像) | GCN(グラフ) |
|---|---|---|
| データの形 | 格子状の画素グリッド | ノード・エッジのネットワーク |
| 「近所」 | 上下左右の画素(TF-401) | エッジで直接つながった隣接ノード |
| 演算のイメージ | フィルタで局所特徴を抽出 | 近傍特徴を重み付きで集約・混合 |
| 層を重ねると | 受容野が広がる | ホップ数が増え、遠いノードの情報も間接的に届く |
試験では「GCN=CNN」と答えず、発想の共通点(局所集約)とデータ構造の違いをセットで覚えるのが安全です。
GCN層がやること
1層のGCNは、ざっくり次の流れです。
- 変換 — 各ノードの特徴ベクトルに学習可能な行列を掛ける
- 集約 — 隣接ノード(としばしば自分自身)の変換後特徴を足し合わせる
- 正規化 — ノードの次数(つながりの数)などでスケールを揃える
- 活性化 — 非線形関数を通して次の層へ渡す
重要なのは、近傍への重みがグラフ構造から決まる固定の係数である点です。誰が隣かはエッジで決まり、学習で変わるのは特徴の変換行列側——GATが後から「どの隣を強く見るか」まで学習する、という系譜の出発点と捉えると整理しやすいです。
タスク例:論文のジャンル分類(ノード分類)、薬物・分子の物性予測、推薦のユーザー・商品グラフ。いずれも関係の形が予測に効きます。
GAT・Transformerとの違い
| 名前 | データ | 集約の仕方 |
|---|---|---|
| GCN | グラフ | 構造に基づく固定の近傍集約 |
| GAT | グラフ | 学習した注意重みで近傍を集約 |
| Transformer | 系列 | Self-Attentionで系列内を(実質)全結合 |
| CNN | 画像格子 | 畳み込みフィルタで局所抽出 |
G-295のAttentionは系列モデルの文脈で出題されます。GCNはAttentionそのものではなく、グラフ上のメッセージパッシング——近所から情報を受け取って更新する——という別の設計軸です。
試験で押さえるポイント
- 定義 — グラフ上で近傍集約するGNN。畳み込み的演算
- データ — ノード・エッジ・特徴。画像格子や系列とは別
- 対比 — CNN=格子、GCN=グラフ、GAT=注意付きグラフ集約
- すり替え回避 — Transformer・RNN・物体検出モデルではない
すり替えに注意
| 誤った説明 | 正しい理解 |
|---|---|
| GCN=CNN | 発想は近いがデータ構造が異なる |
| GCN=GAT | 固定集約 vs 注意重み |
| GCN=Transformer | グラフGNN vs 系列モデル |
| GCN=RNN | グラフ近傍 vs 系列の時間方向 |
| GCN=畳み込みカーネル | モデル全体 vs 画像用のフィルタ部品 |
よくある質問
GCN(Graph Convolutional Network)とは何ですか?
グラフ上の各ノードが、エッジでつながった近傍ノードの特徴ベクトルを集約して自身の表現を更新するニューラルネットワークです。画像の格子に対するCNNの畳み込みと同様に「近所の情報を混ぜる」発想を、ノード・エッジ構造のデータに適用したGNNとして知られます。
GCNとCNNは同じですか?
同じではありません。CNNは画像のような規則的な格子状データにフィルタを適用し局所特徴を抽出します。GCNは友人関係や分子結合など、隣接関係が不規則なグラフデータで近傍を集約します。畳み込みの発想は通じますが、入力の形と演算の対象が異なります。
GCNとGATは同じですか?
同じではありません。どちらもグラフニューラルネットワークですが、GCNはグラフ構造に基づく固定の集約係数で近傍を混ぜるのに対し、GATは隣接ノードごとに学習した注意重みで集約します。近傍の重要度を動的に選ぶかどうかが大きな違いです。