# GNN（グラフニューラルネットワーク）とは？つながりのデータを学ぶ仕組みと活用例を分かりやすく解説！

> GNN（グラフニューラルネットワーク）とは、点（ノード）と線（エッジ）でつながりを表した「グラフ」のデータを学習するためのニューラルネットワークです。本記事では、グラフとは何か、仕組み（メッセージパッシング）、レコメンドや新薬開発、Googleマップなどの活用例を図解で分かりやすく解説します！

- URL: https://toukei-lab.com/gnn
- 公開: 2026.10.28
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では、「GNN（グラフニューラルネットワーク）」について分かりやすく解説していきます！「つながり」のデータを学ぶAIの仕組みから、身近な活用例、これからの広がりまで見ていきましょう！
:::

こんにちは！ウマたんです！

SNSで「知り合いかも？」と、本当に知り合いの人がおすすめに出てきて、ドキッとしたことはありませんか？

ネットショップの「この商品を買った人はこんな商品も」や、地図アプリの到着予想時間も、実は同じような考え方で支えられていることがあります。

そのカギになるのが、人と人、商品と人、道と道の「**つながり**」です。

そして、このつながりのデータを学ぶAIが「**GNN（グラフニューラルネットワーク）**」なんです。

:::talk{who="man" side="left"}
グラフって、棒グラフとか折れ線グラフのこと？
:::

:::talk{who="woman"}
ふつうのニューラルネットワークと何が違うのか知りたい！
:::

本記事では、次の4つを順番に解説していきます。

:::point
**・GNNとは？そもそも「グラフ」って何？**\
**・なぜGNNが必要なのか**\
**・GNNの仕組み（メッセージパッシング）**\
**・GNNの活用例とこれから**
:::

以下のYouTube動画でも解説していますので、あわせてチェックしてみてください！

::youtube{#lvMd1R9mmi8}

## GNNとは？そもそも「グラフ」って何？

まずは結論からいきましょう！

**GNNとは、グラフの形をしたデータを学習するためのニューラルネットワーク**です。

GNNは「**Graph Neural Network**」の略で、日本語では「グラフニューラルネットワーク」と呼ばれます。

### ここでいう「グラフ」は、点と線のつながりのこと

「グラフ」と聞くと、棒グラフや折れ線グラフを思い浮かべるかもしれませんね。

でも、GNNでいうグラフは、それとは違います。

ここでいうグラフとは、<mark>「点（ノード）」と「線（エッジ）」の2つで、ものどうしのつながりを表したデータの形</mark>のことです。

| 例 | 点（ノード） | 線（エッジ） |
|---|---|---|
| SNS | ユーザー | 友達どうしの関係 |
| 地図 | 交差点 | 道路 |
| 分子 | 原子 | 化学結合 |
| ネットショップ | 人と商品 | 「買った」「見た」という関係 |
| 銀行 | 口座 | お金のやりとり |

こうして並べてみると、世の中のデータの多くは、実はグラフで表せることが分かりますよね。

点や線には、情報をくっつけることもできます。たとえばSNSなら、ユーザーの点に「年齢」「よく投稿する話題」などを、友達の線に「知り合ってからの長さ」などを持たせられます。

## なぜGNNが必要なのか

では、なぜわざわざGNNという専用のニューラルネットワークが必要なのでしょうか？

### ふつうのニューラルネットワークは「きれいに並んだデータ」が得意

これまでのニューラルネットワークは、画像や文章のように、<mark>規則正しく並んだデータ</mark>を扱うのが得意でした。

画像なら、ピクセルが縦と横にきれいに並んでいます。文章なら、単語が1列に順番に並んでいます。

![画像はマス目、文章は1列に並ぶ。グラフはつながる数も順番もバラバラ](/wp-content/uploads/2026/10/gnn-data-structure.jpg)

たとえば画像を扱うのが得意な「畳み込みニューラルネットワーク（CNN）」は、「上下左右のとなりのピクセル」を見ながら特徴をつかんでいきます。どのピクセルにも、決まった数のとなりがあるからこそできる方法です。

<https://toukei-lab.com/cnn>

### グラフは、つながる数も順番もバラバラ

ところがグラフは、そう単純ではありません。

:::box{title="グラフのデータの難しいところ"}
**・点ごとに、つながっている相手の数がバラバラ（友達が3人の人もいれば、1万人の人もいる）**\
**・点に「1番目」「2番目」といった決まった順番がない**\
**・同じグラフでも、点の並べ方を変えて書けば見た目はまったく変わる**
:::

ふつうのニューラルネットワークは、決まった形と順番で並んだ数字を受け取ることを前提にしています。

そのため、<mark>つながりが複雑で不規則なグラフを、そのままでは上手に扱えなかった</mark>んです。

そこで登場したのがGNNです。GNNは、点の数やつながり方がバラバラでも、点の並べ方を変えても、同じように学習できるように工夫されています。

## GNNの仕組み

それでは、GNNがどうやってグラフを学習しているのかを見ていきましょう！

### 基本は「メッセージパッシング」

GNNの基本の仕組みは、とてもシンプルです。

「**メッセージパッシング**」と呼ばれる方法で、それぞれの点の特徴を学習していきます。

どういうことかというと、<mark>ある点が、自分とつながっている近所の点から情報を受け取って、自分の特徴を更新していく</mark>というイメージです。

![1回目はとなりの友達から情報を集め、2回目は友達の友達の情報も届く](/wp-content/uploads/2026/10/gnn-message-passing.jpg)

### 「類は友を呼ぶ」の考え方

SNSで考えてみましょう。

あなたがどんな人かを知りたいとき、あなたの友達がどんな趣味を持っているのか、どんな投稿をしているのかを見れば、なんとなくあなたのことも分かりますよね。

「類は友を呼ぶ」という言葉がありますが、GNNはまさにこの考え方で学習しているんです。

### くり返すほど、遠くの情報まで届く

メッセージパッシングは、1回で終わりではありません。何回もくり返します。

1回目で、あなたは友達から情報を受け取ります。このとき友達も、それぞれの友達から情報を受け取っています。

すると2回目には、友達を通して、「友達の友達」の情報まで、あなたに届くんです。

このようにくり返すことで、<mark>さらに遠くの点の情報まで取り込んで、その点が持つ本質的な特徴を捉えられる</mark>ようになります。

:::box{title="メッセージパッシングの流れ"}
**1. 集める**：つながっている点から、特徴（メッセージ）を集める\
**2. まとめる**：集めた特徴を、平均や合計などでまとめる\
**3. 更新する**：まとめた情報と自分の特徴を合わせて、自分の特徴を新しくする\
**4. くり返す**：これを何回かくり返して、遠くの情報まで取り込む
:::

### Pythonで動きを確かめてみよう

メッセージパッシングの動きを、Python（NumPy）で簡単に確かめてみましょう。

4人のつながりで、「あなた」の好みがまだ分からない状態から、友達の情報を集めていきます。

```python
import numpy as np

# 4人のつながり（0:あなた, 1:Aさん, 2:Bさん, 3:Cさん）
# 1 が入っているところは「友達どうし」という意味
A = np.array([
    [0, 1, 1, 0],
    [1, 0, 1, 0],
    [1, 1, 0, 1],
    [0, 0, 1, 0],
])

# それぞれの特徴：[スポーツ好き度, 料理好き度]
# あなたの好みはまだ分からないので 0 にしておく
X = np.array([
    [0.0, 0.0],
    [1.0, 0.0],
    [0.8, 0.2],
    [0.0, 1.0],
])

def message_passing(A, H):
    A_self = A + np.eye(len(A))           # 自分自身の情報も入れる
    deg = A_self.sum(axis=1, keepdims=True)
    return (A_self @ H) / deg              # 自分と友達の特徴を平均する

H1 = message_passing(A, X)   # 1回目
H2 = message_passing(A, H1)  # 2回目
print("1回目のあなた:", H1[0].round(2))
print("2回目のあなた:", H2[0].round(2))
```

実行すると、次のように表示されます。

```text
1回目のあなた: [0.6  0.07]
2回目のあなた: [0.55 0.14]
```

1回目では、スポーツ好きのAさん・Bさんの影響で、あなたは「スポーツ好きっぽい人」になりました。

2回目では、あなたと直接はつながっていない、料理好きのCさんの情報が、Bさんを通して少しだけ届いているのが分かります。

実際のGNNでは、平均したあとに、学習で決まる重みを掛けたり、活性化関数を通したりします。そうすることで、<mark>「どの情報をどれくらい重視するか」まで、データから学べる</mark>んです。

ニューラルネットワークの重みや活性化関数の基本は、以下の記事で解説しています。

<https://toukei-lab.com/deep-learning>

### 代表的なGNNの手法

GNNには、情報の集め方やまとめ方の違いによって、いろいろな手法があります。名前だけでも知っておくと、論文やライブラリの説明が読みやすくなりますよ。

| 手法 | 発表 | 特徴 |
|---|---|---|
| GCN（グラフ畳み込みネットワーク） | 2017年 | となりの点の特徴を平均のような形でまとめる、基本の手法 |
| GraphSAGE | 2017年 | となりの点を一部だけ選んで集めるので、大きなグラフや、新しく加わった点にも使いやすい |
| GAT（グラフアテンションネットワーク） | 2018年 | となりの点ごとに「どれくらい重視するか」を学習して、重みをつけて集める |

GATの「アテンション」は、ChatGPTのもとになっているTransformerでも使われている考え方です。友達の中でも、特に仲のいい友達の意見を重く見る、というイメージですね。

### GNNで予測できること

GNNで学習した点の特徴を使うと、主に次の3種類の予測ができます。

| 予測するもの | 例 |
|---|---|
| 点（ノード）の予測 | このユーザーは、どんな話題に興味がありそうか |
| 線（エッジ）の予測 | この2人は友達になりそうか、この人はこの商品を買いそうか |
| グラフ全体の予測 | この分子は、薬として効きそうか、毒性はありそうか |

## GNNの活用例

では実際に、GNNはどんな場面で使われているのでしょうか？

### ① レコメンド（おすすめ）

1つ目は、おすすめを出すレコメンドです。

ユーザーと商品のつながりをグラフとしてとらえて、GNNで「あなたが好きそうなもの」を精度高く探します。

たとえば画像共有サービスのPinterestは、2018年に、数十億の点を持つ巨大なグラフでGNNを使ったおすすめの仕組みを論文で発表しています。

レコメンドのさまざまな方法については、以下の記事で解説しています。

<https://toukei-lab.com/recommend-algorithm>

### ② 新薬の開発

2つ目は、新しい薬の開発です。

分子は、原子と化学結合からなるグラフそのもの。だからGNNととても相性がいいんです。

分子の性質を予測したり、薬の候補になりそうな物質を探したりするのに使われています。

2020年には、アメリカのMITの研究チームが、GNNを使って大量の化合物の中から、抗菌作用を持つ新しい物質を見つけたと発表し、大きな話題になりました。

### ③ 不正の検知

3つ目は、不正の検知です。

銀行口座やクレジットカードの取引を、「人」と「取引」のグラフとして表すことで、<mark>不自然なつながりや、怪しい取引のパターン</mark>を見つけ出せます。

1件ずつの取引を見ているだけでは気づけない、複数の口座をまたいだお金の流れも、グラフならとらえやすくなるんです。

### ④ 交通・天気の予測

4つ目は、交通や天気の予測です。

Googleマップでは、道路の網をグラフとしてとらえて、GNNで到着予想時間を予測しています。

2020年にGoogle傘下のDeepMind（現在のGoogle DeepMind）が発表したところによると、ベルリン、ジャカルタ、サンパウロ、シドニー、東京、ワシントンD.C.などの都市で、<mark>到着予想時間の精度が最大で50%改善した</mark>そうです。

さらにGoogle DeepMindは2023年、GNNを使った天気予報のAI「GraphCast」を発表しています。地球の表面を点と線の網で表して、10日先までの天気を予測するものです。

## GNNのこれからと注意点

最後に、GNNのこれからと、気をつけたいポイントを見ていきましょう！

### LLMとの組み合わせ

最近は、大規模言語モデル（LLM）との組み合わせも、ホットな研究テーマになっています。

たとえば、「人物」「会社」「できごと」などを点、その関係を線にした「**知識グラフ**」とLLMを組み合わせて、より正確で根拠のある答えを出させようとする「**GraphRAG**」のような技術も登場しています。

ふつうのRAGが、質問に似た文章を探してきて答えに使うのに対して、GraphRAGはつながりをたどって情報を集められるのがポイントです。RAGの基本は、以下の記事で解説しています。

<https://toukei-lab.com/llm-rag>

### くり返しすぎると、みんな同じになる

GNNには、気をつけたい弱点もあります。

メッセージパッシングをくり返すほど遠くの情報を取り込めますが、くり返しすぎると、<mark>どの点もまわりと混ざり合って、みんな似たような特徴になってしまう</mark>んです。

これは「**オーバースムージング**」と呼ばれる問題です。そのため、くり返す回数は、ふつう数回ほどに抑えます。

### 大きなグラフは計算が大変

SNSのように、何億もの点がつながった巨大なグラフでは、すべてのつながりをそのまま計算するのは大変です。

そこで、近所の点を一部だけ選んで計算するなど、工夫しながら使われています。

### グラフの作り方で結果が変わる

何を点にして、何を線にするか。グラフの作り方しだいで、GNNの結果は大きく変わります。

:::warn
GNNを使うときは、<mark>そのグラフが、解きたい問題のつながりを本当に表しているか</mark>をよく考えることが大切です。データの形を決める段階から、仕事の中身をよく知っている人と一緒に考えましょう！
:::

PythonでGNNを試してみたい人は、「PyTorch Geometric」や「DGL」といったライブラリを使うと、代表的なGNNを手軽に動かせます。

画像や文章のような「並んでいるデータ」の時代から、複雑な「つながり」を扱うデータの時代へ。AIが活躍する場所は、どんどん広がっているんです！

## GNNのまとめ

最後に、今回のポイントをおさらいしましょう！

:::point
**・GNNは、点（ノード）と線（エッジ）でできたグラフのデータを学習するニューラルネットワーク**\
**・グラフは、つながる数も順番もバラバラなので、専用の仕組みが必要だった**\
**・メッセージパッシングで、つながっている点から情報を集めて、自分の特徴を更新していく**\
**・レコメンド、新薬の開発、不正の検知、交通や天気の予測などで活躍している**\
**・LLMと知識グラフを組み合わせるGraphRAGなど、これからも広がっていく技術**
:::

:::talk{who="umatan"}
要は、「類は友を呼ぶ」をAIで実現したのがGNNなんです！身の回りの「つながり」のデータを見つけたら、GNNで何ができそうか考えてみてください！
:::

ディープラーニングやAIの仕組みを体系的に学びたいのであれば、当メディアが運営するスクール「**[スタアカ](https://toukei-lab.com/achademy/)**」がオススメです！

:::box
**[業界最安級のAIデータサイエンス特化スクール「スタアカ」](https://toukei-lab.com/achademy/)**
:::