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

GNNの紹介

グラフ・ニューラル・ネットワーク(GNN)は、実用的な用途と最先端の機械学習研究の両方で人気のあるディープ・ニューラル・ネットワーク・アーキテクチャーです。これらは、ニューラル・ネットワーク・モデルを使用して、エンティティーとその関係に関するデータを表現します。これらは現実世界のデータ・マイニング、ソーシャル・ネットワークの理解、ナレッジ・グラフ、レコメンダー・システム、バイオインフォマティクスに役立ちます。

GNNの開発は、畳み込みニューラル・ネットワーク(CNN)やリカレント・ニューラル・ネットワーク(RNN)などのディープラーニング・アルゴリズムからインスピレーションを得ましたが、それらにはいくつかの重要な違いがあります。CNNは、画像のピクセルのようなグリッド構造を持つデータ用に設計されています。1つのピクセルは、最大8つの他のピクセルに接続できます。逆に、RNNはテキスト内の単語の文字列など、各要素が最大2つの他の要素と接続できるシーケンス構造に合わせて調整されています。しかし、グラフ構造化データでは、どの要素にも1つ以上の接続がある可能性があり、特定の要素の接続数に一貫性がない場合があります。

グラフ・ニューラル・ネットワークは、幾何学的ディープラーニング1の実装であり、次の4つの基本カテゴリーに分類されます。

グラフベース学習:グラフのようなデータについて学習します。

グリッドベース学習:データのような画像や、グリッドで記述できるその他のデータ型について学習します。

グループベース学習:情報が親グループとどのように関連しているかを学習します。これは、データが球形のグループ(例えば、地球全体のさまざまなソースからの地質データ)から取得される場合に最適です。

メッシュベース学習:物体の3Dモデルの要素を分析・予測するなど、不規則なメッシュに情報がどのように広がっているかを学習します。

GNNは人工知能の研究が活発に行われている分野ですが、Pythonなどの言語やTensorFlowやPyTorchなどのフレームワークで構築されたライブラリーやツールキットによって十分にサポートされています。

グラフとは

一連のオブジェクトとそれらの間の接続は、グラフとして表現できます。コンピューター・サイエンスの研究者は、グラフ・データ構造を操作するニューラル・ネットワークを開発しました。

グラフは、「ノード」と呼ばれるエンティティーの集合間の「エッジ」と呼ばれる関係を表します。数学的には、グラフGは、ノードと頂点Vのセット、およびエッジとリンクのセットのタプルとして定義されます。E:G = (V, E)です。各エッジは2つの垂直のペアであり、それらの間の接続を表します。

各ノード、エッジ、またはグラフ全体をさらに説明するために、これらのグラフのそれぞれに情報を保管できます。

グラフの頂点と、それらがエッジによってどのように接続されているかを示す図 グラフの頂点(ノードと呼ばれることもある)は辺で結ばれている。

各エッジに方向性を割り当てることで、グラフをさらに記述できます。グラフは、有向グラフか無向グラフのいずれかとして記述されます。無向グラフは、双方向の関係を表します。RosaにJuanという兄弟がいる場合、JuanにはRosaという姉妹がいることになります。Rosaと兄弟の関係には方向性がなく、ただ2つを結び付けているだけです。有向グラフは、方向性のある関係を表します。Rosaに年長の兄のJuanがいる場合、「兄」という関係は一方向のみです。JuanからRosaを見ると、Juanには「姉」はいません。

無向グラフと有向グラフの図 グラフの種類は、辺に方向性があるかどうかによって決まります。

グラフの接続性を視覚化する方法は、隣接行列を使用します。これは、無向グラフと有向グラフの両方を表すことができるグラフの垂直方向の行列ベースの表現です。

有向グラフとそれを表す数値の隣接行列 有向グラフの辺は、隣接行列で表すことができます。

示されている有向グラフの隣接行列は、すべての垂直方向と、それらを作成するエッジの方向を示しています。例えば、有向グラフのノード0はノード1に接続されますが、接続の方向性があるため、その逆は真ではありません。隣接行列では、[行0、列1]には値が含まれますが、[行1、列0]には値が含まれていません。

グラフの表現は順列不変性を持つ必要があります。これは、グラフ構造が同じでもノードの順序が異なる場合、グラフの表現は同じ成果を生成する必要があることを意味します。このアプローチにより、グラフの表現がグラフ自体と同じプロパティーを持つことが保証されます。

グラフ・ニューラル・ネットワーク

GNNは通常、「グラフイン、グラフアウト」アーキテクチャーを採用しています。つまり、これらのモデル・タイプは、ノード、エッジおよびグローバル・コンテキストにロードされた情報を持つグラフをインプットとして受け入れることを意味します。モデルはインプット・グラフの接続を変更することなく、これらの埋め込みを徐々に変換します。埋め込みは、ノードをノード埋め込みとして表し、頂点を頂点埋め込みとして表します。これらの埋め込みにより、モデルで発生するノードの種類、グラフ内で発生する場所、あるいはエッジの種類と位置を学習できます。

通常、ニューラル・ネットワークのトレーニングは、トレーニング・データのランダム化されたサブセット上で計算される勾配でネットワーク・パラメーターを更新することによって行われます。グラフ・ネットワークをトレーニングするには、グラフ・ニューラル・ネットワークを用いて、親の大きなグラフの本質的な特性を保持するサブグラフを作成します。

GNNは、メッセージ・パッシング・メカニズムを使用して隣接するノードから情報を集約し、グラフ内の複雑な関係を把握できるようにします。グラフ構造データのモデリングにおける課題は、ノード間の相互作用をキャプチャーすることです。ニューラル・メッセージ・パッシングは、グラフ・データの依存関係と相互作用をモデル化するためのフレームワークを提供することで、この課題に対処します。ノードは隣接するノードと情報を交換し、その情報を集約して自身の表現を更新します。このメッセージを受け渡すプロセスは、メッセージまたはシグナルを交換するグラフ内のノードに似ています。

グラフ分析の種類

GNNではいくつかの異なるタイプの分析が可能であり、それぞれがグラフ・データのさまざまな要素に関する洞察を提供します。

グラフレベルのタスク

グラフ・レベルのタスクでは、GNNはグラフ全体の特性を予測します。グラフとして表現される分子の場合、それが病気に関連する受容体に結合するかどうかを予測したい場合があります。ソーシャル・ネットワークの場合は、大学などの特定機関に関連する可能性が高いかどうかを予測したいと考えることがあります。このタイプのパターン認識は、グラフ全体を分類するため、グラフ分類の一形式として捉えることができます。

ノード・レベルのタスク

ノード・レベルのタスクは、グラフ内の各ノードのIDまたは役割の予測に関係します。例えば、ソーシャル・ネットワーク・データセットのノード分類問題は、友人ネットワークがつながっていることに基づいて、ユーザーが特定の興味を持っている可能性があるかどうかを予測することです。共通の興味対象はゴルフだけで、他の共通の興味がない友人がいる場合、新しい友人もゴルフを楽しむ可能性が高いということを示しています。この種のノード主要な機能は、多くの場合、GNNで予測できます。

エッジ・レベルのタスク

グラフにおける予測問題の最後のタイプは、エッジ予測(リンク予測とも呼ばれる)です。

エッジ・レベルの推論の一例は、画像シーンの理解です。ディープラーニング・モデルは、画像内のオブジェクトを識別した後、それらのオブジェクト間の関係を予測することもできます。これは、ノードが画像内のオブジェクトを表し、予測は、これらのうちどのノードがエッジを共有しているか、またはそのエッジの値が何であるかを示すため、エッジ・レベルの分類です。エンティティ間の接続を見つけたい場合は、グラフが「完全に接続されている」ものと見なし、予測値に基づいてエッジをプルして、スパース・グラフを作成できます。

バリエーションと拡張機能

グラフ畳み込みネットワーク4(GCN):このアプローチは、グラフ・ベースのデータから学習および予測できるニューラル・ネットワークの変種に基づく半教師あり学習用です。これらのモデルは、グラフ・エッジの数を直線的に調整するため、大規模なデータセットに適しています。モデルはローカル・グラフ構造とノードの主要な機能も学習します。

グラフ・オートエンコーダー2:これらのバリアントは、グラフ上の教師なし学習、クラスタリング、およびリンク予測のためのエンドツーエンドのトレーニング可能なニューラル・ネットワーク・モデルです。通常、GCNを埋め込みを作成するエンコーダーとして使用し、学習された潜在表現からグラフを再構築するデコーダーを備えています。

グラフ・アテンション・ネットワーク3(GAT):グラフ構造データで動作するニューラル・ネットワーク・アーキテクチャーです。GATは、自己注意層の形で注意メカニズムを活用し、グラフ畳み込みまたはその近似に基づく、従来の方法の欠点を克服します。GATは、ノードがその地域の主要な機能にアクセスできる層を積み重ねることによって、地域内のさまざまなノードに異なる重みを(暗黙的に)指定することを可能にします。これは、コストのかかる行列演算(逆行列演算など)を必要とせず、またグラフ構造を事前に知る必要もなく、実現可能です。

グラフ表現:学習は、グラフに存在する複雑な関係からノードの意味のある、潜在的に低次元の表現を見つける方法として、グラフ・ニューラル・ネットワークを拡張する研究分野です。この拡張機能の例は、スタンフォード大学のプロジェクトであるGraphSage6で、ノードの低次元ベクトル表現を作成し、ノードが高次元データを表すデータの処理に適しています。

GNNアーキテクチャー

GNNがどのように構造化されているかのサンプルとして、グラフ全体を分類するための単純なグラフ畳み込みネットワーク(GCN)を考えてみましょう。最も単純なGCNには、次の3つの層があります。

畳み込み層—この層は、各ノードで畳み込みを実行し、その接続を学習します。

非線形有効化層—この層は、ReLUなどの有効化関数を畳み込みのアウトプットに適用します。

アウトプット線形層—この最後の層は、出力を合計して最終的な予測を生成します。

まず、畳み込み層グラフの各ノードを使用して畳み込みを実行します。この畳み込み層は、各ノードの近傍からの主要な機能情報を使用して集約し、各ノードに関連付けられた重みを更新します。次に、ReLUなどの非線形有効化関数が畳み込み層の出力に適用されます。最高の精度を実現するために、ネットワークは複数の畳み込み層と非線形有効化層を積み重ねて使用できます。最後に、出力線形層を使用して、グラフがどのクラスに属する可能性が最も高いかを予測します。

GCNは概念的にシンプルで大規模なグラフに適しており、プログラミングも簡単ですが、重要な欠点もいくつかあります。まず、GCNはエッジ機能をサポートしていません。学習と予測ができるのは、ノードの主要な機能やグラフ全体の主要な機能のみです。メッセージ・パッシングの概念は、GCNには存在しません。この問題により、必要な情報がすべてエッジに存在するのではなくノード内に存在する場合にのみ、その使用が制限されます。

しかし、メッセージ・パッシング・ニューラル・ネットワーク(MPNN)ではエッジの表現が可能です。5メッセージ伝達のプロセスは、おおよそ次のとおりです。グラフ内の各ノードは、ノードの初期入力の主要な機能として機能する初期埋め込みを受け取ります。メッセージ・パッシングを繰り返すたびに、ノードは隣接するノードから情報を集約します。次に、更新関数を使用して、その集約された情報がノードの現在の埋め込みと結合されます。更新された埋め込みは、メッセージ受け渡しの次の反復に渡されます。グラフの複雑さを表現するのに適した数回の反復の後、最終的な埋め込みを使用してグラフ内の各ノードを表現します。最後に、neural networksによって集計、更新、反復のステップを実行し、グラフ全体の複雑なパターンを学習します。

メッセージ・パッシングを使用すると、より高度なノード分類、エッジの分類、さらにはグラフ内のエッジが表示される場所の予測(リンク予測と呼ばれます)が可能になります。

GNNの応用

GNNには、自然言語処理(NLP)に多くの用途があります。例えば文書の分類では、GNNは文書内の単語や文間の関係をモデル化するために使用できます。この機能により、ドキュメントの分類と情報検索が向上します。GNNは、質問内の単語とナレッジ・グラフ内の候補回答との関係を表現することで、質問応答タスクに役立ちます。GNNは、テキスト内の文脈情報とセンチメントの依存関係を把握できるため、曖昧さが強い、または非常に具体的なエンティティ関係がある状況でのセンチメント分析が改善されます。

また、コンピューター・ビジョンにも多くの用途があります。画像セグメンテーション・タスクでは、隣接するピクセル間の関係をグラフとしてモデル化することにより、GNNをピクセル・レベルの画像セグメンテーション・タスクに使用できます。GNNは、画像内のオブジェクト間のコンテキスト情報と関係をキャプチャすることで、オブジェクト検知を支援します。シーン理解タスクでは、GNNが複雑なシーンを理解するために使用され、画像内のオブジェクト間の空間的関係を表すシーン・グラフの生成に使用されます。

GNNは、生物情報科学においても強力なツールです。ゲノム配列分析では、GNNは遺伝子または遺伝子配列間の関係をモデル化することができ、遺伝子表現予測やシーケンス分類のタスクに役立ちます。創薬においては、GNNは創薬研究において不可欠な創薬目標相互作用予測や分子特性予測に使用できます。

脚注

1. Inductive representation learning on large graphs, Will Hamilton, Zhitao Ying, Jure Leskovec, https://papers.nips.cc/paper_files/paper/2017/hash/5dd9db5e033da9c6fb5ba83c7a7ebea9-Abstract.html

2. Variational Graph Auto-Encoders, Thomas N. Kipf, Max Welling https://arxiv.org/abs/1611.07308

3. Graph Attention Networks; Petar Veličković, et al, https://arxiv.org/abs/1710.10903

4. Semi-Supervised Classification with Graph Convolutional Networks, Thomas N. Kipf, Max Welling https://arxiv.org/abs/1609.02907

5. Hierarchical Graph Representation Learning with Differentiable Pooling, NeurIPS 2018 · Rex Ying, et al https://arxiv.org/abs/1806.08804

6. GraphSage https://snap.stanford.edu/graphsage/

関連ソリューション
watsonx.ai

主要なワークフローにおける生成AIの効果を加速し、生産性を向上させます。

watsonx.aiの詳細
人工知能ソリューション

業界をリードするIBMのAI専門知識とソリューション製品群を使用して、ビジネスでAIを活用しましょう。

AIソリューションの詳細はこちら
AIコンサルティングとサービス

AIの導入によって重要なワークフローと業務を再構築し、エクスペリエンスの最大化、リアルタイムの意思決定、ビジネス価値の向上を実現しましょう。

AIサービスの詳細はこちら

参考情報

自然言語処理
関連トピック
ディープラーニング(深層学習)
関連トピック
次のステップ

ビジネスに合わせて生成AIを確実に拡張できるように、IBM watsonxプラットフォームにあるIBMライブラリーの基盤モデルの詳細を学びましょう。

watsonx.aiの詳細 IBMのAIに関する最新情報