GNN/GCN
蒸留:https://distill.pub/2021/gnn-intro/
3 つの主要な質問:
- グラフレベルのタスク(分類)
- ノードレベルタスク(頂点属性判定)
- エッジレベルタスク(エッジ属性判定)
情報ストレージ: (ストレージは効率的で、並べ替えの影響を受けません)
- ノード: スカラー/ベクトル
- エッジ: スカラー/ベクトル
- 隣接リスト: 長さはエッジと同じで、i 番目の項目は、i 番目のエッジがどの 2 つの頂点に接続されているかを示します。
- グローバル: スカラー/ベクトル
「メッセージ パッシング ニューラル ネットワーク」フレームワークはグラフイン、グラフアウトであり、グラフの接続性は変更されません。
最も単純な GNN
ノードベクトル、エッジベクトル、グローバルベクトルはそれぞれレイヤとしてMLPを構築する。すべての接続情報は考慮されません。
プーリング操作
最後の層の出力から予測値を取得するにはどうすればよいですか?
頂点に対して予測が行われる場合: 2 つの分類: MLP を入力し、頂点ごとに出力次元 2 のソフトマックスを入力します。MLP は1 つだけであり、すべての頂点で共有されることに注意してください。
頂点に対応しないベクトルはどうすればよいでしょうか?
頂点に接続されたエッジベクトルとグローバル ベクトルが加算され (次元が同じであると仮定して)、MLP に入力され、出力されます。
頂点のみが存在し、エッジ ベクトルが存在しない場合はどうなるでしょうか?
頂点ベクトルをエッジ (接続された頂点) に集約 (追加)するには、+U ベクトルを実行し、エッジの MLP を入力して出力します。
グローバル ベクトルがなく頂点ベクトルのみがある場合はどうなるでしょうか?
頂点ベクトルは U の MLP に合計され、出力
最も単純な GNN の構造図は次のとおりです。
制限:
グラフの構造情報は変換中に使用されず、グラフ情報はグラフに更新されません。
改善: メッセージを渡す
最も単純なメッセージ パッシング: 頂点を更新するときに、隣接する頂点とともに頂点を追加し、MLP を入力します。
CNN と同様に、隣接するピクセルに接続され、コンボリューション カーネルの重みは同じで、チャネルは MLP です。
エッジと頂点の情報の集約は早い段階で行うことができます。
- 頂点情報をエッジに渡し、エッジ情報を更新し、更新されたエッジ情報を頂点に集約し、頂点を更新します(次元が異なります)
- 逆に結果も違うし
- 代替アップデート
グローバル情報Uをどうするか?
グラフが大きく、メッセージが遠くまで送信される場合は、マスター ノードまたはコンテキスト ベクトル(すべての頂点とすべてのエッジに接続される)、つまり U を追加します。
U は E と V のすべてに接続されています。辺/頂点が集まると U も追加されます。U を更新すると、すべての EV が取り込まれ、MLP に入ります。
注意と同様に、q と同様の情報を取得します
集計: 平均、最大、合計
他の写真
- さまざまな側面があります(方向性と非方向性)
- サブ画像あります
- 。。。。
グラフサンプリングのバッチ処理
1. ランダムにポイントをサンプリングし、近傍を見つけてサブグラフを作成してストレージを削減します
2. 点をランダムにサンプリングし、ランダムに歩き、部分グラフを取得するためのランダムなステップ数を修正します。
3. ランダムに数歩歩き、隣人を見つけます。
4.拡散サンプリング: 点を取得し、N 個の最近傍を k ステップ前方に移動し、サブグラフを取得します。
誘導バイアス
あらゆる機械学習には前提条件があります
CNN: 空間変換の不変性
RNN: 時間的連続性
GNN: グラフの対称性を維持します (頂点がどのように交換されても、GNN は変化しません)
集計操作では、最大平均合計はほぼ同じになります。
サブグラフ関数近似器としての GCN
GCN: (収束のあるもの) k 個の層があり、近傍のみを確認する場合、各頂点は最大 k ステップ離れた部分グラフを参照します。
ポイントとエッジの二重性
グラフアテンションネットワーク
畳み込み重みは位置に関連しており、GNN 重みは位置に影響されない必要があります。
重みは頂点ベクトル、ドット積、ソフトマックス間の関係に依存し、頂点は重みを取得します
グラフの解釈可能性
ポイントとエッジの二重性
グラフアテンションネットワーク
畳み込み重みは位置に関連しており、GNN 重みは位置に影響されない必要があります。
重みは頂点ベクトル、ドット積、ソフトマックス間の関係に依存し、頂点は重みを取得します
グラフの解釈可能性
生成モデリング