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

以前、グラフ ニューラル ネットワークの内容をよく目にしましたが、いつも難しくて理解が続かなかったのですが、今、時間をかけて勉強して、GNN が何なのかを簡単に理解しました。コードはまだ実践していません。学習を続けながら更新し続けます。コードの内容は、後で簡単に参照できるようにここに記録されます。

基本的な写真の内容

グラフの基礎知識

図の基本要素

グラフはいくつかの点といくつかの線で構成され、いくつかのエンティティ間の関係を表すことができます。グラフ内の点はエンティティであり、線はエンティティ間の関係を表します。

ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します

各ノード、エッジ、またはグラフ全体をさらに詳しく説明するために、グラフの各部分に情報を保存できます。

ここに画像の説明を挿入します

各頂点、エッジ、およびグラフ全体はベクトルで表すことができます。この例では、頂点のベクトルには 6 つの値があります。円柱の高さは値のサイズを表します。各エッジは 8 の長さで表されます。ベクトルによる場合、グローバル表現は長さ 5 のベクトルで表されます。

グラフの表現 - 隣接行列

ここに画像の説明を挿入します

一部のコンテンツを画像として表現する

絵を絵として表現する

ここに画像の説明を挿入します

文章を絵として表現する

ここに画像の説明を挿入します

分子構造を図で表す

ここに画像の説明を挿入します

社会的人物関係をグラフで表現

ここに画像の説明を挿入します

グラフの表現 - 隣接リスト

グラフには、頂点属性、エッジ属性、グローバル情報、および接続性 (つまり、どの 2 つの頂点が各エッジで接続されているか) の 4 種類の情報があります。 最初の 3 つの情報はベクトルで表現できます。接続性を表現するにはどうすればよいですか?

これを表すには隣接行列を使用できます。この行列は正方行列になりますが、いくつか問題があります。この行列は非常に大きく、まばらで、スペース効率が悪く、計算が困難になる可能性があります。さらに、隣接行列の行または列の順序を交換しても、そのプロパティは変わりません。

たとえば、下の 2 つの図はどちらも「オセロ」の人物相関図です。行と列の順序が異なるだけで見た目は異なりますが、表現している情報は同じです。つまり、ニューラル ネットワークを設計すると、以下の 2 つの写真のどちらを使用しても、同じ結果が得られるようにしてください。

ここに画像の説明を挿入します

以下の例は、4 つのノードからなるこの小さなグラフを説明できる各隣接行列を示しています。

ここに画像の説明を挿入します

隣接行列を効率的に保存し、この順序がニューラル ネットワークの結果に影響しないようにしたい場合は、隣接リンク リスト

たとえば、以下に示すように、頂点、エッジ、グローバル情報はすべてスカラーまたはベクトルで表され、接続性は隣接リンク リスト i i i项表示的是第 i i i エッジによって接続された 2 つの頂点。この表現は非常に効率的であり、順序には影響されません

ここに画像の説明を挿入します

グラフの次数と近傍

ここに画像の説明を挿入します

構造特徴、ノード特徴、エッジ特徴

ここに画像の説明を挿入します

グラフの分類

ここに画像の説明を挿入します

ここに画像の説明を挿入します

グラフ学習のメリット

ここに画像の説明を挿入します

ここに画像の説明を挿入します

グラフ学習の応用

ここに画像の説明を挿入します

ノードレベルのタスク

先ほどの武道のクラスの例では、2 人の教師が別れた場合、生徒がどの教師を選ぶかをソーシャル グラフに基づいて予測します。

ここに画像の説明を挿入します

金融詐欺の検出

ここに画像の説明を挿入します

ターゲットの検出

ここに画像の説明を挿入します

サイドレベルのタスク

まず絵を与え、セマンティックセグメンテーションにより文字を切り出し、文字間の関係を予測するのですが、このグラフにはすでに頂点が存在しており、辺の属性を予測することに相当します。

ここに画像の説明を挿入します

推奨システム

ここに画像の説明を挿入します

グラフレベルのタスク

このタスクの目標は、グラフのプロパティを予測し、グラフに 2 つのリングが含まれているかどうかを識別することです。このタスクは分類問題です。

ここに画像の説明を挿入します

匂いの認識

ここに画像の説明を挿入します

グラフ学習アルゴリズムの分類

ここに画像の説明を挿入します

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

GNNとは何ですか

GNN は、グラフの対称性 (順列不変性) を維持する、グラフのすべての属性 (ノード、エッジ、グローバル コンテキスト) に対する最適化可能な変換です。

GNN は、グラフの対称性 (順列不変性) を維持する、グラフのすべてのプロパティ (ノード、エッジ、グローバル コンテキスト) の最適化可能な変換です。

ここでの GNN は、「情報転送ニューラル ネットワーク」フレームワークを使用して構築されています。GNN の入力はグラフであり、出力は次のとおりです。グラフでもあり、グラフの属性 (点、エッジ、グローバル情報) は変換されますが、グラフの接続性、つまりどのエッジがどの頂点に接続しているかは変更されません。この情報は変更されません。

どんなに複雑であっても、グラフ ニューラル ネットワークを使用する目的は機能を統合することです

グラフ ニューラル ネットワークの目的

ここに画像の説明を挿入します

最も単純な GNN 層

頂点ベクトル、エッジ ベクトル、グローバル ベクトルのそれぞれの多層パーセプトロン (MLP)、入力および出力のサイズは同じです。これら 3 つの MLP は GNN 層を形成します。入力はグラフであり、出力もグラフです。< /span>< a i=5>接続は変更されません

ここに画像の説明を挿入します

上記の GNN の最初の要件を満たし、属性のみを変換し、グラフの構造を変更しません。MLP はそれぞれに作用します。ベクトルは独立しており、サンプルの順序に関する要件がないため、 グラフの配置不変性を満たし、2 番目の要件も満たします。

情報のプールによる GNN 予測

単純な GNN を構築しましたが、上記のタスクの予測をどのように行うのでしょうか?

先ほどの武道ジムのソーシャルグラフのような、最も単純なケースを考えてみましょう。その画像に基づいて、生徒が最終的にどの教師を選択するかを予測します。頂点はベクトルで表されており、出力 2 の全結合層を直接追加できます。

ここに画像の説明を挿入します

ただし、頂点に情報がなく、エッジに情報が保存されている場合は、エッジ情報を収集する方法が必要になります。頂点予測として使用されます。このステップはプールすることで実現できます。

ここに画像の説明を挿入します

エッジ特徴のみがあり、バイナリ ノード情報を予測しようとする場合、プーリングを使用して情報をルーティング(または渡す)できます。必要な場所へ、モデルは次のようになります

ここに画像の説明を挿入します

ノード特徴のみでバイナリエッジ情報を予測しようとする場合、モデルは次のようになります

ここに画像の説明を挿入します

ノードレベルの機能しかなく、2 クラスのグローバル属性を予測する必要がある場合 では、利用可能なノード情報をすべて収集して集約する必要があります。これはCNN のグローバル平均プーリング層に似ています。エッジに対しても同じ操作を行うことができます。

ここに画像の説明を挿入します

最も単純な GNN モデルは次の構造に要約できます。
グラフが入力され、GNN 層 (基本的にポイント、エッジ、ワールドに対応する 3 つの MLP) を通過した後、属性は変換されたものの接続性は変更されていないグラフが出力されます。 . レイヤーを接続して出力を取得します。

ここに画像の説明を挿入します

この構造では、グラフのさまざまな部分間の接続性を利用していません。各部分は個別に処理されます。プーリング時には他の部分の情報も利用されますので、次にイメージ情報全体を収集する方法について説明します。

グラフの部分間でメッセージを渡す

GNN 層でプーリングを使用すると、グラフの接続性を認識し、より複雑な予測を行うことができます。これは、メッセージを渡すことによって実行できます。これにより、隣接するノードまたはエッジが情報を渡し、互いの更新に影響を与えます。

メッセージングには 3 つのステップがあります。

  1. グラフ内の各ノードについて、すべての隣接ノードの埋め込み (またはメッセージ) を収集します。

  2. 集計関数 (sum など) を使用してすべてのメッセージを集計します。

  3. マージされたすべてのメッセージは、通常は学習されたニューラル ネットワークである更新関数を通過します。

ここに画像の説明を挿入します

メッセージ パッシングは頂点間またはエッジ間で発生する可能性があり、これがグラフの接続性を活用するための鍵となります。GNN レイヤーでメッセージ パッシングのより詳細なバリエーションを構築し、表現力と能力が向上した GNN モデルを生成します。

これは標準の畳み込みを思い出させます。本質的に、メッセージングと畳み込みは集計と演算です。 a> は、要素の近傍に関する情報を処理して要素の値を更新します。グラフでは要素がノードに相当し、画像では要素がピクセルに相当します。ただし、各ピクセルが固定数の隣接ノードを持つ画像とは異なり、グラフ内の隣接ノードの数は可変です。

メッセージパッシング GNN レイヤーを積み重ねることにより、ノードは最終的にグラフ全体からの情報を組み込むことができます。

ここに画像の説明を挿入します

図中の赤枠は、その頂点の最近傍1番目の頂点情報の集合、つまり頂点からの距離が1の頂点情報の集合を表している。

エッジ表現の学習

データセットには、常にすべての種類の情報 (ノード、エッジ、グローバル コンテキスト) が含まれているわけではありません。ノードの予測を行いたいが、データセットにエッジ情報しか含まれていない場合、プーリングを使用してエッジからノードに情報を渡す方法を上で示しましたが、それはモデルの最終予測ステップのみです。メッセージ パッシングを使用して、GNN レイヤー内のノードとエッジ間で情報を共有できます。

まず、エッジに接続されている頂点情報がプールされてエッジに転送され、エッジが更新された後、頂点に接続されているエッジ情報がプールされて頂点に転送され、MLP によって更新されます。頂点ベクトルとエッジ ベクトルの長さが異なる場合は、最初に同じ次元に投影してから転送する必要があります。

ここに画像の説明を挿入します

どのグラフ プロパティを更新するか、および更新する順序は、GNN を構築する際の設計上の決定です。エッジ エンベディングの前にノード エンベディングを更新するか、その逆かを選択できます。これは、複数のソリューションを備えたオープンな研究領域です。たとえば、「ウィーブ」方式で更新を行うことができます。この場合、4 つの更新された表現が新しいノードとエッジの表現に結合されます。Nodeノードへ (リニア)、エッジからエッジ (リニア)、ノードからエッジ (エッジ レイヤ)、エッジからノード (ノード レイヤ)

ここに画像の説明を挿入します

ここに画像の説明を挿入します

グローバル情報を追加する

以前のメッセージ パッシングでは 1 つの最近傍点のみが考慮されていたため、ある点がその点から遠く離れた情報を知りたい場合、これは問題になります。このため、他の点またはエッジに接続できる仮想点であるマスター ノードまたはコンテキスト ベクトルを提案します。これがグローバル情報 U です。 U はグローバル情報であり、グラフ内の任意の情報に接続できます。

頂点情報をエッジに集約するとき、U も一緒に集約されます。エッジ情報が頂点に転送されると、U も一緒に転送されます。その後、エッジと頂点を更新した後、エッジと頂点の情報が U に集約されます。その後、MLP 更新を実行します。

ここに画像の説明を挿入します

頂点予測では、頂点情報、隣接頂点情報、接続エッジ情報、グローバル情報のすべてまたは一部を選択して頂点情報を更新し、頂点予測を行うことができ、これらの情報を単純に加算したり、他の情報を組み合わせたりすることができます。方法。

ここに画像の説明を挿入します

多層 GNN の役割

層が多いほど、GNN の「受容野」は大きくなり、各点が他の点に関するより多くの情報を考慮し、より包括的な考慮が行われます。

ここに画像の説明を挿入します

グラフ畳み込みニューラルネットワーク GCN

通常の畳み込み VS グラフ畳み込み

ここに画像の説明を挿入します

半教師あり学習

GCN は半教師あり学習です (各ノードがトレーニング用のラベルを持つ必要はありません)

損失を計算するときは、ラベルを持つノードのみを考慮する必要があります。

ラベル付きノードの損失を減らすために、その周囲の点もそれに応じて調整されます。これはグラフ構造の特性でもあります。そのため、GNN および GCN では、学習時にすべてのノードにラベルが必要ではありません (もちろん、少なくとも 1 つのノードにはラベルが必要です)。ラベル)

ここに画像の説明を挿入します

GCNの伝播式

Softmax は、複数分類によく使用される活性化関数です。

ここに画像の説明を挿入します

GCNの計算

写真の基本構成

ここに画像の説明を挿入します

特徴量の計算方法

ここに画像の説明を挿入します

隣接行列の変換

ここに画像の説明を挿入します

しかしここで問題があり、ノードの次数が大きくなるほど行列乗算後の値が大きくなる(累積回数が多くなる)ので、このままでは良くありません(知っている人の数が多いほど値が大きくなるのと同じ)の固有値が大きいほど良くありません)

この問題を解決するには、平均的な感覚に相当する次数行列の逆数を求め、次数が大きいノードを制限する必要があります。

ここに画像の説明を挿入します

ここに画像の説明を挿入します
左上の乗算は行を正規化することと同じなので、列も正規化する必要があります。

ここに画像の説明を挿入します

しかし、別の問題があります。行と列の両方が正規化されています。2 つの正規化 (重複する行と列) が存在するのではありませんか?

したがって、この 2 番目の正規化の影響を相殺するために、次数行列の逆数に 0.5 乗を追加する必要があります。

ここに画像の説明を挿入します

GCN変換原理の解釈

下の図に示すように、緑のボックスの中の人が金持ちで、赤いボックスの中の人が貧しいとします。彼らは子供の頃しか知りませんでした。貧しい人は金持ちのことしか知りません。金持ちは多くの人を知っています。

行のみが正規化される場合、貧しい人は富裕層しか知らないため、その次数は 1 となり、特徴を再構築するときに情報の大部分が富裕層から得られることになります。同じ種類の人々です。明らかにこれは無理がある

したがって、行と列の両方を同時に正規化して、富裕層と貧困層の関係だけでなく、貧困層と富裕層の関係も考慮する必要があります。

簡単に言うと、行の正規化では、金持ちが貧乏人にとって非常に重要であることが考慮され、列の正規化では、貧乏人は金持ちにとってそれほど重要ではない可能性があることが考慮されます(金持ちの程度が非常に大きいため)。貧困層の程度は非常に小さく、裕福な人は貧困層のことを覚えていない可能性があります)。これは比較的合理的です。

ここに画像の説明を挿入します

GCN層の数

グラフの畳み込みは複数の層で実行することもできますが、一般的にはあまり深くは行われず、通常は 2 ~ 3 層だけで実行されます (世界を知るには 6 人しか知らなければならないという格言に似ています)。

ここに画像の説明を挿入します
ここに画像の説明を挿入します

実験によると、GCN では、深いネットワーク構造ではより良い結果が得られないことがよくあります。
直感的な説明: 私のいとこは市長のことを知っている友人の友人の友人を知っていますが、それは私が市長と良好な関係を持っているという意味ではありません。

レイヤーの数が増えるほど、特徴表現はより多様になりますが、通常は 2 ~ 5 つのレイヤーで十分です。

ここに画像の説明を挿入します

参考文献

グラフ ニューラル ネットワークへの優しい入門

ゼロベースマルチグラフ グラフニューラルネットワーク(GNN/GCN)の詳細解説【論文精読】

確かに、基礎から高度、実践までをすべて 1 つのコレクションにまとめた、最高の [グラフ ニューラル ネットワーク GNN/GCN チュートリアル] として認められています。

グラフ ニューラル ネットワーク 7 日間のチェックイン キャンプ

グラフ ニューラル ネットワークの概要、グラフ ニューラル ネットワーク、GNN とは

【グラフニューラルネットワーク実践】グラフニューラルネットワークGNNをわかりやすく学ぶ(前編)

おすすめ

転載: blog.csdn.net/qq_41990294/article/details/133514788