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

1. メッセージ配信

        グラフには「変換不変性」(つまり、グラフの空間構造の変化がグラフの性質に影響を与えない)があるため、畳み込みニューラルネットワークに直接入力することはできません。一般的にはメッセージパッシング(Message pass)を利用して処理を行います。

        メッセージ パッシング メカニズムは、ローカルな近傍で計算グラフを構築することによって実装されます。つまり、ノードの属性はその隣接ノードによって決定されますこれらの隣接ノードの情報を収集する作業は、人間の介入なしにニューラル ネットワークによって実行されます。その形式は次のとおりです。

各ノードは、その構造機能役割        を表す独自の計算グラフを構築できます計算プロセスでは、各計算グラフは別個のサンプルになります。

        なお、グラフニューラルネットワークの層数は、ニューラルネットワークの層数ではなく、計算グラフの層数である。グラフ ニューラル ネットワークの層数 = 計算グラフの層数 =グラフ内のターゲット ノードの近傍の順序各層のノードは一連の計算重みを共有します

                        

         グラフ ニューラル ネットワークの層の数は、 k 畳み込みニューラル ネットワークの受容野とみなすことができます。k 大きすぎると 、過剰な平滑化が発生する可能性があります(すべてのノードが同じグラフを出力します)。

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

        1. 演算装置

                グラフ畳み込みニューラル ネットワークはメッセージ パッシング方式に基づいており、一般的な計算方法は、隣接するノードの属性特性を要素ごとに平均し(順序に関係なく、最大値/合計でもよい)、入力します。このベクトルをニューロンに入力します

        2. 数学的表現

                k+1 層 の埋め込みは、 v k 番目vの層のノードの近傍計算 (近傍のノードの合計をノード接続数で割る)であり、式は次のように記述できます。あなたあなたv

                        h^{(k+1)}_v=\sigma(\omega _k\sum \frac{h^k _u}{N(v)})       ここで \シグマ、 は活性化関数、\オメガ_kは重みです

                その中で、vノードの 0 次属性特徴はそれ自体です。h_v^{(0)}=x_v

                ニューラル ネットワークによって出力される埋め込みベクトルは ですz_v = h_v^K。K はネットワークの層の数です。

        3. 行列表現

                ① 層 k のすべてのノードの埋め込みを , として記録しますH^{(k)}H^{(k)}=[h_1^{(k)}...h_{|v|}^{(k)}]^Tこれは、下図の行列の行です。

                ②この行列に左の隣接行列を掛けるA_v : \sum_{u \in N_v}h_u^{(k)}=A_vH^{(k)} ノードvの隣接ノードを選択可能(上式の総和処理に相当)

                ③ノード接続から構成される対角行列である行列をD_v=度(v)=|N(v)|求めます。次のように表されます。

                         その逆行列は接続数の逆数です。D_v^{-1}=\frac{1}{|N(v)|}

                上記の手順を完了すると、式は次\sum \frac{h^k _u}{N(v)}のように表すことができます。D^{-1}AH^{(k)}

                ただし、この方法で計算すると、D^{-1}ノードはv自分の接続番号のみを考慮し、相手の接続番号を無視するため(接続の品質に関係なく、すべてのチャネルからの情報が強制的に平均化されます)、式を改善することができますD^{-1}A -- >  D^{-1}AD^{-1}、つまり、結果は、それ自体への接続数と反対側への接続数の両方を考慮した対称行列になります。

                改善されたベクトルの大きさは減少し、その固有値の範囲は (-1,1) になります。D^{-\frac{1}{2}}AD^{-\frac{1}{2}}この現象については、処理後の最大固有値が 1 になるように、式 D^{-1}AD^{-1} --> を改善し続けることができます 。

                最後に、この行列は次のように記録されます。\チルダ{A}=D^{-\frac{1}{2}}AD^{-\frac{1}{2}}この行列では、2 つのノード間に接続がある場合私その接続の重みを表すことができるj行列内にあります(ここで、 と はノードとノード間の接続の数です)。\チルダ{A}=\frac{1}{\sqrt{d_i}\sqrt{d_j}}d_iDJ私j

                         この行列はラプラシアン行列\チルダ{A}の計算にも使用できます。\xi = 1 - \チルダ{A}

                次に、式は次のようにリストされます。h^{(k+1)}_v=\sigma(\チルダ{D}^{-\frac{1}{2}}\チルダ{A}\チルダ{D}^{-\frac{1}{ 2}}}H^{(l)}W^{(l)})これは GCN の層を表すことができます。学習可能なパラメータは重みです。w^{(l)}

        4. 計算グラフの改善

                上記の方法 (ノード自体がノード自体の状況を反映できないという事実を説明するために隣接ノードを使用する) の改良方法は、各ノードに対して各ノードを指す接続を追加することです

                 この改善後、隣接行列は(元の行列に単位行列を加えたもの、対角線はすべて 1) になります\チルダ{A}\チルダ{A}=A+I

                最終的なニューラル ネットワーク式はH^{(k+1)}_v=\sigma(\チルダ{D}^{-\frac{1}{2}}\チルダ{A}\チルダ{D}^{-\frac{1}{ 2}}}H^{(l)}W^{(l)})次のように記述できます。

                        H^K_i=\sigma(\sum \frac{\tilde{A_{ij}}}{\sqrt{\tilde{D_{ii}}}\tilde{D_{jj}} }H_j^{k-1} W^k)(式には元の重み行列と単位行列が含まれます)

次のように分割して書くこと                もできます

                        H^k_i=\sigma(\sum\frac{A_{ij}}{\sqrt{\tilde{D_{ii}}}\tilde{D_{jj}} }H^{k-1}_jW^k+\ frac{1}{\tilde{D_i}}H^{k-1}_iW^k)(前部は元の重み行列の変換であり、その後に単位行列の変換が続きます)

さらなる改善のために、次のように記述される2 セットの重み(1 セットのアグリゲーション ノード情報と 1 セットのセルフループ ノード情報) を                使用できます。

                        H^{(k+1)}_v=\sigma(W_k\sum\frac{h_u^{(k)}}{|N(v)|}+B_kh_v^{(k)})

                        そしてB_k=1そのとき、後者の式は恒等マッピング、つまり残余の接続になります。

        !最終的な行列の簡略化形式は次のとおりです: H^{(k+1)}=\sigma(\チルダ{A}H^{(k)}W_k^T+H^{(k)}B_k^T); ここで、\チルダ{A}=D^{-\frac{1}{2}}AD^{-\frac{1}{2}}

3.GCNトレーニング

        1. 教師あり学習

                損失関数: min\, l(y,f(z_v))、ここで、 f は分類/回帰予測ヘッド、 y はノード ラベル情報です

                クロスエントロピー損失関数:l=\sum y_vlog(\sigma(z_v^T\theta ))+(1-y_v))log(1-\sigma(z_v^T\theta))

                GCN の入力はグラフ構造であり、出力もグラフ構造ですが、出力グラフのノードには意味情報が埋め込まれており、出力構造は低次元、連続、高密度の特性を持っています。

                 埋め込みベクトルは分類のために分類ヘッドに入力でき、それが 2 次元空間にマッピングされると、反復中に異なるカテゴリのノードがますます分離されることがわかります。

---- >

        2. 教師なし学習/自己検査学習

                Deepwalk/Node2vec と同様に、グラフ自体の接続構造を使用して、反復の目的は、グラフ内の 2 つの接続されたノードの埋め込みベクトルを可能な限り近づけることです。

                損失関数: l=\sum CE(y_{u,v},DEC(z_u,z_v))y_{u,v}=1これは2 つのノードの合計が類似しあなたていることを意味しますv

                一般に、「エンコーダ-デコーダ」アーキテクチャが採用され、エンコーダはグラフをベクトルに埋め込み、デコーダは2つのベクトル間の類似性を計算します。

4. GCNのメリット

ランダムウォークに基づく従来の機械学習        との比較

                ① GCN のすべての計算グラフは重みを共有しパラメータの量が少なくなります

                ②GCNは帰納学習であり、汎化能力が強い(新しいノードや新しいグラフにも汎化できる - 転移学習)

                ③ノードの属性特性、構造機能役割、ラベリング情報の活用

                ④ フィッティング学習能力が強く、得られる埋め込みベクトルの品質が高い

5. CNN と Transformer の比較

        1. CNNとの比較

                CNN は 2 層の GCN とみなすことができます. 畳み込みは 9 つの隣接ノードとターゲット ノードの情報を要約します. その数式は次のように書くこともできます: , CNN は固定近傍と固定順序 を持つ GCN とみなすことができますh^{(l+1)}=\sigma(\sum W_l^uh_u^P(l)+B_lh_v^{(l)}).

                 ただし、両者には次のような違いがあります

                        ① CNN には変換不変性がなく、ピクセルの順序が崩れるとネットワークの出力に影響を与えます。

                        ②GCNのコンボリューションカーネルの重みは\チルダ{A}あらかじめ定義されており、学習する必要はありません。CNN の重みを学習する必要がある

        2. トランスとの比較

                Transformer 自体は自己注意メカニズムであり、そのトレーニングの目的は、シーケンス内の要素が相互に影響を与えられるようにすることです。

                 Transformer は全結合グラフ上の GCN とみなすことができます。

おすすめ

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