{"notes":[{"id":"graph-learning/over-squashing","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"Over-squashing","subtitle":"もう入りきらない","author":"Z. Yuan","paperDate":"2020-06-09","publishedOn":"2024-03-03","paperTitle":"On the Bottleneck of Graph Neural Networks and its Practical Implications","paperUrl":"https://arxiv.org/abs/2006.05205","bibliography":{"title":"On the Bottleneck of Graph Neural Networks and its Practical Implications","authors":["Uri Alon","Eran Yahav"],"url":"https://arxiv.org/abs/2006.05205","pdfUrl":"https://arxiv.org/pdf/2006.05205v4","codeUrl":"https://github.com/tech-srl/bottleneck","preprint":{"id":"2006.05205","submittedOn":"2020-06-09","url":"https://arxiv.org/abs/2006.05205"},"publication":{"venue":"ICLR","year":2021,"kind":"conference","url":"https://arxiv.org/abs/2006.05205"},"citation":"@misc{graphlearningoversquashing2020,\n  title = {{On the Bottleneck of Graph Neural Networks and its Practical Implications}},\n  author = {Uri Alon and Eran Yahav},\n  year = {2020},\n  eprint = {2006.05205},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2006.05205}\n}\n","citationPath":"/content/papers/citations/graph-learning/over-squashing.af346c012204.bib"},"thumbnail":{"src":"/content/papers/assets/c3454ca38b6e53b6467ff66db7867788efed8d8a71eec3c6e7f754e586a99d4d.png","width":1078,"height":356},"locale":"ja","path":"/content/papers/ja/graph-learning/over-squashing.40644f2f5f00.md","headings":[{"id":"問題設定","text":"問題設定","depth":2},{"id":"問題の半径","text":"問題の半径","depth":3},{"id":"rnn-のボトルネックとの比較","text":"RNN のボトルネックとの比較","depth":3},{"id":"伝播比率だけを見る","text":"伝播比率だけを見る","depth":3},{"id":"意図的に作ったタスク","text":"意図的に作ったタスク","depth":3},{"id":"解決方法","text":"解決方法","depth":2},{"id":"最後の一層を全結合に","text":"最後の一層を全結合に","depth":3},{"id":"どれだけ大きなベクトルが要るか","text":"どれだけ大きなベクトルが要るか","depth":3},{"id":"議論","text":"議論","depth":2},{"id":"tree-neighborsmatch","text":"Tree-NeighborsMatch","depth":3},{"id":"qm9","text":"QM9","depth":3},{"id":"生物データセット","text":"生物データセット","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/deeper-insights","relation":"referenced","topic":""},{"id":"graph-learning/graphgps","relation":"referenced","topic":""}]},{"id":"graph-learning/deeper-insights","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"Deeper Insights","subtitle":"ならしすぎたグラフ","author":"Z. Yuan","paperDate":"2018-01-22","publishedOn":"2023-11-29","paperTitle":"Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning","paperUrl":"https://arxiv.org/abs/1801.07606","bibliography":{"title":"Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning","authors":["Qimai Li","Zhichao Han","Xiao-Ming Wu"],"url":"https://arxiv.org/abs/1801.07606","pdfUrl":"https://arxiv.org/pdf/1801.07606v1","codeUrl":null,"preprint":{"id":"1801.07606","submittedOn":"2018-01-22","url":"https://arxiv.org/abs/1801.07606"},"publication":{"venue":"AAAI","year":2018,"kind":"conference","url":"https://ojs.aaai.org/index.php/AAAI/article/view/11604"},"citation":"@misc{graphlearningdeeperinsights2018,\n  title = {{Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning}},\n  author = {Qimai Li and Zhichao Han and Xiao-Ming Wu},\n  year = {2018},\n  eprint = {1801.07606},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1801.07606}\n}\n","citationPath":"/content/papers/citations/graph-learning/deeper-insights.52354c86fac9.bib"},"thumbnail":{"src":"/content/papers/assets/2a13880b48fae6456e19c622cee1d7c7907f8c31d6890722d4980a381fddb06a.png","width":1396,"height":268},"locale":"ja","path":"/content/papers/ja/graph-learning/deeper-insights.dba605607ed9.md","headings":[{"id":"問題設定","text":"問題設定","depth":2},{"id":"解決方法","text":"解決方法","depth":2},{"id":"全結合ネットワークと比べる","text":"全結合ネットワークと比べる","depth":3},{"id":"ラプラシアン平滑化","text":"ラプラシアン平滑化","depth":3},{"id":"平滑化しすぎると","text":"平滑化しすぎると","depth":3},{"id":"浅すぎても困る","text":"浅すぎても困る","depth":3},{"id":"対策gcn-にもっとラベルを見せる","text":"対策：GCN にもっとラベルを見せる","depth":3},{"id":"議論","text":"議論","depth":2},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/appnp","relation":"referenced","topic":""},{"id":"graph-learning/sgc","relation":"referenced","topic":""}]},{"id":"graph-learning/graphgps","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"GraphGPS","subtitle":"グラフ上の GPS","author":"Z. Yuan","paperDate":"2022-05-25","publishedOn":"2025-09-09","world":"external/graphgps","paperTitle":"Recipe for a General, Powerful, Scalable Graph Transformer","paperUrl":"https://arxiv.org/abs/2205.12454","bibliography":{"title":"Recipe for a General, Powerful, Scalable Graph Transformer","authors":["Ladislav Rampášek","Mikhail Galkin","Vijay Prakash Dwivedi","Anh Tuan Luu","Guy Wolf","Dominique Beaini"],"url":"https://arxiv.org/abs/2205.12454","pdfUrl":"https://arxiv.org/pdf/2205.12454v4","codeUrl":"https://github.com/rampasek/GraphGPS","preprint":{"id":"2205.12454","submittedOn":"2022-05-25","url":"https://arxiv.org/abs/2205.12454"},"publication":{"venue":"NeurIPS","year":2022,"kind":"conference","url":"https://proceedings.neurips.cc/paper_files/paper/2022/hash/5d4834a159f1547b267a05a4e2b7cf5e-Abstract-Conference.html"},"citation":"@misc{graphlearninggraphgps2022,\n  title = {{Recipe for a General, Powerful, Scalable Graph Transformer}},\n  author = {Ladislav Rampášek and Mikhail Galkin and Vijay Prakash Dwivedi and Anh Tuan Luu and Guy Wolf and Dominique Beaini},\n  year = {2022},\n  eprint = {2205.12454},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2205.12454}\n}\n","citationPath":"/content/papers/citations/graph-learning/graphgps.053e58fd5309.bib"},"thumbnail":{"src":"/content/papers/assets/e4177a894582643d7811bced6f6c6cf8bb51ff7738da4af5d98115883e1a4bb8.png","width":1116,"height":798},"locale":"ja","path":"/content/papers/ja/graph-learning/graphgps.0d5dc280bee1.md","headings":[{"id":"問題設定","text":"問題設定","depth":2},{"id":"位置と構造","text":"位置と構造","depth":3},{"id":"なぜ伝播にも必要か","text":"なぜ伝播にも必要か","depth":3},{"id":"伝播のあとで注意しても遅い","text":"伝播のあとで注意しても遅い","depth":3},{"id":"解決方法","text":"解決方法","depth":2},{"id":"三つの材料","text":"三つの材料","depth":3},{"id":"gps-の一層","text":"GPS の一層","depth":3},{"id":"線形の計算量","text":"線形の計算量","depth":3},{"id":"議論","text":"議論","depth":2},{"id":"アブレーション二経路の寄与","text":"アブレーション：二経路の寄与","depth":3},{"id":"他モデルとの比較","text":"他モデルとの比較","depth":3},{"id":"一年後の再評価","text":"一年後の再評価","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/graph-transformer","relation":"referenced","topic":""},{"id":"graph-learning/san","relation":"referenced","topic":""},{"id":"graph-learning/graphormer","relation":"referenced","topic":""}]}],"text":"2005 年頃に提案されて以来、GNN には遠方の情報が届きにくいという古い問題があります。\n\n数層を超えると改善しなくなる定説は、表現が同じになる over-smoothing です。Technion の Uri Alon、Eran Yahav は、その観察は主に論文分類のような短距離タスクで、近所だけで答えが決まり、多層が不要な場合だと指摘します。本当に遠方が必要なら、別の原因があり得ます。\n\n\n> [!TIP]\n> \n> over-smoothing の出典と証明は、こちらのノートをどうぞ。\n> \n> - **[[18.01] Deeper Insights：ならしすぎたグラフ](/blog/papers/graph-learning/deeper-insights)**\n\n\n距離 $r$ の相互作用には最低 $r$ 層必要ですが、層ごとに面倒を見る隣の数が指数的に増え、すべてを固定長ベクトルへ詰め込みます。情報の押し潰しすぎ、**over-squashing** と呼びました。\n\n## 問題設定\n\n### 問題の半径\n\n**問題半径** $r$ は予測に必要な相互作用距離です。普通は未知で、層数 $K$ を調整して推定します。\n\n$K$ 層後の受容野 $\\mathcal N_v^K$ は $K$ ステップ以内の全ノードです。長距離が必要なら $K\\ge r$ でなければ届かず、**under-reaching** と呼びます。\n\nしかし $|\\mathcal N_v^K|$ は $K$ とともに指数的に増えます。その情報を一ベクトルに足し込み、肝心な知らせが届きません。訓練内の短距離信号に頼り、テストで汎化しなくなります。\n\n### RNN のボトルネックとの比較\n\n注意機構以前の翻訳を思い出します。seq2seq エンコーダーは文全体を最後の隠れ状態へ圧縮し、長文では情報を失いました。\n\n[![原論文 Figure 1：左の RNN seq2seq は鎖に沿って最後へ情報を送る。右の GNN は左に木状に広がる多数のノードから右端の目標に情報を集め、赤い曲線が目標直前で一束に詰まる。](/content/papers/assets/c3454ca38b6e53b6467ff66db7867788efed8d8a71eec3c6e7f754e586a99d4d.png)](/content/papers/assets/c3454ca38b6e53b6467ff66db7867788efed8d8a71eec3c6e7f754e586a99d4d.png)\n\n*原論文 Figure 1（Alon、Yahav）、[**PDF 2 ページ**](https://arxiv.org/pdf/2006.05205v4#page=2)より。原キャプションは省略。*\n\n著者は GNN のほうが深刻だと考えます。RNN の受容野は**線形**、GNN は**指数的**に増え、同じ固定長にずっと多くを詰めます。\n\n### 伝播比率だけを見る\n\n二分木で、重みや非線形性を無視し、各葉が $r$ 層後のルートにどれだけ残るかを見ます。\n\n```python\nimport numpy as np\n\ndef binary_tree(r):\n    n = 2 ** (r + 1) - 1                     # ルートは 0、i の子は 2i+1、2i+2\n    A = np.zeros((n, n))\n    for i in range((n - 1) // 2):\n        for c in (2 * i + 1, 2 * i + 2):\n            A[i, c] = A[c, i] = 1\n    return A\n\nfor r in range(2, 8):\n    A = binary_tree(r) + np.eye(2 ** (r + 1) - 1)\n    d = A.sum(1)\n    A_hat = A / np.sqrt(np.outer(d, d))\n    share = np.linalg.matrix_power(A_hat, r)[0, -1]     # r 歩後のルートでの最後の葉の取り分\n    print(f\"r={r}  葉ノード {2 ** r:>3} 個、ルートでの各葉の取り分 {share:.5f}\")\n```\n\n```text\nr=2  葉ノード   4 個、ルートでの各葉の取り分 0.10206\nr=3  葉ノード   8 個、ルートでの各葉の取り分 0.02552\nr=4  葉ノード  16 個、ルートでの各葉の取り分 0.00638\nr=5  葉ノード  32 個、ルートでの各葉の取り分 0.00159\nr=6  葉ノード  64 個、ルートでの各葉の取り分 0.00040\nr=7  葉ノード 128 個、ルートでの各葉の取り分 0.00010\n```\n\n一層深くなると葉は倍、取り分は約四分の一です。$r=7$ では 128 枚が混ざり、各約一万分の一になります。これは直感の例で、論文の議論はベクトルの情報容量から出発します。\n\n### 意図的に作ったタスク\n\nボトルネックを切り出すため、**NeighborsMatch** を作ります。\n\n各緑ノードには異なる個数の青い隣と、文字ラベルがあります。目標にも青い隣があり、同数の青を持つ緑ノードの文字を予測します。対応はグラフごとに違うので、全緑ノードの情報を目標に送り比べる必要があり、近道はありません。\n\n作為的ですが、型と値を持つ複数変数から、その場に必要なものを選ぶ Python の問題に似ていると述べます。後段の VarMisuse がそのタスクです。\n\n**Tree-NeighborsMatch** は中間を深さ $r$ の二分木にします。緑は葉、目標はルートで、全エッジがルート向きです。問題半径で詰まり方を直接制御します。モデルは $r+1$ 層で、到達後もう一度非線形性を通せます。\n\n## 解決方法\n\n主貢献は over-squashing の指摘と説明です。対策は最も単純な一例で、未対処の問題が広く存在する証拠のためだと著者は述べます。\n\n### 最後の一層を全結合に\n\n最終層を**全接続**（fully-adjacent、FA）にし、全ペアを隣 $\\mathcal N_v:=V$ にします。層の種類も重みの数も変えません。\n\n前 $K-1$ 層は元のグラフで構造を学び、最後に直接相互作用します。情報を層ごとにボトルネックへ押し込まずに済みます。\n\n### どれだけ大きなベクトルが要るか\n\nTree-NeighborsMatch で訓練精度 100% に必要な隠れ次元 $d$ の組合せ的下界も求めます。$r$ の階乗で増え、指数より速く、実験の $d=32$ では最大 $r=7$ です。勾配降下が存在する解を見つける保証はなく、実際には $d=512$ でも $r=7$ までしか適合しません。\n\n## 議論\n\n### Tree-NeighborsMatch\n\n[![原論文 Figure 3：横軸 r=2〜8、縦軸は訓練精度。GGNN、GAT、GIN、GCN は r=2、3 で 1.0。r=4 で GGNN と GAT は 1.0、GIN は 0.77、GCN は 0.70。その後全て下がり、r=8 では 0.2 未満。](/content/papers/assets/7a0066769f814f3963a4fbb407f58d7c16ecbc9fcc0c7107807c9ffd895b54e4.png)](/content/papers/assets/7a0066769f814f3963a4fbb407f58d7c16ecbc9fcc0c7107807c9ffd895b54e4.png)\n\n*原論文 Figure 3（Alon、Yahav）、[**PDF 5 ページ**](https://arxiv.org/pdf/2006.05205v4#page=5)より。原キャプションは省略。*\n\nこれは**訓練精度**です。GCN、GIN は $r=3$ まで完全適合し、$r=4$ の GCN は 70%。$r=5$ 以降は、各サンプルを一万回以上見ても四モデルとも完全適合できません。\n\nGAT、GGNN は $r=4$ までです。著者の説明では、GCN、GIN は先に全隣を総和し、そのあと自分と合わせます。一方 GAT は目標の表現で隣を選び、関係する情報だけを上へ送れるためです。GGNN も要素ごとのゲートで同様に選別します。\n\nでは公開の長距離タスクで訓練に適合するのはなぜか。著者の仮説は、短距離信号や偶然の特徴に頼り、潰された遠方情報を学ばないので、テストで汎化しないというものです。\n\n### QM9\n\n約 13 万分子、平均約 18 原子から 13 の量子化学的性質を回帰します。500 設定を探索した Brockschmidt（2020）の実装を使います。多くの最良層数が 8 なのは、長距離が必要な兆しです。\n\n同じコード・分割・設定で、最終層だけ FA にし、各性質 5 回訓練すると、誤差は平均 42% 減りました。\n\nさらに、いくつかの可能性を除きます。\n\n- **under-reaching では？** 少なくとも 90% のサンプルで層数は分子の直径以上です。10 層にしても改善しません。\n- **ベクトルが小さい？** 次元を倍にしても 5.5% の改善だけで、FA は元の次元・重み数のまま 42% 改善します。\n- **全接続が必要？** ランダムに半分のエッジだけ足しても平均 31.5% 減り、多く足すほど改善します。\n- **全層を全接続にしたら？** 誤差は逆に 1500% 増えました。グラフ構造は必要で、最後に直接情報交換できる場所を足すのです。\n\n### 生物データセット\n\nNCI1 は 4,110 化合物の抗肺がん活性、ENZYMES は 600 酵素の 6 分類です。Errica ら（2020）の公平比較に従い、10 分割×3 シード、計 30 回平均です。\n\nErrica らは ENZYMES でグラフなしの基準が全 GNN を上回ると報告していました。FA 追加の GIN は元より 8.1 ポイント、グラフなしより 2.5 ポイント改善します。NCI1 も従来最良の GIN より 1.5 ポイント高く、平均誤差削減は ENZYMES 12%、NCI1 4.8% です。\n\nVarMisuse では五 GNN とも既知プロジェクトで改善し、R-GCN は 88.4% です。未知でも多くが改善し、R-GCN は 82.9% から 83.8%、GGNN と GNN-MLP は少し下がります。\n\n## 結論\n\n遠方情報の難しさを、従来切り出していなかった原因に結び付けました。指数的な受容野と固定長ベクトルで情報が詰まり、一律に隣を足す GCN、GIN が特に影響されます。重みを増やさない全接続の最終層だけで、十分調整済みのモデルも明確に改善しました。\n\nFA は出発点だと明言します。のちには接続を変えてボトルネックを広げたり、GraphGPS のように各層で局所伝播と大域的注意を併用したりします。\n\n\n> [!TIP]\n> \n> 各層で両者を組み合わせる方法は、こちらのノートをどうぞ。\n> \n> - **[[22.05] GraphGPS：グラフ上の GPS](/blog/papers/graph-learning/graphgps)**\n\n\n長距離タスクで詰まったら、深さや幅を増やす前に、最終層で全ノードをつないでみましょう。パラメーターは増やさず、その層の隣接行列だけを変えれば済みます。\n","imageSizes":{"/content/papers/assets/c3454ca38b6e53b6467ff66db7867788efed8d8a71eec3c6e7f754e586a99d4d.png":{"width":1078,"height":356},"/content/papers/assets/7a0066769f814f3963a4fbb407f58d7c16ecbc9fcc0c7107807c9ffd895b54e4.png":{"width":558,"height":316}}}
