{"notes":[{"id":"graph-learning/graph-transformer","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"Graph Transformer","subtitle":"Tout connecter aggrave les choses","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":"fr","path":"/content/papers/fr/graph-learning/graph-transformer.ef239bb32b2b.md","headings":[{"id":"poser-le-problème","text":"Poser le problème","depth":2},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"lattention-entre-voisins-seulement","text":"L'attention entre voisins seulement","depth":3},{"id":"encodage-positionnel-laplacien","text":"Encodage positionnel laplacien","depth":3},{"id":"caractéristiques-darêtes-et-normalisation","text":"Caractéristiques d'arêtes et normalisation","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"protocole-expérimental","text":"Protocole expérimental","depth":3},{"id":"que-donne-la-connexion-complète-","text":"Que donne la connexion complète ?","depth":3},{"id":"encodage-positionnel-et-batchnorm","text":"Encodage positionnel et BatchNorm","depth":3},{"id":"comparaison-aux-gnn","text":"Comparaison aux GNN","depth":3},{"id":"conclusion","text":"Conclusion","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":"Entendre la forme du graphe","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":"fr","path":"/content/papers/fr/graph-learning/san.efc40fb3a1b7.md","headings":[{"id":"poser-le-problème","text":"Poser le problème","depth":2},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"apprendre-les-positions","text":"Apprendre les positions","depth":3},{"id":"tout-connecter-avec-deux-attentions-distinctes","text":"Tout connecter, avec deux attentions distinctes","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"quelle-valeur-pour-gamma-","text":"Quelle valeur pour \\gamma ?","depth":3},{"id":"lapport-séparé-de-la-connexion-complète-et-du-lpe","text":"L'apport séparé de la connexion complète et du LPE","depth":3},{"id":"face-aux-meilleurs-modèles-de-lépoque","text":"Face aux meilleurs modèles de l'époque","depth":3},{"id":"le-prix","text":"Le prix","depth":3},{"id":"conclusion","text":"Conclusion","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":"Un GPS sur le graphe","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":"fr","path":"/content/papers/fr/graph-learning/graphgps.e64f8dec7145.md","headings":[{"id":"poser-le-problème","text":"Poser le problème","depth":2},{"id":"position-et-structure","text":"Position et structure","depth":3},{"id":"pourquoi-les-messages-en-ont-besoin","text":"Pourquoi les messages en ont besoin","depth":3},{"id":"propager-avant-lattention-peut-déjà-perdre-linformation","text":"Propager avant l'attention peut déjà perdre l'information","depth":3},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"trois-ingrédients","text":"Trois ingrédients","depth":3},{"id":"une-couche-gps","text":"Une couche GPS","depth":3},{"id":"une-complexité-linéaire","text":"Une complexité linéaire","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"ablation--le-poids-de-chaque-voie","text":"Ablation : le poids de chaque voie","depth":3},{"id":"comparaison-aux-autres-modèles","text":"Comparaison aux autres modèles","depth":3},{"id":"une-réévaluation-un-an-plus-tard","text":"Une réévaluation, un an plus tard","depth":3},{"id":"conclusion","text":"Conclusion","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":"Quand un Transformer traite une phrase, chaque mot regarde tous les autres. On peut donc voir la phrase comme un graphe complet : les mots sont des nœuds et chaque paire possède une arête.\n\nSi une phrase est déjà un graphe, pourquoi ne pas envoyer directement un véritable graphe dans un Transformer ?\n\nVijay Prakash Dwivedi et Xavier Bresson, de l'université technologique de Nanyang, jugent cette transposition trop directe. Une phrase n'a pas de connectivité donnée et ne compte généralement que des dizaines ou des centaines de mots : la connexion complète est raisonnable et calculable. Un graphe a déjà sa structure et peut avoir des millions de nœuds : tout relier gaspille cette structure et dépasse le budget.\n\nLe Graph Transformer qu'ils proposent fin 2020, abrégé GT ici, est une première tentative d'adaptation à des graphes quelconques. SAN, six mois plus tard, puis GraphGPS un an après, le prendront comme point de comparaison.\n\n\n> [!TIP]\n> \n> Pour SAN, qui réhabilitera la connexion complète, et GraphGPS, qui réunira les deux approches dans une couche, voir nos notes :\n> \n> - **[[21.06] SAN : Entendre la forme du graphe](/blog/papers/graph-learning/san)**\n> - **[[22.05] GraphGPS : Un GPS sur le graphe](/blog/papers/graph-learning/graphgps)**\n\n\n## Poser le problème\n\nLes auteurs distinguent deux difficultés.\n\n**La parcimonie des connexions.** Un Graph Transformer antérieur (Li et al., 2019) faisait regarder tous les nœuds à chacun pour accéder au global. Pour les auteurs, cela abandonne la connectivité creuse, un excellent biais inductif. On peut ajouter le global par encodages positionnels ou nœuds virtuels.\n\n**L'encodage positionnel.** Les mots d'une phrase ont un ordre, que le Transformer encode par des sinusoïdes. Un graphe n'a pas d'ordre standard et possède des symétries : une position unique se définit mal. Les auteurs attribuent en partie les performances limitées de GAT, à attention entre voisins, à ce manque de position.\n\nL'article teste donc si une attention limitée aux voisins, avec un encodage approprié, peut donner un Transformer sur graphes général et efficace.\n\n## Résoudre le problème\n\n[![Figure 1 de l'article : deux diagrammes. À gauche, la couche GT ajoute l'encodage laplacien λ aux nœuds, projette Q, K et V, multiplie, redimensionne, applique softmax et somme, puis Add&Norm, FFN et Add&Norm, sur L couches. À droite, la version avec arêtes ajoute un chemin e_ij : les scores d'attention multiplient les caractéristiques d'arête projetées par E, et les arêtes ont aussi leur FFN et leur normalisation.](/content/papers/assets/0540122812c6e6914f22240411cf2d172a94764bf8a0e6f6ab2cdae7c618f9fb.png)](/content/papers/assets/0540122812c6e6914f22240411cf2d172a94764bf8a0e6f6ab2cdae7c618f9fb.png)\n\n*Figure 1 de l'article (Dwivedi et Bresson), extraite de la [**page 2 du PDF**](https://arxiv.org/pdf/2012.09699v2#page=2). Légende originale omise.*\n\nÀ gauche la version de base, à droite celle avec caractéristiques d'arêtes. Trois changements la distinguent du Transformer original.\n\n### L'attention entre voisins seulement\n\nL'attention d'une couche GT est presque celle du Transformer, à la portée de la somme près :\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$ désigne les voisins de $i$, et $\\Vert$ la concaténation des $H$ têtes. Le Transformer somme sur toutes les positions, GT sur les voisins seulement. Connexions résiduelles, normalisation et réseau feed-forward suivent comme avant.\n\n### Encodage positionnel laplacien\n\nLes positions sont encodées par les vecteurs propres du laplacien :\n\n$$\n\\Delta=I-D^{-1/2}AD^{-1/2}=U^\\top\\Lambda U\n$$\n\nLes auteurs prennent les $k$ plus petits vecteurs propres non triviaux, en sautant celui de valeur propre 0. Les valeurs d'un nœud dans ces $k$ vecteurs sont son encodage $\\lambda_i$. Après projection linéaire, il est ajouté aux caractéristiques uniquement à l'entrée, puis plus dans les couches intermédiaires.\n\nPourquoi les vecteurs propres ? Ils généralisent selon les auteurs les positions sinusoïdales du NLP aux graphes et portent la distance : des nœuds proches reçoivent des encodages proches.\n\nCalculons sur deux triangles reliés par un pont : A, B, C à gauche, D, E, F à droite, C–D formant le pont. Prenons $k=2$ :\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)                      # Valeurs propres croissantes\nU = U * np.sign(U[0])                           # Convention choisie ici : valeur positive sur A\n\npe = U[:, 1:3]                                  # Sauter la valeur propre 0 et prendre les 2 suivantes\nprint(\"Valeurs propres:\", lam[1:3])\nfor name, row in zip(names, pe):\n    print(name, row)\n```\n\n```text\nValeurs propres: [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\nLa première dimension sépare gauche et droite, positive à gauche et négative à droite ; la seconde sépare C et D, sur le pont, des quatre nœuds extérieurs. A et B ont exactement le même encodage, car ils sont symétriques : la structure seule ne permet pas de les distinguer.\n\nLes vecteurs propres ont une autre difficulté : leur signe est arbitraire. Notre ligne `np.sign` impose une convention ; multiplier tout le vecteur par −1 laisse un vecteur propre valide :\n\n```python\nv = pe[:, 0]\nprint(\"Vecteur initial:\", np.allclose(L @ v, lam[1] * v))\nprint(\"Signe inversé  :\", np.allclose(L @ -v, lam[1] * -v))\n```\n\n```text\nVecteur initial: True\nSigne inversé  : True\n```\n\nUn même graphe admet donc deux encodages opposés ; avec $k$ vecteurs, il y a $2^k$ combinaisons. Sur un autre graphe, imposer un premier nœud positif n'a pas forcément de sens. GT inverse aléatoirement les signes à l'entraînement pour apprendre au modèle à les ignorer.\n\n### Caractéristiques d'arêtes et normalisation\n\nLes types de liaisons chimiques et les relations d'un graphe de connaissances sont portés par les arêtes. La version correspondante de GT multiplie les scores d'attention par les caractéristiques d'arêtes projetées $E^{k,\\ell}e_{ij}^\\ell$ avant softmax. Les représentations d'arêtes ont aussi un réseau feed-forward et évoluent couche après couche.\n\nLe dernier changement remplace LayerNorm par BatchNorm. Les auteurs trouvent un entraînement plus rapide et une meilleure généralisation.\n\n## Discussion\n\n### Protocole expérimental\n\nLes auteurs utilisent trois jeux de Benchmarking GNNs :\n\n- **ZINC** : régression moléculaire sur un sous-ensemble de 12,000 molécules, avec une propriété liée à la solubilité à prédire. La MAE, à minimiser, est la métrique. Les types de liaisons sont des caractéristiques d'arêtes ; GT utilise donc sa version correspondante.\n- **PATTERN** : 14,000 graphes générés par modèles à blocs stochastiques, avec classification binaire de chaque nœud.\n- **CLUSTER** : 12,000 graphes générés de même nature ; chaque nœud doit rejoindre l'un de 6 groupes.\n\nTous les modèles ont 10 couches, 8 têtes et environ 500,000 paramètres. Chaque expérience utilise 4 graines aléatoires.\n\n### Que donne la connexion complète ?\n\nLe même modèle est testé sur le graphe initial et sur sa version entièrement connectée. Avec BatchNorm et positions laplaciennes :\n\n| Jeu | Voisins seulement | Tous les nœuds |\n| --- | ---: | ---: |\n| ZINC (MAE ↓) | 0.226 | 0.598 |\n| CLUSTER (exactitude ↑) | 73.17% | 27.12% |\n| PATTERN (exactitude ↑) | 84.81% | 54.94% |\n\nLes trois se dégradent fortement. Sur PATTERN, binaire, 54.94% approche le hasard ; sur CLUSTER, à 6 classes, 27.12% dépasse peu les 16.7% aléatoires. Le ZINC entièrement connecté n'utilise pas les arêtes, pour tester précisément l'absence totale de structure creuse.\n\nLes auteurs concluent que les connexions creuses sont un biais inductif décisif sur les graphes de structure quelconque.\n\n### Encodage positionnel et BatchNorm\n\nLes quatre combinaisons de LayerNorm ou BatchNorm, avec ou sans positions, donnent toutes la victoire à BatchNorm avec positions laplaciennes. Certaines variantes ont une variance frappante : sur PATTERN, LayerNorm sans positions donne 73.14% ± 13.63% sur quatre graines.\n\nLes auteurs comparent aussi l'encodage WL de Graph-BERT :\n\n| Encodage positionnel | ZINC (MAE ↓) | CLUSTER | PATTERN |\n| --- | ---: | ---: | ---: |\n| Aucun | 0.264 | 72.14% | 83.95% |\n| Laplacien | **0.226** | **73.17%** | **84.81%** |\n| WL (Graph-BERT) | 0.267 | 70.79% | 75.49% |\n\nAvec les positions WL, PATTERN atteint 97.03% à l'entraînement mais 75.49% au test. Les auteurs pensent que cet encodage surapprend facilement sur ces graphes synthétiques.\n\n### Comparaison aux GNN\n\nEnfin, comparaison aux GNN de même budget, 500,000 paramètres :\n\n| Modèle | 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\nGT dépasse nettement GCN et GAT, qui utilise aussi l'attention, mais reste légèrement derrière GatedGCN sur les trois jeux. Les auteurs le présentent comme une nouvelle référence plus forte de GNN à attention.\n\n## Conclusion\n\nÀ la question « faut-il tout connecter ? », GT répond : pas tout de suite. Attention entre voisins, positions laplaciennes et BatchNorm fonctionnent le mieux ensemble ; la connexion complète perd largement sur les trois jeux.\n\nCe verdict durera peu. Six mois plus tard, SAN réhabilitera la connexion complète avec des positions plus soignées et un dosage des connexions ajoutées ; un an après encore, GraphGPS, auquel participe aussi Dwivedi, réunira messages locaux et attention globale dans une même couche.\n\nAvant d'utiliser les vecteurs propres du laplacien comme positions, décidez comment traiter leurs signes. Sinon, un même graphe peut recevoir un encodage différent à chaque calcul.\n","imageSizes":{"/content/papers/assets/0540122812c6e6914f22240411cf2d172a94764bf8a0e6f6ab2cdae7c618f9fb.png":{"width":1324,"height":1000}}}
