MATLAB ユーザーコミュニティー

MATLAB & Simulink ユーザーコミュニティー向け日本語ブログ

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

※この投稿は 2025 年 2 月 4 日にArtificial Intelligence へ 投稿されたものの抄訳です。

畳み込みニューラルネットワーク(CNN)や長短期記憶(LSTM)ネットワークのようなディープニューラルネットワークは、画像や時系列データに基づくディープラーニングタスクに適用することができます。グラフニューラルネットワーク (GNN) は、エンティティ (ノード) とその関係 (エッジ) をエンコードする構造であるグラフにディープラーニングを拡張します。

このブログ記事では、GNN の基本的な紹介と、MATLAB で GNN を始めるためのリソースを提供します。

 

グラフってなに?

グラフはネットワーク内の接続をモデル化し、物理的、生物学的、情報システムのさまざまな分野で広く適用されます。グラフの構造は「ノード」と「エッジ」で構成されています。各ノードはエンティティを表し、各エッジは 2 つのノード間の接続を表します。詳細については、有向グラフと無向グラフを参照してください。

ノード(頂点)はグラフ内の基本的なエンティティを表します。 各ノードは、アプリケーションに応じてオブジェクト、エンティティ、またはデータポイントに対応します。例えばソーシャルネットワークではノードはユーザーを表し、分子構造では原子を表します。

エッジ(接続)はノードのペア間の関係または接続を定義します。 無向グラフでは、エッジには方向がありません(例:化学結合)。 有向グラフでは、エッジには特定の方向があります(例:一方通行の道路)。 エッジには、接続の強さやコストを表す重みなどの属性もあります。

隣接行列はグラフの数学的表現です。これは、ノード i からノード j へのエッジの存在(およびオプションで重み)を示す正方行列 A(i,j) です。無向グラフでは、行列は対称です。有向グラフでは、行列要素は非対称で、エッジの方向性を反映しています。隣接行列は、機械学習アルゴリズムのためにグラフの構造をエンコードするため、GNN で実行される計算を含むグラフベースの計算における重要な点です。

Types of graphs, including undirected, directed, and weighted graph

図:グラフの主要な概念

 

グラフ理論を使用すると、自然にグラフとして表現できる多くの現実世界のシステムや関係をモデル化できます。例えばグラフを使用して、脳内のニューロン、分子構造、航空会社の飛行パターン、道路およびソーシャルネットワークなどをモデル化できます。エンティティをノード、それらの関係をエッジとしてモデル化することにより、ネットワーク、相互作用、および依存関係を分析および最適化するための構造化された方法を提供するのがグラフ理論です。 現実のアプリケーションでは、グラフ構造はかなり複雑になる可能性があります。

Examples of an undirected and a directed graph

図:複雑な無向グラフと有向グラフの例

 

グラフ理論は、私自身の過去の研究でも役立ちました。被験者が聴覚刺激に反応したときの大脳皮質における神経活動の伝播をモデル化するためにグラフを使用し、反応時間の変動の基礎となる生理学的メカニズムを体系的に測定・解析しました。 もし数年前に GNN が発見されていたら、皮質活動のモデル化への利用を検討していたと思います。

Neuronal activity and reaction times, as a human subject reacts to auditory stimulus with pushing a button

図:被験者が聴覚刺激に反応する際の皮質活動の有向グラフモデル(Paraskevopoulou et al.

 

グラフニューラルネットワークってなに?

グラフニューラルネットワーク (GNN) は、グラフベースの表現を入力として使用する ディープラーニング モデルです。 GNN はノードの特徴とグラフ自体の構造の両方から学習し、関係データに対する学習を可能にします。 これにより、GNN はレコメンデーションシステム、不正検出、薬物発見など、不規則で非ユークリッドデータを含む問題に対する優れたオプションとなります。

 

GNN の機序

GNN は、層の観点からは CNN と同様のパラダイムに従いますが、空間畳み込みの代わりに、GNN はグラフ上でメッセージパッシングを実行します。GNN は、グラフの構造全体に情報を反復的に伝播および集約することにより、ノードが隣接ノードに基づいて文脈化された特徴表現を学習できるようにします。

ここでは、GNN がどのように学習するかの重要なステップを分解して説明します:

  1. メッセージパッシング: 各ノードはグラフ構造に基づいて隣接ノードから特徴情報を集約します。
  2. 集約: 集約された特徴は結合(例:合計または平均)され、新しい表現を形成します。
  3. 特徴更新: ノードの特徴ベクトルは学習可能な変換を使用して更新され、しばしば非線形活性化関数が続きます。
  4. 層の積み重ね: 複数の GNN 層を積み重ねて、グラフの遠くの部分から情報を伝播させます。
  5. 出力層: GNN の最終層は通常、各ノードまたは全体のグラフの予測を生成し、分類と回帰の両方をサポートし、下流のタスクのための潜在埋め込みを生成します。
  6. グラフプーリング: 一部の GNN は、グラフをダウンサンプリングして計算効率を向上させるために、CNN のストライド畳み込みやプーリング層と同様に、グラフ構造を層ごとに動的に変更します。

GNN 構造の代表例 

グラフ畳み込みネットワーク (GCN) – GCN は、隣接ノードの特徴の重み付き集約を適用することにより、グラフへの畳み込みの概念を一般化します。GCN はノード分類やグラフレベルのタスクに適していますが、大規模なグラフにスケールする際には、メモリ要件と計算リソースの増加が必要であることを考慮することが重要です。

グラフアテンションネットワーク (GAT) – GAT は注意メカニズムを導入し、各接続に学習可能な注意重みを割り当てることにより、どの隣接ノードがより重要であるかをモデルが学習できるようにします。これにより表現力を向上させますが、計算時間も増加します。

GraphSAGE – GraphSAGE は、トレーニング中に各ノードの固定数の隣接ノードをサンプリングすることでスケーラビリティを向上させ、グラフ全体を考慮するのではなくします。

 

GNN の MATLAB サンプル

MATLAB で GCN および GAT ネットワークを実装する具体的な方法はこれらの例を確認してください。

Architecture of a Graph Convolutional Network (GCN) GCN を使用したノード分類
Architecture of a Graph Attention Network (GAT) GATを使用したマルチラベルグラフ分類

 

グラフニューラルネットワークの使いどころ

グラフニューラルネットワーク (GNN) は、データポイント間の関係や相互作用がデータポイント自体と同様に重要な領域で、グラフとして自然に表現されるデータを処理するために特別に設計されています。GNN では、これらの関係は学習プロセスの一部として明示的にモデル化されます。 例えば、以下のことができます:

  • 分子グラフを使用して、薬物発見や材料設計のために分子の特性を予測します。
  • ナレッジグラフを使用して、相互に接続されたエンティティから学習することにより、レコメンデーションエンジンを改善します。
  • 交通ネットワークを使用して、道路ネットワークグラフに基づいてルーティングを最適化し、渋滞を予測します。

GNN の利点と限界を理解することで、いつどのようにそれらを効果的に適用するかについて、情報に基づいた意思決定を行うことができます。

 

GNN の利点

  • 柔軟な入力構造 – CNN や LSTM とは異なり、GNN はグラフをネイティブに処理できます。グラフデータを CNN や LSTM に渡すには、グラフを固定グリッドに補間するなどのデータ操作が必要ですが、これにより補間エラーが発生する可能性があります。
  • 関係推論 – GNN はエンティティ間の依存関係と相互作用をネイティブにキャプチャします。
  • ノードおよびグラフレベルの学習 – GNN は、個々のノードの属性の予測(ノード分類)、関係(リンク予測)、またはグラフ全体(グラフ分類)など、さまざまなレベルのタスクをサポートします。

GNNs の欠点

  • スケーラビリティ – GNN はノード間のメッセージパッシングを必要とし、大規模なグラフでは計算コストが高くなる可能性があります。
  • 過度なスムージング – 層の数が増えると、ノードの表現が互いに区別できなくなり、パフォーマンスの低下につながる可能性があります。
  • データ準備 – グラフデータは、ノード間の関係が常に明確に定義できるとは限らないため、複雑な前処理と特徴エンジニアリングを必要とすることがよくあります。

GNN の使いどころ

明らかに、GNN はすべての機械学習タスクに対する答えではありません。以下の表は、GNN または他のタイプの AI モデルを選択するタイミングに関するガイダンスを提供します。

タスク グラフニューラルネットワーク 他のAIモデル
画像分類 通常は使用されません CNN
時系列予測 時系列のノードが関連している場合のみ LSTM or トランスフォーマーモデル
ソーシャルネットワーク分析 GNN(ユーザー関係をキャプチャするため) 該当なし
薬物発見 GNN(分子構造を活用するため) 伝統的な機械学習モデル

 

 

エンジニア向け GNN

エンジニアは物理世界のモデルを扱うため、エンジニアリングの問題はグラフとして表現できる複雑な相互接続システムを含む可能性があります。GNN は、空間、時間、および関係情報を明示的にエンコードすることにより、従来のニューラルネットワークでは捉えにくい関係依存性をエンジニアがモデル化することを可能にします。

以下に、GNN のいくつかのエンジニアリングアプリケーションを示します。

エンジニアリングアプリケーション 特定の例 なぜ GNN を使用するのか?
電力網と電気ネットワーク システム障害を予測し、エネルギーを最適化します。 電力網は本質的にグラフであり、ノードは変電所、変圧器、または発電機を表し、エッジは電力線を表します。GNN は動的依存性をモデル化し、ネットワークの弱点を検出できます。
流体力学とシミュレーション パイプや表面のネットワーク上の流体の流れをモデル化します。 GNN は、接続された流体領域間の相互作用をモデル化して、流量、温度変化、圧力変動を予測できます。
Robotics and Control System ロボット工学と制御システム Learn interactions between different subsystems in a robotic assembly or a control network. ロボットアセンブリまたは制御ネットワーク内の異なるサブシステム間の相互作用を学習します。 In multi-robot coordination, GNNs can model dynamic relationships between robots to optimize collaboration and path planning. マルチロボット協調において、GNNはロボット間の動的関係をモデル化して、協力と経路計画を最適化できます。
材料科学 原子構造から材料の特性(例:導電率、弾性)を予測します。 原子と結合は分子グラフを形成します。GNN は、グラフベースの分子表現から化学的および物理的関係を学習するのに優れています。

 

熱伝導 x GNN

MATLABを使用すると、偏微分方程式(PDE)で記述された物理問題を解決するために GNN を使用することもできます。 PDE は通常、有限要素解析(FEA)のような数値方法で解かれ、離散メッシュ上の解を近似します。このメッシュは自然にグラフのような構造を形成し、GNN に適しています。GNN は、FEA や他の数値方法と比較して、一度学習させると高速な推論を行うことができます。

 

GNN を使用して熱伝達問題を解決するためのサンプルコードは、このリポジトリにアクセスしてください。

Heat transfer maps

 

まとめ

GNN は、データが自然にグラフとして表現される領域で関係推論を可能にすることにより、ニューラルネットワークの能力を拡張します。MATLAB を使用すると、グラフ理論、ディープラーニング、および高忠実度モデリングを組み合わせて、現実のエンジニアリングアプリケーションのソリューションを作成し、物理問題を解決することができます。

|
  • print

Comments

To leave a comment, please click here to sign in to your MathWorks Account or create a new one.

Loading...
Go to top of page