{"notes":[{"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":""}]},{"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/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":"Transformer は文の各単語から全単語を見ます。単語をノード、全ペアをエッジにした全結合グラフと見なせます。\n\n文がグラフなら、本物のグラフもそのまま入力できるのでしょうか？\n\n南洋理工大学の Vijay Prakash Dwivedi、Xavier Bresson は、そのままでは難しいと考えます。文は既知の接続がなく数十〜数百語なので全結合も合理的で計算できます。しかしグラフは構造を持ち、百万ノードにもなり、全結合は構造を無駄にし計算もできません。\n\n2020 年末の Graph Transformer（以下 GT）は、任意グラフへ書き換える初期の試みです。半年後の SAN、さらに翌年の GraphGPS は比較の出発点にしました。\n\n\n> [!TIP]\n> \n> 全結合を復活させた SAN と、両方式を一層に入れる GraphGPS は、こちらのノートをどうぞ。\n> \n> - **[[21.06] SAN：グラフの形を聴く](/blog/papers/graph-learning/san)**\n> - **[[22.05] GraphGPS：グラフ上の GPS](/blog/papers/graph-learning/graphgps)**\n\n\n## 問題設定\n\n問題を二つに分けます。\n\n**疎性**。先行する Li ら（2019）は大域情報のため全ノードを見ます。しかし疎な接続自体がよい帰納バイアスで、それを失います。大域情報は位置符号化や仮想ノードで補えると考えます。\n\n**位置符号化**。文には順番があり、正弦波で位置を表します。グラフは標準順序がなく、対称性もあり、一意の位置を定義しにくいものです。近傍内の注意を使う GAT が十分でない理由の一つも、位置の不足と見ます。\n\n近傍内の注意と適切な位置符号化で、汎用で有効なグラフ Transformer を作れるかを確かめます。\n\n## 解決方法\n\n[![原論文 Figure 1：左の GT 層はノード特徴量にラプラシアン位置符号化 λ を加え、Q、K、V 投影、積、スケーリング、softmax、総和、Add&Norm、FFN、Add&Norm を L 層繰り返す。右のエッジ特徴版は e_ij の経路を持ち、注意スコアと E 投影後のエッジ特徴量を掛け、エッジにも FFN と正規化がある。](/content/papers/assets/0540122812c6e6914f22240411cf2d172a94764bf8a0e6f6ab2cdae7c618f9fb.png)](/content/papers/assets/0540122812c6e6914f22240411cf2d172a94764bf8a0e6f6ab2cdae7c618f9fb.png)\n\n*原論文 Figure 1（Dwivedi、Bresson）、[**PDF 2 ページ**](https://arxiv.org/pdf/2012.09699v2#page=2)より。原キャプションは省略。*\n\n左が基本、右がエッジ特徴版です。元の Transformer から三点を変えます。\n\n### 隣接ノード間だけの注意\n\n一層の注意はほぼ Transformer と同じで、和の範囲だけが違います。\n\n$$\n\\hat h_i^{\\ell+1}=O_h^\\ell\\,\\Big\\Vert_{k=1}^{H}\\Big(\\sum_{j\\in\\mathcal N_i}w_{ij}^{k,\\ell}V^{k,\\ell}h_j^\\ell\\Big),\\qquad\nw_{ij}^{k,\\ell}=\\mathrm{softmax}_j\\Big(\\frac{Q^{k,\\ell}h_i^\\ell\\cdot K^{k,\\ell}h_j^\\ell}{\\sqrt{d_k}}\\Big)\n$$\n\n$\\mathcal N_i$ は $i$ の隣、$\\Vert$ は $H$ ヘッドの連結です。全位置でなく隣だけを足し、そのあと残差、正規化、フィードフォワードを置きます。\n\n### ラプラシアン位置符号化\n\n位置はラプラシアン固有ベクトルで表します。\n\n$$\n\\Delta=I-D^{-1/2}AD^{-1/2}=U^\\top\\Lambda U\n$$\n\n固有値 0 の一本を除き、小さい方から $k$ 本の非自明なベクトルを取ります。各ノードの値が位置 $\\lambda_i$ です。線形投影して入力層だけで足し、中間層では加えません。\n\nNLP の正弦位置符号化のグラフ上の一般化で、近いノードには近い符号を与え、距離情報を持ち込めるため、と説明します。\n\n橋で結んだ二つの三角形で $k=2$ を計算します。左は A、B、C、右は D、E、F、橋は C と D です。\n\n```python\nimport numpy as np\nnp.set_printoptions(precision=2, suppress=True)\n\nnames = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\"]\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\n\nd = A.sum(1)\nL = np.eye(6) - A / np.sqrt(np.outer(d, d))      # Δ = I - D^-1/2 A D^-1/2\nlam, U = np.linalg.eigh(L)                      # 固有値を昇順に並べる\nU = U * np.sign(U[0])                           # 独自の約束：A を正にする\n\npe = U[:, 1:3]                                  # 固有値 0 を飛ばし、次の 2 本を取る\nprint(\"固有値:\", lam[1:3])\nfor name, row in zip(names, pe):\n    print(name, row)\n```\n\n```text\n固有値: [0.2  1.17]\nA [0.45 0.33]\nB [0.45 0.33]\nC [ 0.32 -0.53]\nD [-0.32 -0.53]\nE [-0.45  0.33]\nF [-0.45  0.33]\n```\n\n第一成分は左が正、右が負で二群を分け、第二成分は橋の C、D と外の四ノードを分けます。対称な A と B は同じ位置符号化を受け取り、構造だけでは区別できません。\n\nもう一つ、固有ベクトルの符号は任意です。上の `np.sign` は自分で決めた約束で、−1 倍しても固有ベクトルです。\n\n```python\nv = pe[:, 0]\nprint(\"元のベクトル:\", np.allclose(L @ v, lam[1] * v))\nprint(\"符号反転後  :\", np.allclose(L @ -v, lam[1] * -v))\n```\n\n```text\n元のベクトル: True\n符号反転後  : True\n```\n\n同じグラフでも逆の符号化があり、$k$ 本なら $2^k$ 通りです。別のグラフで最初のノードを正にする根拠も定かではありません。訓練中にランダム反転し、気にしないよう学ばせます。\n\n### エッジ特徴量と正規化\n\n分子の結合種類、知識グラフの関係はエッジにあります。注意スコアに投影後の $E^{k,\\ell}e_{ij}^\\ell$ を掛けて softmax に入れます。エッジも専用 FFN を持ち、層ごとに更新します。\n\n最後は LayerNorm を BatchNorm に替え、訓練が速く、汎化もよくなりました。\n\n## 議論\n\n### 実験設定\n\nBenchmarking GNNs の三セットです。\n\n- **ZINC**：1.2 万分子の部分集合で、溶解度関連の性質を回帰します。MAE は低いほどよく、結合種類があるためエッジ特徴版を使います。\n- **PATTERN**：確率的ブロックモデルによる 1.4 万グラフで、各ノードを二分類します。\n- **CLUSTER**：同じく生成した 1.2 万グラフで、各ノードを 6 群に分けます。\n\nすべて 10 層、8 ヘッド、約 50 万パラメーターで、4 シードを実行します。\n\n### 全結合にすると？\n\n元グラフと全ペアを結んだグラフで、同じモデルを比べます。BatchNorm とラプラシアン符号化を使うと、こうなります。\n\n| データセット | 隣だけ | 全ノード |\n| --- | ---: | ---: |\n| ZINC（MAE ↓） | 0.226 | 0.598 |\n| CLUSTER（精度 ↑） | 73.17% | 27.12% |\n| PATTERN（精度 ↑） | 84.81% | 54.94% |\n\n全て大幅に悪化します。二クラスの PATTERN 54.94% はランダムに近く、六クラスの CLUSTER 27.12% もランダム 16.7% より少し上です。ZINC の全結合は疎構造のない場合を見るため、エッジ特徴量を使いません。\n\n任意構造のグラフでは、疎接続が重要な帰納バイアスだと結論します。\n\n### 位置符号化と BatchNorm\n\nLayerNorm／BatchNorm と符号化有無の四組では、全セットで BatchNorm とラプラシアン符号化が最良です。ばらつきの大きい組もあり、PATTERN の LayerNorm、符号化なしは四シードで 73.14% ± 13.63% です。\n\nGraph-BERT の WL 符号化とも比べます。\n\n| 位置符号化 | ZINC（MAE ↓） | CLUSTER | PATTERN |\n| --- | ---: | ---: | ---: |\n| なし | 0.264 | 72.14% | 83.95% |\n| ラプラシアン | **0.226** | **73.17%** | **84.81%** |\n| WL（Graph-BERT） | 0.267 | 70.79% | 75.49% |\n\nWL は PATTERN の訓練 97.03%、テスト 75.49% で、こうした生成グラフに過学習しやすいと見ます。\n\n### GNN との比較\n\n同じ約 50 万パラメーターで比べます。\n\n| モデル | ZINC（MAE ↓） | CLUSTER | PATTERN |\n| --- | ---: | ---: | ---: |\n| GCN | 0.367 | 68.50% | 71.89% |\n| GAT | 0.384 | 70.59% | 78.27% |\n| GatedGCN | **0.214** | **76.08%** | **86.51%** |\n| GT | 0.226 | 73.17% | 84.81% |\n\nGCN、同じ注意型の GAT を明確に上回りますが、三つとも GatedGCN に少し届きません。著者は新しく強い注意型 GNN のベースラインと位置付けています。\n\n## 結論\n\n全部つなぐかへの答えは、まずつながない、でした。近傍内注意、ラプラシアン符号化、BatchNorm の組が最良で、全結合は三つとも大幅に劣りました。\n\n半年後、SAN は精密な位置符号化と追加接続への重み配分で、全結合を復活させます。さらに一年後、Dwivedi も著者の GraphGPS は局所伝播と全ノード注意を一層に置きます。\n\n固有ベクトルを位置に使う前に、符号の扱いを決めましょう。同じグラフでも計算のたびに符号化が変わり得ます。\n","imageSizes":{"/content/papers/assets/0540122812c6e6914f22240411cf2d172a94764bf8a0e6f6ab2cdae7c618f9fb.png":{"width":1324,"height":1000}}}
