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

I. 概要

        1. 図

グラフは、エンティティ間の関係                を表すために使用されます(エンティティはノードとして表され、関係はエッジとして表されます)

関係は有向性無向性                に分けられる

         2. データのグラフィック表現

                画像ファイルを例にとると、隣接行列を使用して画像を表すことができます。各点はピクセル ポイントを表します。ピクセル ポイントに x 個の隣接するピクセルがある場合、x 個のエッジを使用してこの点間の関係を表すことができます。

                 テキスト シーケンスを例にとると、隣接行列を使用してこの文を表すこともできます。2 つの隣接する単語を接続する有向エッジがあります。

                 2 番目に、原子シーケンス/ソーシャル ネットワーク/ナレッジ グラフなどはすべて隣接行列として表すことができます

        3. タスクの種類

                グラフ レベルのタスク、頂点レベルのタスク、およびエッジ レベルのタスク。分類の基礎は、タスクがこのレベルの属性 (グラフ、ポイント、エッジ) を学習して予測する必要があるということです。

2. グラフとニューラルネットワーク

        1. グラフのデータ構造

                グラフには、頂点の属性、エッジの属性、グローバル情報、および接続性が含まれます。このうち、頂点の属性、辺の属性、大域情報はすべてベクトルとして表現できますまた、接続性は一般的な行列では表現できません (属性の順序とは独立している必要があります)。

                次の図は一例であり、次のように表現できます。

Nodes
[0,1,1,0,0,1,0,0]

                各頂点の属性を表します(スカラー/ベクトル)。 

Edges
[2,1,1,1,2,1,1]

                各エッジの属性を表します(スカラー/ベクトル) 

Adjacency List    #邻接列表
[[1,0],[2,0],[4,3],[6,2],[7,3],[7,4],[7,5]]

                 長さ = エッジの数; i 番目のベクトルは、どのノードが i 番目のエッジによって接続されているかを示します。

Global
0

                グローバル情報 (スカラー/ベクトル)

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

                GNN : グラフ上のすべての属性 (頂点、エッジ、グローバル) に対する最適化された変更 (この変換はグラフの対称情報を維持できます<つまり、頂点が別の方法で並べ替えられた後でも結果は変わりません>)。情報伝達ニューラル ネットワークを介した入力と出力はグラフです(頂点と辺の属性は変更されますが、接続性は変更されません)。

                グラフを出力した後、さまざまなタスクに従って、頂点ベクトル、エッジ ベクトル、グローバル ベクトルMLP (多層パーセプトロン)を構築します。

                MLP の後に全結合層活性化関数を追加して予測値を取得します (すべての属性が全結合層を共有します)

                 プーリング: 頂点を予測する必要があるが頂点ベクトルがない場合、頂点に接続されているすべてのエッジのベクトルとグローバル ベクトルを重ね合わせて点のベクトルを表すことができます。

                        同様に、エッジ ベクトルまたはグローバル ベクトルの不足は、他のベクトルを収集することで置き換えることができます。

                 最も単純な GNN 構造は次のとおりです。

                         グラフは GNN ユニットに入力され、頂点ベクトル、エッジ ベクトル、グローバル ベクトルがそれぞれ変換されてグラフが得られ、全結合層と活性化関数を通じて予測結果が得られます。いくつかの属性が欠落している場合は、これらは、他の属性の集約で置き換えることができます。

        3. GNN におけるコンバージェンスの役割

最も単純な GNN では、GNN モジュールはグラフの接続性を最大限に活用するためにグラフの接続性                を変更しません情報の受け渡しを使用して GNN を改善できます。

                具体的な方法は、特定の頂点とその隣接する 2 つの頂点のベクトルを加算して収束ベクトルを形成し、この収束ベクトルを MLP に送信し、最後に次の層に更新します。

                収束操作は画像の畳み込みに似ています畳み込みとの最大の違いは、畳み込みカーネルの受容野の要素が重み付けされて合計 (コンボリューション カーネルの重み x ピクセル値) されるのに対し、収束合計は重み付けされていない合計であることです。そして

プーリングは、 CNN の MaxPooling と MeanPooking と同様に、最大値平均値                を取ることもできます。

                 集約操作は一方向ではなく、実際のスタッキングでは、頂点からエッジに情報を渡したり、情報を戻したりして、すべてが完了した後に MLP に入ることができます。パスの順序が異なると、最終結果に影響します (交互にすることもできます)。

                 画像が十分に緊密に結合されていない場合、ノードの情報が目的のノードに到達するまでに遠くまで送信される必要があります。マスターノード(グラフ上のすべての点に接続されるように設定された仮想ノード、 でマーク)を設定し国連、頂点の情報をエッジに集約する必要がある場合、国連頂点の情報をエッジに集約することができます。集約された。

                 上記の処理の後、GNN は頂点そのもののベクトルを予測に使用することも、頂点に関連するすべての情報を予測に使用することもできます。メッセージパッシングベースのグラフニューラルネットワーク」と呼ばれる

3. グラフのサンプリングとバッチ処理

        ネットワーク層の数が多い場合、勾配を前方に渡すときにグラフをサンプリングする必要があります(そうしないとメモリを大量に消費します)

        一般的なサンプリング方法は次のとおりです。

                ①ランダムサンプリング: いくつかの点をランダムに選択し、その最近傍点を取得します; サンプリング点の数は指定可能です 

                ②ランダムウォーク: 特定の頂点からグラフに沿ってランダムに歩きます;歩く歩数を指定できます

                ③ランダムサンプリング+ランダムウォーク

                ④ 幅走査: 点を取得し、その 1、2、および 3 近傍に対して k ステップの幅走査を実行します。

 4. 前提条件

        CNN の場合、仮定は空間変換の不変性です。RNN の場合、仮定は時間の連続性です。GNN の場合、仮定はグラフの対称性です(グラフを交換する順序によってグラフの性質は変わりません) )

なし、GNN 関連テクノロジー

        ①GCNネットワーク

                GCN (グラフ畳み込みネットワーク) --> グラフ畳み込みニューラル ネットワーク、つまり、集計演算を備えたグラフ ニューラル ネットワーク

                GCN に k 層があり、各層が幅トラバーサルを使用してターゲット ポイントの 3 つの近傍を取得すると仮定すると、k 層の 3x3 畳み込みニューラル ネットワークとして近似でき、サブグラフは特徴マップとして近似できます。

                 グラフ上の GCN の畳み込みは、行列乗算のために隣接行列取り出すことと同等です

        ②GANネットワーク

               GAN (グラフ アテンション ネットワーク) - グラフ アテンション ネットワーク。GNN の集計操作は重みのない合計であり、計算のニーズを満たすために合計に重みを付けることもできます。CNN の重み付き合計 (CNN の重みは位置に関連する) とは異なり、接続不変特性を満たすために、GNN の重み付き合計は位置に影響されない必要があります。一般的に言えば、アテンション メカニズムを使用できます。重みは、次のベクトル間の関係に依存します。 2 つの頂点Attenion の後、取得した重みと頂点の点乗算を行い、それらを合計します。

おすすめ

転載: blog.csdn.net/weixin_37878740/article/details/129263853