{"notes":[{"id":"graph-learning/gat","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"GAT","subtitle":"Tous les voisins n'ont pas le même poids","author":"Z. Yuan","paperDate":"2017-10-30","publishedOn":"2023-11-10","world":"external/gat","paperTitle":"Graph Attention Networks","paperUrl":"https://arxiv.org/abs/1710.10903","bibliography":{"title":"Graph Attention Networks","authors":["Petar Veličković","Guillem Cucurull","Arantxa Casanova","Adriana Romero","Pietro Liò","Yoshua Bengio"],"url":"https://arxiv.org/abs/1710.10903","pdfUrl":"https://arxiv.org/pdf/1710.10903v3","codeUrl":"https://github.com/PetarV-/GAT","preprint":{"id":"1710.10903","submittedOn":"2017-10-30","url":"https://arxiv.org/abs/1710.10903"},"publication":{"venue":"ICLR","year":2018,"kind":"conference","url":"https://arxiv.org/abs/1710.10903"},"citation":"@misc{graphlearninggat2017,\n  title = {{Graph Attention Networks}},\n  author = {Petar Veličković and Guillem Cucurull and Arantxa Casanova and Adriana Romero and Pietro Liò and Yoshua Bengio},\n  year = {2017},\n  eprint = {1710.10903},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1710.10903}\n}\n","citationPath":"/content/papers/citations/graph-learning/gat.402fa57986a5.bib"},"thumbnail":{"src":"/content/papers/assets/1a68144470e25ef01f2cd6ccf405483bc7960ca1cc9f7ebf5991060fb3a92010.png","width":1124,"height":540},"locale":"fr","path":"/content/papers/fr/graph-learning/gat.cb0d383f3076.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":"une-tête-dattention","text":"Une tête d'attention","depth":3},{"id":"plusieurs-têtes","text":"Plusieurs têtes","depth":3},{"id":"coût-et-propriétés","text":"Coût et propriétés","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"protocole-expérimental","text":"Protocole expérimental","depth":3},{"id":"résultats-principaux","text":"Résultats principaux","depth":3},{"id":"ce-qui-a-été-appris","text":"Ce qui a été appris","depth":3},{"id":"les-limites-relevées-par-les-auteurs","text":"Les limites relevées par les auteurs","depth":3},{"id":"une-attention-statique","text":"Une attention statique","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/gcn","relation":"referenced","topic":""},{"id":"graph-learning/graphsage","relation":"referenced","topic":""}]},{"id":"graph-learning/gcn","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"GCN","subtitle":"Un seul paramètre suffit-il ?","author":"Z. Yuan","paperDate":"2016-09-09","publishedOn":"2023-10-01","world":"external/gcn","paperTitle":"Semi-Supervised Classification with Graph Convolutional Networks","paperUrl":"https://arxiv.org/abs/1609.02907","bibliography":{"title":"Semi-Supervised Classification with Graph Convolutional Networks","authors":["Thomas N. Kipf","Max Welling"],"url":"https://arxiv.org/abs/1609.02907","pdfUrl":"https://arxiv.org/pdf/1609.02907v4","codeUrl":"https://github.com/tkipf/gcn","preprint":{"id":"1609.02907","submittedOn":"2016-09-09","url":"https://arxiv.org/abs/1609.02907"},"publication":{"venue":"ICLR","year":2017,"kind":"conference","url":"https://arxiv.org/abs/1609.02907"},"citation":"@misc{graphlearninggcn2016,\n  title = {{Semi-Supervised Classification with Graph Convolutional Networks}},\n  author = {Thomas N. Kipf and Max Welling},\n  year = {2016},\n  eprint = {1609.02907},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1609.02907}\n}\n","citationPath":"/content/papers/citations/graph-learning/gcn.43058ec3e77e.bib"},"thumbnail":{"src":"/content/papers/assets/ded600c9ca8f4eda09d39ffb16b3c9b0ec730780063e55948b29924d00f14794.png","width":1122,"height":400},"locale":"fr","path":"/content/papers/fr/graph-learning/gcn.92d7953d0185.md","headings":[{"id":"poser-le-problème","text":"Poser le problème","depth":2},{"id":"le-graphe-comme-terme-de-régularisation","text":"Le graphe comme terme de régularisation","depth":3},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"simplifier-depuis-le-domaine-spectral","text":"Simplifier depuis le domaine spectral","depth":3},{"id":"une-couche-de-gcn","text":"Une couche de GCN","depth":3},{"id":"deux-couches-suffisent","text":"Deux couches suffisent","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"protocole-expérimental","text":"Protocole expérimental","depth":3},{"id":"résultats-principaux","text":"Résultats principaux","depth":3},{"id":"quelle-propagation-fonctionne-le-mieux-","text":"Quelle propagation fonctionne le mieux ?","depth":3},{"id":"que-se-passe-t-il-en-profondeur-","text":"Que se passe-t-il en profondeur ?","depth":3},{"id":"le-lien-avec-lalgorithme-wl","text":"Le lien avec l'algorithme WL","depth":3},{"id":"une-critique-quatre-jours-plus-tard","text":"Une critique, quatre jours plus tard","depth":3},{"id":"les-limites-relevées-par-larticle","text":"Les limites relevées par l'article","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/spectral-networks","relation":"referenced","topic":""},{"id":"graph-learning/chebnet","relation":"referenced","topic":""}]},{"id":"graph-learning/graphsage","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"GraphSAGE","subtitle":"Faire l'appel par sondage","author":"Z. Yuan","paperDate":"2017-06-07","publishedOn":"2023-10-21","world":"external/graphsage","paperTitle":"Inductive Representation Learning on Large Graphs","paperUrl":"https://arxiv.org/abs/1706.02216","bibliography":{"title":"Inductive Representation Learning on Large Graphs","authors":["William L. Hamilton","Rex Ying","Jure Leskovec"],"url":"https://arxiv.org/abs/1706.02216","pdfUrl":"https://arxiv.org/pdf/1706.02216v4","codeUrl":"https://github.com/williamleif/GraphSAGE","preprint":{"id":"1706.02216","submittedOn":"2017-06-07","url":"https://arxiv.org/abs/1706.02216"},"publication":{"venue":"NeurIPS","year":2017,"kind":"conference","url":"https://papers.nips.cc/paper_files/paper/2017/hash/5dd9db5e033da9c6fb5ba83c7a7ebea9-Abstract.html"},"citation":"@misc{graphlearninggraphsage2017,\n  title = {{Inductive Representation Learning on Large Graphs}},\n  author = {William L. Hamilton and Rex Ying and Jure Leskovec},\n  year = {2017},\n  eprint = {1706.02216},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1706.02216}\n}\n","citationPath":"/content/papers/citations/graph-learning/graphsage.1a0b3fd6e8b8.bib"},"thumbnail":{"src":"/content/papers/assets/88f6d9397f20155603c7ee0daef374fb944aac5fb73ed6573a573560b5b9c6aa.png","width":1090,"height":384},"locale":"fr","path":"/content/papers/fr/graph-learning/graphsage.94d056671844.md","headings":[{"id":"poser-le-problème","text":"Poser le problème","depth":2},{"id":"transductif-et-inductif","text":"Transductif et inductif","depth":3},{"id":"trop-de-voisins","text":"Trop de voisins","depth":3},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"lalgorithme","text":"L'algorithme","depth":3},{"id":"tirer-les-voisins-au-sort","text":"Tirer les voisins au sort","depth":3},{"id":"trois-agrégateurs","text":"Trois agrégateurs","depth":3},{"id":"apprendre-sans-étiquettes","text":"Apprendre sans étiquettes","depth":3},{"id":"le-lien-avec-le-test-wl","text":"Le lien avec le test WL","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"trois-jeux-de-données","text":"Trois jeux de données","depth":3},{"id":"résultats-principaux","text":"Résultats principaux","depth":3},{"id":"le-compromis-entre-vitesse-et-échantillonnage","text":"Le compromis entre vitesse et échantillonnage","depth":3},{"id":"la-suite","text":"La suite","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/gat","relation":"citing","topic":""}]}],"text":"Après avoir fait ses preuves en traduction automatique, l'attention prend toute la place : en juin 2017, le Transformer supprime les RNN et ne garde qu'elle.\n\nSon principe est simple. Chaque position regarde les autres, détermine selon leur similarité quelle part prélever, puis en fait une somme pondérée. Cela ressemble presque exactement à l'agrégation d'un réseau neuronal sur graphes ; seule la provenance des poids change.\n\nGCN les tire des degrés : la part reçue par le nœud $i$ depuis son voisin $j$ est fixée à $1/\\sqrt{\\tilde d_i\\tilde d_j}$. Petar Veličković, de Cambridge, avec Bengio et leurs collègues, veut faire dépendre cette part des caractéristiques. Ainsi naît GAT.\n\n## Poser le problème\n\nLes auteurs recensent les difficultés des deux voies de l'époque.\n\nLes méthodes spectrales reposent sur la décomposition du laplacien : leurs filtres sont attachés aux vecteurs propres du graphe d'entraînement et ne se transfèrent pas directement à un autre graphe de structure différente. GCN accélère le calcul en limitant le filtre aux voisins à un saut, mais leur part dans un voisinage dépend uniquement des degrés.\n\nLes méthodes spatiales doivent gérer des voisinages de tailles différentes. GraphSAGE tire un nombre fixe de voisins et ne voit donc pas le voisinage entier à l'inférence ; son meilleur agrégateur, le LSTM, suppose de plus un ordre et demande de mélanger aléatoirement les voisins à chaque passage.\n\nLes auteurs cherchent une couche qui se calcule en parallèle, accepte des degrés variés, attribue des poids différents aux voisins d'un même voisinage et s'applique à des graphes inconnus sans en connaître toute la structure à l'avance.\n\n## Résoudre le problème\n\n### Une tête d'attention\n\nL'entrée est la caractéristique $h_i\\in\\mathbb{R}^F$ de chaque nœud. Tous partagent d'abord une transformation linéaire $W\\in\\mathbb{R}^{F'\\times F}$. On calcule ensuite un score pour chaque paire :\n\n$$\ne_{ij}=a\\left(Wh_i,\\ Wh_j\\right)\n$$\n\n$e_{ij}$ mesure l'importance des caractéristiques de $j$ pour $i$. Dans la forme la plus générale, chaque nœud peut regarder tous les autres, mais on perd alors toute la structure du graphe. Les auteurs utilisent une **attention masquée**, limitée aux voisins $\\mathcal N_i$ de $i$, lui-même compris, puis normalisée par softmax :\n\n$$\n\\alpha_{ij}=\\mathrm{softmax}_j(e_{ij})=\\frac{\\exp(e_{ij})}{\\sum_{k\\in\\mathcal N_i}\\exp(e_{ik})}\n$$\n\nLe mécanisme $a$ est un réseau à une couche, avec un vecteur de poids $a\\in\\mathbb{R}^{2F'}$ suivi d'une LeakyReLU de pente 0.2 pour les entrées négatives. En développant :\n\n$$\n\\alpha_{ij}=\\frac{\\exp\\left(\\mathrm{LeakyReLU}\\left(a^\\top\\left[Wh_i\\,\\|\\,Wh_j\\right]\\right)\\right)}{\\sum_{k\\in\\mathcal N_i}\\exp\\left(\\mathrm{LeakyReLU}\\left(a^\\top\\left[Wh_i\\,\\|\\,Wh_k\\right]\\right)\\right)}\n$$\n\n$\\|$ désigne la concaténation. Ces coefficients servent enfin à agréger les voisins : $h'_i=\\sigma\\left(\\sum_{j\\in\\mathcal N_i}\\alpha_{ij}Wh_j\\right)$.\n\nExécutons une tête sur un petit graphe à cinq nœuds. En séparant $a^\\top[Wh_i\\|Wh_j]$ en une partie dépendant de $i$ et une autre de $j$, on calcule toute la matrice des scores d'un coup :\n\n```python\nimport numpy as np\nnp.set_printoptions(precision=2, suppress=True)\nrng = np.random.default_rng(1)\n\n# 5 nœuds : 0-1, 0-2, 1-2, 2-3, 3-4, avec des boucles propres\nA = np.eye(5)\nfor i, j in [(0, 1), (0, 2), (1, 2), (2, 3), (3, 4)]:\n    A[i, j] = A[j, i] = 1\n\nh = rng.normal(size=(5, 3))          # 3 caractéristiques par nœud\nW = rng.normal(size=(3, 2))          # Transformation linéaire partagée, sortie de dimension 2\na = rng.normal(size=4)               # Vecteur d'attention de longueur 2F' = 4\n\ndef leaky_relu(z, slope=0.2):\n    return np.where(z > 0, z, slope * z)\n\ndef gat_head(h, W, a):\n    Wh = h @ W                                             # (5, 2)\n    e = leaky_relu((Wh @ a[:2])[:, None] + (Wh @ a[2:])[None, :])   # a^T [Wh_i || Wh_j]，(5, 5)\n    e = np.where(A > 0, e, -np.inf)                        # Masque : garder les voisins seulement\n    alpha = np.exp(e - e.max(1, keepdims=True))\n    alpha /= alpha.sum(1, keepdims=True)                   # Softmax sur les voisins de chaque ligne\n    return alpha, alpha @ Wh\n\nalpha, out = gat_head(h, W, a)\nprint(\"Coefficients d'attention:\")\nprint(alpha)\nprint(\"Sortie:\", out.shape)\n```\n\n```text\nCoefficients d'attention:\n[[0.52 0.26 0.23 0.   0.  ]\n [0.52 0.26 0.22 0.   0.  ]\n [0.45 0.23 0.19 0.14 0.  ]\n [0.   0.   0.51 0.26 0.23]\n [0.   0.   0.   0.58 0.42]]\nSortie: (5, 2)\n```\n\nChaque ligne somme à 1 ; les positions sans voisin restent à 0. Les nœuds 0 et 1 ont chacun trois voisins : GCN leur attribuerait des parts assez semblables. Ici, les caractéristiques déterminent les parts, et le nœud 0 reçoit la plus grande.\n\n### Plusieurs têtes\n\nComme pour le Transformer, plusieurs têtes stabilisent l'entraînement. Chacune des $K$ têtes possède ses $W^k$ et $a^k$ et calcule indépendamment. Les couches intermédiaires concatènent les résultats, pour une sortie de dimension $KF'$ ; à la dernière couche, on moyenne plutôt les têtes avant softmax ou sigmoid :\n\n$$\nh'_i=\\Big\\|_{k=1}^{K}\\sigma\\left(\\sum_{j\\in\\mathcal N_i}\\alpha^k_{ij}W^kh_j\\right),\\qquad\nh'_i=\\sigma\\left(\\frac1K\\sum_{k=1}^K\\sum_{j\\in\\mathcal N_i}\\alpha^k_{ij}W^kh_j\\right)\n$$\n\nReprenons l'exemple avec trois jeux de poids et observons la forme des deux fusions :\n\n```python\nheads = [gat_head(h, rng.normal(size=(3, 2)), rng.normal(size=4))[1] for _ in range(3)]\nhidden = np.concatenate([np.where(o > 0, o, np.exp(o) - 1) for o in heads], axis=1)   # Couche cachée : ELU puis concaténation\nfinal = np.mean(heads, axis=0)                                                          # Sortie : moyenne directe\nprint(\"Trois têtes concaténées:\", hidden.shape, \" Trois têtes moyennées:\", final.shape)\n```\n\n```text\nTrois têtes concaténées: (5, 6)  Trois têtes moyennées: (5, 2)\n```\n\n[![Figure 1 de l'article : à gauche, Wh_i et Wh_j sont concaténés, multipliés scalairement par a, puis passent par LeakyReLU et softmax sur j pour obtenir α_ij. À droite, le nœud 1 applique trois têtes d'attention à six voisins, représentées par trois styles de traits ; concaténer ou moyenner les sorties donne h'_1.](/content/papers/assets/1a68144470e25ef01f2cd6ccf405483bc7960ca1cc9f7ebf5991060fb3a92010.png)](/content/papers/assets/1a68144470e25ef01f2cd6ccf405483bc7960ca1cc9f7ebf5991060fb3a92010.png)\n\n*Figure 1 de l'article (Veličković et al.), extraite de la [**page 4 du PDF**](https://arxiv.org/pdf/1710.10903v3#page=4). Légende originale omise.*\n\n### Coût et propriétés\n\nUne tête coûte $O(|V|FF'+|E|F')$, du même ordre que GCN. L'attention se calcule en parallèle sur les arêtes, et les sorties en parallèle sur les nœuds, sans décomposition spectrale. Plusieurs têtes multiplient le stockage et les paramètres par $K$, mais restent indépendantes.\n\nLe mécanisme d'attention est partagé entre toutes les arêtes et n'exige pas de connaître le graphe entier à l'avance. Il accepte donc les graphes orientés : sans arête $j\\rightarrow i$, on ne calcule pas $\\alpha_{ij}$. Il se transfère aussi directement aux graphes inconnus. Par rapport à GraphSAGE, il voit le voisinage complet et n'impose aucun ordre aux voisins.\n\n## Discussion\n\n### Protocole expérimental\n\nLes expériences transductives utilisent Cora, Citeseer et Pubmed, avec les partitions de GCN et 20 étiquettes par classe. Le modèle a deux couches : 8 têtes de 8 dimensions, soit 64 dimensions, puis ELU ; la deuxième couche à tête unique produit les classes. La petite taille d'entraînement exige une forte régularisation : L2 à 0.0005, dropout à 0.6, y compris sur les coefficients d'attention. Les auteurs soulignent que cela donne à chaque itération un voisinage aléatoirement échantillonné. Pubmed ne compte que 60 nœuds d'entraînement : sa sortie utilise 8 têtes et L2 monte à 0.001.\n\nL'expérience inductive porte sur PPI, avec 20 graphes d'entraînement, 2 de validation et 2 de test, ces derniers entièrement inconnus. Le modèle a trois couches : les deux premières comptent chacune 4 têtes de 256 dimensions ; la dernière moyenne 6 têtes de 121 dimensions, puis sigmoid assure la classification multiétiquette. Les données étant suffisantes, ni L2 ni dropout ; les couches intermédiaires ont des connexions de saut.\n\n### Résultats principaux\n\n| Méthode | Cora | Citeseer | Pubmed |\n| --- | ---: | ---: | ---: |\n| GCN | 81.5% | 70.3% | 79.0% |\n| GCN-64* | 81.4 ± 0.5% | 70.9 ± 0.5% | 79.0 ± 0.3% |\n| **GAT** | **83.0 ± 0.7%** | **72.5 ± 0.7%** | **79.0 ± 0.3%** |\n\nGCN-64* est le meilleur GCN obtenu par les auteurs après élargissement de la couche cachée à 64 dimensions, comme GAT, et essais de ReLU et d'ELU. Il isole plus équitablement l'apport de l'attention. GAT dépasse GCN-64* de 1.6 point de pourcentage sur Cora comme sur Citeseer, et fait jeu égal sur Pubmed.\n\nSur PPI, l'écart est bien plus grand :\n\n| Méthode | PPI micro-F1 |\n| --- | ---: |\n| GraphSAGE-LSTM (article original) | 0.612 |\n| GraphSAGE* (architecture réglée par les auteurs) | 0.768 |\n| Const-GAT | 0.934 ± 0.006 |\n| **GAT** | **0.973 ± 0.002** |\n\nIl faut lire le tableau en deux temps. Const-GAT garde la même architecture, mais remplace l'attention par des poids constants, égaux pour tous les voisins, proches d'une agrégation de type GCN. Le passage de 0.768 à 0.934 provient surtout du voisinage complet et de la plus grande architecture ; celui de 0.934 à 0.973 mesure les 3.9 points propres à l'attention.\n\n### Ce qui a été appris\n\nLes auteurs visualisent par t-SNE les sorties de la première couche du modèle préentraîné sur Cora. Les sept classes forment des groupes nets en 2D ; l'épaisseur des arêtes est l'attention moyenne des huit têtes. Ils précisent qu'interpréter correctement ces coefficients demande une connaissance plus approfondie du jeu de données, laissée à des travaux futurs.\n\n### Les limites relevées par les auteurs\n\n- Une version creuse de GAT peut ramener le stockage à un coût linéaire en nœuds et en arêtes, mais les bibliothèques de l'époque ne savent multiplier que des tenseurs creux 2D, ce qui limite fortement les lots de plusieurs graphes.\n- Selon la régularité du graphe, le GPU peut apporter peu de gain par rapport au CPU pour ces opérations creuses.\n- La profondeur borne le champ réceptif, comme pour GCN.\n- Le calcul parallèle sur toutes les arêtes répète beaucoup d'opérations quand les voisinages se recouvrent fortement.\n\n### Une attention statique\n\nEn 2021, Brody, Alon et Yahav, du Technion, publient « How Attentive are Graph Attention Networks? » et exposent une limite structurelle de l'attention GAT. [Résumé de GATv2](https://arxiv.org/abs/2105.14491v3)\n\nLe score $a^\\top[Wh_i\\|Wh_j]$ se décompose en un terme propre à $i$ et un terme propre à $j$. LeakyReLU et softmax étant monotones, le **classement** des voisins candidats dépend uniquement du terme de $j$, indépendamment du nœud de requête $i$. Rendons le petit graphe entièrement connecté pour que chacun voie tout le monde :\n\n```python\nA = np.ones((5, 5))                      # Graphe complet : chaque nœud voit tous les autres\nalpha, _ = gat_head(h, W, a)\nprint(alpha)\nprint(\"Maximum de chaque ligne:\", alpha.argmax(1))\n```\n\n```text\n[[0.37 0.19 0.17 0.15 0.13]\n [0.39 0.19 0.16 0.14 0.12]\n [0.4  0.2  0.17 0.12 0.11]\n [0.43 0.22 0.18 0.09 0.08]\n [0.44 0.22 0.18 0.09 0.07]]\nMaximum de chaque ligne: [0 0 0 0 0]\n```\n\nLes cinq nœuds ont exactement le même classement : 0 est le plus important, 4 le moins important. Seules les proportions changent. Le masque du graphe initial laisse chacun choisir parmi ses voisins et donne l'impression de préférences distinctes ; dès que deux listes de candidats se recouvrent, leur classement coïncide.\n\nBrody et al. nomment cela **attention statique**. Ils changent l'ordre des opérations : multiplier d'abord $[h_i\\|h_j]$ par les poids, appliquer LeakyReLU, puis prendre le produit scalaire avec $a$. Avec la non-linéarité au milieu, le classement peut dépendre de la requête. Cette version, GATv2, dépasse GAT à nombre de paramètres comparable sur 11 benchmarks, dont ceux d'OGB.\n\n\n> [!TIP]\n> \n> Pour GCN, prédécesseur de GAT, et GraphSAGE, qui traite aussi la pondération des voisins, voir nos notes :\n> \n> - **[[16.09] GCN : Un seul paramètre suffit-il ?](/blog/papers/graph-learning/gcn)**\n> - **[[17.06] GraphSAGE : Faire l'appel par sondage](/blog/papers/graph-learning/graphsage)**\n\n\n## Conclusion\n\nGAT introduit l'attention dans les réseaux sur graphes : les voisins d'un même voisinage peuvent avoir des poids distincts, appris depuis leurs caractéristiques. Le masque préserve la structure du graphe en limitant l'attention aux voisins ; plusieurs têtes stabilisent l'entraînement.\n\nSur les réseaux de citations, il gagne 1 à 2 points sur GCN ; sur PPI, la comparaison à architecture identique mesure nettement l'apport de l'attention seule.\n\nPensez aussi au dropout sur les coefficients d'attention : l'article s'appuie dessus sur les petits jeux de données. Si votre tâche exige que différents nœuds préfèrent différents voisins, comparez avec GATv2.\n\nRetirer le masque pour laisser chaque nœud en regarder tous les autres donne l'attention du Transformer. Les Graph Transformers devront précisément réintroduire la structure du graphe perdue à cette étape.\n","imageSizes":{"/content/papers/assets/1a68144470e25ef01f2cd6ccf405483bc7960ca1cc9f7ebf5991060fb3a92010.png":{"width":1124,"height":540}}}
