転載する場合は出典を明記してください: Senior Xiaofeng’s Big Bang Theory [xfxuezhang.cn]
背景情報
ほとんどのブログでは GCN レイヤーの数を紹介する際に、次の点について言及します (要約)。
- 最初のレベルでは、ノードはすぐ隣のノードから情報を集約します。
- 第 2 層では、各ノードに直接の隣接ノードに関する情報が含まれるため、直接の隣接ノードの機能を集約すると、2 ホップの隣接ノードの情報も間接的に集約されます。
- このプロセスは継続することができ、層が追加されるたびに、情報集約の範囲が 1 ホップずつ拡張されます。
しかし、コードを見ると、実際には GCNCov の操作が同じであることがわかります。では、複数のレイヤーを重ね合わせて、どのようにしてマルチホップの近隣ノードを集約するのでしょうか?
理解する方法
実際、理解する必要があるのは 1 つだけです。それは「間接的な」集計であるということです。
例えば:
GCNCov の最初の層では、各ノードはその 1 ホップ隣接ノードの情報を取得し、すべての隣接ノードの情報に基づいて自身の情報を更新できます。これで問題ありません、わかりやすいです。
次に、更新されたノードには実際にすべての近隣ノードに関する情報が含まれていることを認識する必要があります。同様に、現在のノードの隣接ノードにも、独自の隣接ノード情報が含まれます。
次に、第 2 層の GCNCov を実行すると、隣接ノードには隣接ノードの隣接ノードが含まれるため、現在のノードには間接的に第 2 ホップの隣接ノード情報が含まれます。
したがって、これら 2 つの GCNCov を実行すると、その 1 ホップの近隣情報が複数回使用され、冗長性が生じたことが実際にわかります。また、層数が増えると「間接性」も増すため、現在のノードへの先のノードの情報の寄与が弱まると考えられます。
さらに、層が多すぎると、過剰な平滑化の問題が発生する可能性があります。つまり、異なるノードの特徴がますます類似し、区別が失われます。
したがって、層が増えるほど効果は悪化します。これは次のように説明されているようです。
最後に、理解するために絵を描いてみましょう。