グラフニューラルネットワーク（GNN） に入門する

# はじめに

- グラフニューラルネットワークってなんですか？

## 参考資料

https://joisino.hatenablog.com/entry/2024/04/25/172451

https://www.youtube.com/watch?v=RiFdQddpAq0

https://speakerdeck.com/joisino/pu-tatigagurahuniyurarunetutowakuwoxue-buli-you



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

グラフニューラルネットワーク（GNN: Graph Neural Network）は、グラフ構造を持つデータを処理するために特別に設計された深層学習モデルの一種です。GNNは、グラフの頂点（ノード）と辺（エッジ）の情報を用いて、グラフ上の特徴を学習します。

GNNの主な目的は、グラフ構造を考慮しながら、ノードの特徴ベクトルを学習することです。各ノードの特徴ベクトルは、ノード自身の情報と、その近傍ノードの情報を集約することで更新されます。この更新プロセスを複数回繰り返すことで、グラフ全体の構造を考慮した特徴表現を学習できます。

### GNN の応用例

GNNは、以下のようなグラフ構造を持つデータに対して広く適用されています。
- ソーシャルネットワーク
- 分子グラフ
- 知識グラフ
- 交通ネットワーク

LLM関連の応用例では、

「Graph Neural Prompting with Large Language Models」がAAAI2024で発表され、LLMの応答精度向上に有効であることが示されました。

https://ojs.aaai.org/index.php/AAAI/article/view/29875

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/6b3e9fc9-6575-bd40-45b5-702002b6ad4b.png)



## 通常のニューラルネットワークとGNNの比較

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/f5367e43-0678-6838-65ed-6da553cc1bde.png)

| 特性 | 通常のニューラルネットワーク | グラフニューラルネットワーク（GNN） |
|------|--------------------------|--------------------------------|
| 構造 | 層状構造。各層のノードが次の層のすべてのノードと接続 | グラフ構造。ノード間の接続がデータの関係性に基づく |
| データの扱い | 固定サイズの入力（ベクトルやテンソル） | 可変サイズのグラフ構造データ |
| 情報の伝播 | 入力層から出力層へ一方向に伝播 | ノード間で双方向に伝播し、各ノードの特徴が更新 |
| 適用分野 | 画像認識、自然言語処理など、構造化されたデータ | ソーシャルネットワーク分析、分子構造予測、推薦システムなど、関係性を持つデータ |
| 学習プロセス | 各層の重みを更新 | ノード間のメッセージパッシングと特徴の更新 |



さらに、通常のニューラルネットワークとグラフニューラルネットワーク（GNN）の比較表です。

| 特徴                 | 通常のニューラルネットワーク | グラフニューラルネットワーク（GNN） |
|----------------------|-------------------------------|--------------------------------------|
| モデルの解釈性       | 比較的低い                   | 高い（グラフ構造を考慮）             |
| データの前処理       | 一般的に必要（正規化など）   | グラフ構造へ変換する必要がある       |
| スケーラビリティ     | 大規模データに適用可能       | グラフのサイズに依存                 |
| ハイパーパラメータ   | 比較的少ない                 | グラフ構造に依存するパラメータが存在 |


タスクによって、通常のニューラルネットワークとGNNのどちらを選択するかは異なります。グラフ構造を持つデータを扱う場合や、ノード間の関係性が重要な場合には、GNNが適しています。一方、グリッド状のデータや大規模なデータセットを扱う場合には、通常のニューラルネットワークが適しているでしょう。


## 代表的なGNNのアーキテクチャ
Graph Convolutional Network（GCN）、Graph Attention Network（GAT）、Graph Isomorphism Network（GIN）などがあります。これらのアーキテクチャは、メッセージ伝播や更新の方法に違いがあります。

実際には、これらのアーキテクチャを組み合わせたり、拡張したりすることで、より高度なGNNモデルが構築されています。また、タスクに応じて、グラフプーリングやグラフ分類のための追加の層を組み込むこともあります。


| アーキテクチャ | メッセージ伝播 | ノード更新 |
|--------------|--------------|------------
| GCN          | ノードの近傍を平均化 | 線形変換とReLU活性化関数 | - 単純で効率的なアーキテクチャ<br>- スペクトラルグラフ理論に基づく<br>- ノードの次数の影響を受ける |
| GAT          | Attentionを用いて近傍を重み付け | 線形変換とReLU活性化関数 | - ノード間の重要度を学習<br>- ノードの次数に依存しない<br>- 計算量が比較的大きい |
| GIN          | MLPを用いてノードと辺の情報を集約 | MLPとバッチ正規化 | - グラフ同型性検査に基づく<br>- より強力なグラフ表現を学習<br>- 深い構造を持つことが可能 |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/09c132a1-27f6-9be5-f899-68794e9b110b.png)


**Graph Convolutional Network（GCN)**
   - メッセージ伝播では、各ノードの近傍の情報を平均化して集約
   - ノードの更新には、線形変換とReLU活性化関数が用いる
   - 単純で効率的なアーキテクチャであり、スペクトラルグラフ理論に基づく
   - ノードの次数の影響を受けるため、次数の正規化が必要となる場合がある

**Graph Attention Network（GAT)**
   - メッセージ伝播では、注意機構（Attention）を用いて近傍ノードの重要度を学習し、重み付けを行う
   - ノードの更新には、線形変換とReLU活性化関数が用いる
   - GATはノード間の重要度を学習することができ、ノードの次数に依存しない利点
   - 注意機構の計算量が比較的大きく、大規模なグラフに対しては計算コストが高くなる

**Graph Isomorphism Network（GIN）**
   - メッセージ伝播では、多層パーセプトロン（MLP）を用いてノードと辺の情報を集約
   - ノードの更新には、MLPとバッチ正規化が用いる
   - GINはグラフ同型性検査に基づき、より強力なグラフ表現を学習することができる
   - 深い構造を持つことが可能で、複雑なグラフ構造を捉えることができる

## GNNの発展の歴史

```mermaid

graph LR
    A[1.グラフ理論の発展<br>（1970年代〜）] 
    B[2.ニューラルネットワークの発展<br>（1980年代〜）]
    A --> C[3.グラフ構造データの重要性の認識<br>（2000年代〜）]
    C --> D[4.グラフ畳み込みネットワークの登場<br>（2014年）]
    A --> D
    B --> D
    D --> E[5.GNNの発展と応用（2015年〜）]
    E --> F[6.GNNの現在]


    style E fill:#DDA0DD,stroke:#333,stroke-width:2px
    style F fill:#F0E68C,stroke:#333,stroke-width:2px
```


**1. グラフ理論の発展（1970年代〜）**
**2. ニューラルネットワークの発展（1980年代〜）**
   - 多層パーセプトロンや畳み込みニューラルネットワークなどの深層学習モデル登場
       - これらのモデルは、グリッド状のデータを扱うことに特化していた

**3. グラフ構造データの重要性の認識（2000年代〜）**
   - ソーシャルネットワーク、分子構造、知識グラフなど、グラフ構造を持つデータの重要性が認識されるように
   - 有用な情報を抽出する必要性が高まる

**4. グラフ畳み込みネットワークの登場（2014年）**
   - スペクトラルグラフ理論に基づくグラフ畳み込みネットワークを提案
       - グラフ構造を直接処理できる初期のGNNモデルの1つ

**5. GNNの発展と応用（2015年〜）**
   - GCNの提案。GNNの研究が加速
   - GATやGINなどの新しいアーキテクチャが登場
   - GNNは、ノード分類、グラフ分類、リンク予測などの様々なタスクに応用されるように

**6. GNNの現在**
   - 新しいアーキテクチャや学習手法の開発、および様々なドメインへの応用が進む
   - LLMとの組み合わせの提案と実績の登場(2024)