{"notes":[{"id":"graph-learning/san","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"SAN","subtitle":"グラフの形を聴く","author":"Z. Yuan","paperDate":"2021-06-07","publishedOn":"2024-03-22","world":"external/san","paperTitle":"Rethinking Graph Transformers with Spectral Attention","paperUrl":"https://arxiv.org/abs/2106.03893","bibliography":{"title":"Rethinking Graph Transformers with Spectral Attention","authors":["Devin Kreuzer","Dominique Beaini","William L. Hamilton","Vincent Létourneau","Prudencio Tossou"],"url":"https://arxiv.org/abs/2106.03893","pdfUrl":"https://arxiv.org/pdf/2106.03893v3","codeUrl":"https://github.com/DevinKreuzer/SAN","preprint":{"id":"2106.03893","submittedOn":"2021-06-07","url":"https://arxiv.org/abs/2106.03893"},"publication":{"venue":"NeurIPS","year":2021,"kind":"conference","url":"https://proceedings.neurips.cc/paper/2021/hash/b4fd1d2cb085390fbbadae65e07876a7-Abstract.html"},"citation":"@misc{graphlearningsan2021,\n  title = {{Rethinking Graph Transformers with Spectral Attention}},\n  author = {Devin Kreuzer and Dominique Beaini and William L. Hamilton and Vincent Létourneau and Prudencio Tossou},\n  year = {2021},\n  eprint = {2106.03893},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2106.03893}\n}\n","citationPath":"/content/papers/citations/graph-learning/san.e69e469c3b91.bib"},"thumbnail":{"src":"/content/papers/assets/239f3ac016f803fed4fedec5cad345c48bc6b97791249f0e5cfdf2efd433b5c2.png","width":1280,"height":840},"locale":"ja","path":"/content/papers/ja/graph-learning/san.e02e8dcf7c2d.md","headings":[{"id":"問題設定","text":"問題設定","depth":2},{"id":"解決方法","text":"解決方法","depth":2},{"id":"学習する位置符号化","text":"学習する位置符号化","depth":3},{"id":"全結合に二系統の注意","text":"全結合に二系統の注意","depth":3},{"id":"議論","text":"議論","depth":2},{"id":"gamma-はどれだけ","text":"\\gamma はどれだけ？","depth":3},{"id":"全結合と-lpe-の寄与","text":"全結合と LPE の寄与","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/graph-transformer","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"Graph Transformer","subtitle":"全部つなぐと、かえって悪い","author":"Z. Yuan","paperDate":"2020-12-17","publishedOn":"2024-03-13","paperTitle":"A Generalization of Transformer Networks to Graphs","paperUrl":"https://arxiv.org/abs/2012.09699","bibliography":{"title":"A Generalization of Transformer Networks to Graphs","authors":["Vijay Prakash Dwivedi","Xavier Bresson"],"url":"https://arxiv.org/abs/2012.09699","pdfUrl":"https://arxiv.org/pdf/2012.09699v2","codeUrl":"https://github.com/graphdeeplearning/graphtransformer","preprint":{"id":"2012.09699","submittedOn":"2020-12-17","url":"https://arxiv.org/abs/2012.09699"},"publication":{"venue":"AAAI Workshop on Deep Learning on Graphs","shortVenue":"DLG-AAAI","year":2021,"kind":"workshop","url":"https://arxiv.org/abs/2012.09699v2"},"citation":"@misc{graphlearninggraphtransformer2020,\n  title = {{A Generalization of Transformer Networks to Graphs}},\n  author = {Vijay Prakash Dwivedi and Xavier Bresson},\n  year = {2020},\n  eprint = {2012.09699},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2012.09699}\n}\n","citationPath":"/content/papers/citations/graph-learning/graph-transformer.4e2f841bbbf0.bib"},"thumbnail":{"src":"/content/papers/assets/0540122812c6e6914f22240411cf2d172a94764bf8a0e6f6ab2cdae7c618f9fb.png","width":1324,"height":1000},"locale":"ja","path":"/content/papers/ja/graph-learning/graph-transformer.41cd0606ebf1.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":2},{"id":"実験設定","text":"実験設定","depth":3},{"id":"全結合にすると","text":"全結合にすると？","depth":3},{"id":"位置符号化と-batchnorm","text":"位置符号化と BatchNorm","depth":3},{"id":"gnn-との比較","text":"GNN との比較","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/san","relation":"referenced","topic":""},{"id":"graph-learning/graphgps","relation":"referenced","topic":""}]}],"text":"1966 年、数学者 Mark Kac は〈Can One Hear the Shape of a Drum?〉を書きました。膜の形が振動の周波数を決めますが、周波数を聴くだけで形を逆算できるのでしょうか？\n\nグラフの周波数はラプラシアンの固有値と固有ベクトルです。McGill、Mila、Valence Discovery の Devin Kreuzer、Dominique Beaini、William L. Hamilton らは、Transformer にそれを「聴かせ」、各ノードの位置を学ばせます。\n\nもう一つ覆したい結果がありました。半年前の GT は全ノード注意で三セットとも大幅に悪化し、隣だけを見るべきだとしました。SAN（Spectral Attention Network）は全結合も使えると示します。\n\n\n> [!TIP]\n> \n> GT の疎注意、位置符号化、全結合実験は、こちらのノートをどうぞ。\n> \n> - **[[20.12] Graph Transformer：全部つなぐと、かえって悪い](/blog/papers/graph-learning/graph-transformer)**\n\n\n## 問題設定\n\n近傍伝播には WL の識別上限、深さの over-smoothing、距離の over-squashing があります。どれも構造が計算経路を直接決めることに関係します。\n\nTransformer は全位置が互いを見て、構造を位置符号化という「柔らかい」方法で教えます。グラフでは符号化が鍵です。\n\nGT のラプラシアン固有ベクトルには、未処理の点があります。\n\n- **固有値も情報を持つ**。GT は固有ベクトルだけを使います。系列の周波数は固定なので順番で分かりますが、グラフごとに異なるため、順番だけでは対応周波数を失います。\n- **重根**。固有値が重複すると、その固有空間内の組み合わせも有効な固有ベクトルです。\n- **本数が変わる**。最大でノード数だけのベクトルがあります。GT の固定 $k$ 本では、大きいグラフほど使う割合が減ります。\n- **符号**。$k$ 本には $2^k$ 通りがあり、小さい $k$ ならランダム反転で対応できても、大きくなると難しくなります。\n\n重根を、橋でつながる二つの三角形で見ます。左 A、B、C、右 D、E、F、橋 C–D の正規化ラプラシアンには 1.5 が二つあります。\n\n```python\nimport numpy as np\n\nedges = [(0, 1), (0, 2), (1, 2), (2, 3), (3, 4), (3, 5), (4, 5)]\nA = np.zeros((6, 6))\nfor i, j in edges:\n    A[i, j] = A[j, i] = 1\nd = A.sum(1)\nL = np.eye(6) - A / np.sqrt(np.outer(d, d))\nlam = np.clip(np.linalg.eigvalsh(L), 0, None)     # 固有値は非負、浮動小数点誤差を除く\nprint(\"固有値:\", lam.round(2))\n\nu1 = np.array([1, -1, 0, 0, 0, 0]) / np.sqrt(2)   # 左三角形の A、B だけに値\nu2 = np.array([0, 0, 0, 0, 1, -1]) / np.sqrt(2)   # 右三角形の E、F だけに値\nmix = (u1 + u2) / np.sqrt(2)                      # 二つの組み合わせ\nfor name, v in [(\"u1  \", u1), (\"u2  \", u2), (\"混合\", mix)]:\n    print(name, \"固有値 1.5 の固有ベクトル:\", np.allclose(L @ v, 1.5 * v), \"  A の値:\", round(v[0], 2))\n```\n\n```text\n固有値: [0.   0.2  1.17 1.5  1.5  1.63]\nu1   固有値 1.5 の固有ベクトル: True   A の値: 0.71\nu2   固有値 1.5 の固有ベクトル: True   A の値: 0.0\n混合 固有値 1.5 の固有ベクトル: True   A の値: 0.5\n```\n\n三本とも有効なのに、A の値は 0.71、0、0.5 とライブラリの選択で変わります。そのまま位置にすると、学ぶ内容もライブラリに左右されます。\n\n## 解決方法\n\nまず各ノードの位置符号化を学び、特徴量に連結し、全結合 Transformer に入れる二段階です。\n\n[![本文で整理した図。左は C–D で結んだ三角形二つ。実線は元の 7 エッジ、青破線は追加 8 接続。重みは元が 1/(1+γ)、追加が γ/(1+γ)。γ=0 は元だけ、γ=1 は公平に扱う。右は j の位置符号化で、m 組の固有値と j の固有ベクトル値を線形層、Transformer、総和に通し LPE にし、特徴量に連結する。](/content/papers/assets/a33621a75602e6a9172f1b198871a2b3db0fcf840a1c7692ca0dd88c16d80933.png)](/content/papers/assets/a33621a75602e6a9172f1b198871a2b3db0fcf840a1c7692ca0dd88c16d80933.png)\n\n*原論文 §3.1、§3.3 の式に基づく独自の模式図。*\n\n### 学習する位置符号化\n\n右側が学習型位置符号化（learned positional encoding、LPE）です。\n\nノード $j$ ごとに小さい $m$ 固有値を取り、$\\lambda_i$ と対応する $\\phi_{i,j}$ のペアを長さ $m$ の列にします。固有ベクトルを「周波数軸」に置き、固有値をその位置と考えます。\n\n各ペアを線形層で $k$ 次元にし、Transformer エンコーダーで $m$ 要素の注意を計算し、総和で $k$ 次元の LPE にします。ノード数が $m$ 未満ならマスクで埋めます。\n\n四点中三点を扱います。値とベクトルを組にし、可変長で最大グラフまでの $m$ を使って全スペクトルを含められ、重根に対応するベクトルを組み合わせたり無視したりする方法も学べる可能性があります。符号は残り、GT と同じくランダム反転します。\n\n付録のエッジ版は $|\\phi_{i,j_1}-\\phi_{i,j_2}|$、$\\phi_{i,j_1}\\phi_{i,j_2}$ など符号不変量をノード間の特徴にします。理論上強いものの、全結合で $O(N^4)$ となるため、本文はノード版です。\n\n### 全結合に二系統の注意\n\n左は本体です。未接続ペアにもエッジ埋め込み付き接続を足します。元エッジは $Q^1$、$K^1$、$E^1$、追加は $Q^2$、$K^2$、$E^2$ を使い、$\\gamma$ で配分します。\n\n$$\nw_{ij}=\n\\begin{cases}\n\\dfrac{1}{1+\\gamma}\\cdot\\mathrm{softmax}\\big(\\hat w_{ij}\\big) & i,j\\ \\text{元のグラフで隣接}\\\\[2mm]\n\\dfrac{\\gamma}{1+\\gamma}\\cdot\\mathrm{softmax}\\big(\\hat w_{ij}\\big) & \\text{それ以外のノード対}\n\\end{cases}\n$$\n\n$\\gamma=0$ は追加の重みゼロで近傍注意、$\\gamma=1$ は両系統を公平にします。局所構造と遠方への接続のトレードオフです。残差・正規化・FFN は GT と同じですが、エッジ更新は複雑な割に効果が乏しく省きます。\n\n## 議論\n\n### $\\gamma$ はどれだけ？\n\nZINC、PATTERN、CLUSTER、MolHIV で探索します。分子二つは最良 $\\log\\gamma$ が −7〜−5 で追加の取り分はわずか。PATTERN、CLUSTER は大きい値を好みます。\n\n分子は小さく、環や結合などの局所構造が重要なので、疎注意数層で全体に届くためと説明します。半教師あり CLUSTER では一部ノードに真ラベルがあり、全結合で毎層すべてから見えます。\n\n### 全結合と LPE の寄与\n\n$\\gamma$ を固定し約 50 万パラメーターで二設計を分けます。\n\n| 注意 | LPE | ZINC（MAE ↓） | PATTERN | CLUSTER | MolHIV（ROC-AUC） |\n| --- | --- | ---: | ---: | ---: | ---: |\n| 疎 | なし | 0.267 | 83.61% | 75.68% | 73.46% |\n| 疎 | あり | 0.198 | 81.33% | 75.74% | 76.61% |\n| 全結合 | なし | 0.392 | 86.32% | 76.45% | 73.84% |\n| 全結合 | あり | **0.157** | **86.44%** | **76.69%** | **77.57%** |\n\nZINC は全結合だけでは 0.267 から 0.392 に悪化し、GT と同じです。LPE も加えると最良の 0.157 になります。部分構造を検出できるため分子に効き、単純なクラスタリングの PATTERN、CLUSTER は影響が小さいと説明します。\n\n### 当時の最良と比べる\n\n調整済み SAN は ZINC 0.139 で PNA 0.142 を上回り、PATTERN 86.58%、CLUSTER 76.69% も表中最良です。同表の全結合 GT は ZINC 0.598。知る限り、グラフで有効な初の全結合モデルだと述べます。\n\nOGB では控えめです。MolHIV のテスト ROC-AUC は 77.85% で DGN 79.70% 未満ですが、検証は 85.30% で PNA 84.25%、DGN 84.70% より高く、検証とテストの相関の低さに帰しています。MolPCBA の平均適合率は 27.65%、DGN は 28.85% です。\n\n### 代償\n\n全結合注意 $O(N^2)$、LPE $O(m^2N)$ は伝播の $O(|E|)$ より高コストです。後続研究では、ogbg-molpcba の約 600 万パラメーター GPS は同型 GPU で一 epoch 196 秒、SAN は 883 秒。12 万超グラフ、平均約 480 ノードの LRGB COCO-SP では A100 で 60 時間でも収束しません。\n\n## 結論\n\nスペクトルを丁寧に符号化し、元と追加の接続を別々に採点して $\\gamma$ で配るなら、全結合 Transformer もグラフで有効だと示しました。よい符号化なしでは悪化するという GT の現象も、アブレーションで説明します。\n\n翌年、Beaini も参加する GraphGPS は全結合注意を交換可能なモジュールにし、伝播と一層に並べます。符号問題向けの SignNet も選択肢に入れます。\n\n数十ノードなら試す価値があります。大きなグラフでは、二乗のコストが先に限界になります。\n","imageSizes":{"/content/papers/assets/a33621a75602e6a9172f1b198871a2b3db0fcf840a1c7692ca0dd88c16d80933.png":{"width":1280,"height":840}}}
