{"notes":[{"id":"graph-learning/gin","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"GIN","subtitle":"C'est la somme qui compte","author":"Z. Yuan","paperDate":"2018-10-01","publishedOn":"2023-12-28","world":"external/gin","paperTitle":"How Powerful are Graph Neural Networks?","paperUrl":"https://arxiv.org/abs/1810.00826","bibliography":{"title":"How Powerful are Graph Neural Networks?","authors":["Keyulu Xu","Weihua Hu","Jure Leskovec","Stefanie Jegelka"],"url":"https://arxiv.org/abs/1810.00826","pdfUrl":"https://arxiv.org/pdf/1810.00826v3","codeUrl":"https://github.com/weihua916/powerful-gnns","preprint":{"id":"1810.00826","submittedOn":"2018-10-01","url":"https://arxiv.org/abs/1810.00826"},"publication":{"venue":"ICLR","year":2019,"kind":"conference","url":"https://arxiv.org/abs/1810.00826"},"citation":"@misc{graphlearninggin2018,\n  title = {{How Powerful are Graph Neural Networks?}},\n  author = {Keyulu Xu and Weihua Hu and Jure Leskovec and Stefanie Jegelka},\n  year = {2018},\n  eprint = {1810.00826},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1810.00826}\n}\n","citationPath":"/content/papers/citations/graph-learning/gin.f2b31912b576.bib"},"thumbnail":{"src":"/content/papers/assets/1062d104bcaae50e5f8c9abf6c72f574a014c68e6a7bb4c6705f663336773b4f.png","width":960,"height":214},"locale":"fr","path":"/content/papers/fr/graph-learning/gin.0cdca52c61bc.md","headings":[{"id":"poser-le-problème","text":"Poser le problème","depth":2},{"id":"la-forme-commune-de-lagrégation-des-voisins","text":"La forme commune de l'agrégation des voisins","depth":3},{"id":"les-voisins-forment-un-multiensemble","text":"Les voisins forment un multiensemble","depth":3},{"id":"le-test-wl","text":"Le test WL","depth":3},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"le-plafond-des-gnn","text":"Le plafond des GNN","depth":3},{"id":"somme-moyenne-et-maximum","text":"Somme, moyenne et maximum","depth":3},{"id":"gin","text":"GIN","depth":3},{"id":"moins-expressif-mais-parfois-utile","text":"Moins expressif, mais parfois utile","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"protocole-expérimental","text":"Protocole expérimental","depth":3},{"id":"peut-on-ajuster-lentraînement-","text":"Peut-on ajuster l'entraînement ?","depth":3},{"id":"exactitude-de-test","text":"Exactitude de test","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/sgc","relation":"citing","topic":""},{"id":"graph-learning/gnn-plus","relation":"citing","topic":""}]},{"id":"graph-learning/sgc","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"SGC","subtitle":"Le linéaire suffit-il ?","author":"Z. Yuan","paperDate":"2019-02-19","publishedOn":"2024-02-09","world":"external/sgc","paperTitle":"Simplifying Graph Convolutional Networks","paperUrl":"https://arxiv.org/abs/1902.07153","bibliography":{"title":"Simplifying Graph Convolutional Networks","authors":["Felix Wu","Tianyi Zhang","Amauri Holanda de Souza","Christopher Fifty","Tao Yu","Kilian Q. Weinberger"],"url":"https://arxiv.org/abs/1902.07153","pdfUrl":"https://arxiv.org/pdf/1902.07153v2","codeUrl":"https://github.com/Tiiiger/SGC","preprint":{"id":"1902.07153","submittedOn":"2019-02-19","url":"https://arxiv.org/abs/1902.07153"},"publication":{"venue":"ICML","year":2019,"kind":"conference","url":"https://proceedings.mlr.press/v97/wu19e.html"},"citation":"@misc{graphlearningsgc2019,\n  title = {{Simplifying Graph Convolutional Networks}},\n  author = {Felix Wu and Tianyi Zhang and Amauri Holanda de Souza and Christopher Fifty and Tao Yu and Kilian Q. Weinberger},\n  year = {2019},\n  eprint = {1902.07153},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1902.07153}\n}\n","citationPath":"/content/papers/citations/graph-learning/sgc.5b3815dbf17c.bib"},"thumbnail":{"src":"/content/papers/assets/42da0472259826c266fe1b1b617041ef7cb3aa49eda3558ac91dcd15aa5272e0.png","width":1366,"height":612},"locale":"fr","path":"/content/papers/fr/graph-learning/sgc.f9484828d823.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":"retirer-les-non-linéarités","text":"Retirer les non-linéarités","depth":3},{"id":"lecture-spectrale--un-filtre-passe-bas","text":"Lecture spectrale : un filtre passe-bas","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"réseaux-de-citations-et-reddit","text":"Réseaux de citations et Reddit","depth":3},{"id":"combien-de-temps-gagne-t-on-","text":"Combien de temps gagne-t-on ?","depth":3},{"id":"tâches-en-aval","text":"Tâches en aval","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/gin","relation":"referenced","topic":""}]},{"id":"graph-learning/gnn-plus","category":"graph-learning","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"GNN+","subtitle":"Le vieux coursier en a encore sous le pied","author":"Z. Yuan","paperDate":"2025-02-13","publishedOn":"2025-12-06","paperTitle":"Can Classic GNNs Be Strong Baselines for Graph-level Tasks? Simple Architectures Meet Excellence","paperUrl":"https://arxiv.org/abs/2502.09263","bibliography":{"title":"Can Classic GNNs Be Strong Baselines for Graph-level Tasks? Simple Architectures Meet Excellence","authors":["Yuankai Luo","Lei Shi","Xiao-Ming Wu"],"url":"https://arxiv.org/abs/2502.09263","pdfUrl":"https://arxiv.org/pdf/2502.09263v3","codeUrl":"https://github.com/LUOyk1999/GNNPlus","preprint":{"id":"2502.09263","submittedOn":"2025-02-13","url":"https://arxiv.org/abs/2502.09263"},"publication":{"venue":"ICML","year":2025,"kind":"conference","url":"https://proceedings.mlr.press/v267/luo25h.html"},"citation":"@misc{graphlearninggnnplus2025,\n  title = {{Can Classic GNNs Be Strong Baselines for Graph-level Tasks? Simple Architectures Meet Excellence}},\n  author = {Yuankai Luo and Lei Shi and Xiao-Ming Wu},\n  year = {2025},\n  eprint = {2502.09263},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2502.09263}\n}\n","citationPath":"/content/papers/citations/graph-learning/gnn-plus.7d14d260e648.bib"},"thumbnail":{"src":"/content/papers/assets/0be1b8a606332519d042698f1c6afd3ef8857eb95682b95df1cdeb9e3bfe7648.png","width":604,"height":510},"locale":"fr","path":"/content/papers/fr/graph-learning/gnn-plus.3c2c63013097.md","headings":[{"id":"poser-le-problème","text":"Poser le problème","depth":2},{"id":"deux-types-de-tâches","text":"Deux types de tâches","depth":3},{"id":"une-comparaison-équitable-","text":"Une comparaison équitable ?","depth":3},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"trois-modèles-classiques","text":"Trois modèles classiques","depth":3},{"id":"six-techniques","text":"Six techniques","depth":3},{"id":"comment-comparer-","text":"Comment comparer ?","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"résultats-densemble","text":"Résultats d'ensemble","depth":3},{"id":"plus-rapides-aussi","text":"Plus rapides aussi","depth":3},{"id":"le-rôle-de-chaque-technique","text":"Le rôle de chaque technique","depth":3},{"id":"les-limites-reconnues-par-les-auteurs","text":"Les limites reconnues par les auteurs","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"graph-learning/classic-gnns","relation":"referenced","topic":""},{"id":"graph-learning/graphgps","relation":"referenced","topic":""},{"id":"graph-learning/where-did-the-gap-go","relation":"referenced","topic":""}]}],"text":"En 2018, les variantes de réseaux sur graphes sont déjà innombrables. GCN, GraphSAGE et GAT ont chacun leur agrégation ; les nouveaux articles prouvent surtout leur supériorité par des expériences. Pourquoi cela fonctionne, quelles structures échappent au modèle : les réponses sont souvent moins claires.\n\nKeyulu Xu et Stefanie Jegelka, du MIT, avec Weihua Hu et Jure Leskovec, de Stanford, changent de question. Avant l'exactitude, un GNN peut-il seulement envoyer deux graphes différents vers deux représentations distinctes ?\n\nLe titre demande « quelle est la puissance des réseaux neuronaux sur graphes ? ». La réponse a un plafond, fixé par un algorithme de 1968.\n\n## Poser le problème\n\n### La forme commune de l'agrégation des voisins\n\nLes auteurs écrivent d'abord les GNN de l'époque sous une forme commune. À la couche $k$, chaque nœud $v$ agrège les représentations de ses voisins, puis les combine avec la sienne :\n\n$$\na_v^{(k)}=\\mathrm{AGGREGATE}^{(k)}\\left(\\left\\{h_u^{(k-1)}:u\\in\\mathcal N(v)\\right\\}\\right),\\qquad\nh_v^{(k)}=\\mathrm{COMBINE}^{(k)}\\left(h_v^{(k-1)},a_v^{(k)}\\right)\n$$\n\nPour classifier un graphe, un READOUT combine ensuite tous les nœuds en une représentation globale. GraphSAGE utilise max pooling et concaténation ; GCN moyenne soi-même avec ses voisins, puis applique les poids et ReLU.\n\n### Les voisins forment un multiensemble\n\nL'observation décisive : les caractéristiques des voisins constituent un **multiensemble**, dans lequel une valeur peut apparaître plusieurs fois. Deux voisins bleus et trois voisins bleus sont des multiensembles différents.\n\nSi l'agrégation donne le même résultat pour deux multiensembles différents, le GNN ne distingue pas ces voisinages. La puissance du GNN se ramène donc à une question : sa fonction d'agrégation est-elle **injective** sur les multiensembles ?\n\n### Le test WL\n\nLa référence la plus directe pour mesurer cette discrimination est l'isomorphisme : même représentation pour les graphes isomorphes, représentations distinctes pour les autres. Aucun algorithme polynomial n'est connu pour ce problème ; les auteurs choisissent un critère moins fort mais pratique, le **test de Weisfeiler-Lehman (WL)**.\n\nWL répète un « coloriage ». Tous les nœuds ont d'abord la même couleur ; à chaque tour, leur couleur propre et le multiensemble des couleurs voisines définissent une nouvelle couleur. Si les statistiques de couleurs de deux graphes divergent à un tour, ils sont nécessairement non isomorphes.\n\nDans le code, il faut colorier les deux graphes ensemble pour partager les numéros de couleur :\n\n```python\nfrom collections import Counter\n\ndef wl(graphs, rounds=3):\n    \"\"\"Colorier plusieurs graphes ensemble avec WL ; les numéros de couleur sont partagés pour être comparables.\"\"\"\n    nbrs = []\n    for n, edges in graphs:\n        adj = [[] for _ in range(n)]\n        for i, j in edges:\n            adj[i].append(j)\n            adj[j].append(i)\n        nbrs.append(adj)\n    colors = [[0] * n for n, _ in graphs]           # Une même couleur pour tous au départ\n    for r in range(rounds):\n        sigs = [[(c[v], tuple(sorted(c[u] for u in adj[v]))) for v in range(len(c))]\n                for c, adj in zip(colors, nbrs)]    # Couleur propre + multiensemble des couleurs voisines\n        table = {s: k for k, s in enumerate(sorted({s for g in sigs for s in g}))}\n        colors = [[table[s] for s in g] for g in sigs]\n        print(f\"Tour {r + 1}:\", [sorted(Counter(c).items()) for c in colors])\n\npath = (4, [(0, 1), (1, 2), (2, 3)])          # Un chemin\nstar = (4, [(0, 1), (0, 2), (0, 3)])          # Une étoile\nwl([path, star])\n```\n\n```text\nTour 1: [[(0, 2), (1, 2)], [(0, 3), (2, 1)]]\nTour 2: [[(0, 2), (2, 2)], [(1, 3), (3, 1)]]\nTour 3: [[(0, 2), (2, 2)], [(1, 3), (3, 1)]]\n```\n\nChaque tour affiche les couples « (couleur, nombre) » des deux graphes. Ils divergent dès le premier : le chemin a deux extrémités et deux nœuds intérieurs, l'étoile trois feuilles et un centre. WL les distingue donc.\n\n## Résoudre le problème\n\n### Le plafond des GNN\n\nLe lemme 2 dit que si un GNN à agrégation de voisins produit des représentations distinctes pour deux graphes, WL peut aussi établir qu'ils ne sont pas isomorphes. **Ces GNN discriminent donc au mieux aussi bien que WL.**\n\nRéciproquement, le théorème 3 dit qu'avec une agrégation, une combinaison et un READOUT tous injectifs, un GNN assez profond peut égaler WL.\n\nL'idée est accessible : chaque tour de WL applique un hachage injectif sur les multiensembles. Une agrégation injective peut donc imiter WL tour après tour, tout en envoyant des sous-structures similaires vers des vecteurs proches, ce que les couleurs discrètes ne permettent pas.\n\n### Somme, moyenne et maximum\n\nQuelles agrégations sont injectives ? Les auteurs prouvent que la **somme** peut représenter une fonction injective sur les multiensembles, contrairement à la **moyenne** et au **maximum** courants.\n\n[![Figure 2 de l'article : à gauche, un multiensemble de deux boules rouges et quatre bleues ; suivent les informations préservées par somme, moyenne et maximum. La somme conserve le multiensemble entier, la moyenne seulement les proportions rouge-bleu, le maximum seulement la présence des deux couleurs.](/content/papers/assets/1062d104bcaae50e5f8c9abf6c72f574a014c68e6a7bb4c6705f663336773b4f.png)](/content/papers/assets/1062d104bcaae50e5f8c9abf6c72f574a014c68e6a7bb4c6705f663336773b4f.png)\n\n*Figure 2 de l'article (Xu et al.), extraite de la [**page 6 du PDF**](https://arxiv.org/pdf/1810.00826v3#page=6). Légende originale omise.*\n\n- **Somme** : conserve tout le multiensemble.\n- **Moyenne** : conserve les proportions des éléments. $\\{a,b\\}$ et $\\{a,a,b,b\\}$ ont la même moyenne.\n- **Maximum** : conserve les éléments présents, quel que soit leur nombre de répétitions.\n\nReprésentons deux types de voisins par des vecteurs one-hot 2D et comparons :\n\n```python\nimport numpy as np\na, b = np.array([1.0, 0.0]), np.array([0.0, 1.0])\ncases = {\"{a, a} vs {a, a, a}\": ([a, a], [a, a, a]),\n         \"{a, b} vs {a, a, b, b}\": ([a, b], [a, a, b, b]),\n         \"{a, b} vs {a, b, b}\": ([a, b], [a, b, b])}\nfor name, (X1, X2) in cases.items():\n    same = {agg: np.allclose(f(np.array(X1), axis=0), f(np.array(X2), axis=0))\n            for agg, f in [(\"sum\", np.sum), (\"mean\", np.mean), (\"max\", np.max)]}\n    print(f\"{name:<24}\", {k: \"indistincts\" if v else \"distincts\" for k, v in same.items()})\n```\n\n```text\n{a, a} vs {a, a, a}      {'sum': 'distincts', 'mean': 'indistincts', 'max': 'indistincts'}\n{a, b} vs {a, a, b, b}   {'sum': 'distincts', 'mean': 'indistincts', 'max': 'indistincts'}\n{a, b} vs {a, b, b}      {'sum': 'distincts', 'mean': 'distincts', 'max': 'indistincts'}\n```\n\nCes trois exemples correspondent aux trois cas de la figure 3 de l'article :\n\n[![Figure 3 de l'article : trois paires de structures. (a) v a deux voisins de même couleur et v' en a trois ; moyenne et maximum échouent. (b) v a un vert et un rouge, v' un vert et deux rouges ; le maximum échoue. (c) v a un vert et un rouge, v' deux verts et deux rouges ; moyenne et maximum échouent.](/content/papers/assets/33c4b052156c190bc85033ddb47e50c70b500425938ac89108383fc039b88837.png)](/content/papers/assets/33c4b052156c190bc85033ddb47e50c70b500425938ac89108383fc039b88837.png)\n\n*Figure 3 de l'article (Xu et al.), extraite de la [**page 6 du PDF**](https://arxiv.org/pdf/1810.00826v3#page=6). Légende principale omise.*\n\nLe cas (a) mérite qu'on s'y arrête. Si tous les nœuds ont les mêmes caractéristiques, moyenne et maximum renvoient toujours cette même valeur, quel que soit le nombre de voisins. Toute la structure du graphe leur échappe.\n\n### GIN\n\nAvec la somme, les auteurs réunissent agrégation et combinaison en une étape et utilisent un perceptron multicouche (MLP) pour apprendre la fonction injective :\n\n$$\nh_v^{(k)}=\\mathrm{MLP}^{(k)}\\left(\\left(1+\\epsilon^{(k)}\\right)\\cdot h_v^{(k-1)}+\\sum_{u\\in\\mathcal N(v)}h_u^{(k-1)}\\right)\n$$\n\n$\\epsilon$ peut être appris ou fixé. Multiplier soi-même par $1+\\epsilon$ distingue son rôle de celui des voisins. Le corollaire 6 prouve que pour de nombreuses valeurs de $\\epsilon$, dont les irrationnels, cette expression est injective sur le couple (soi-même, multiensemble des voisins). Dans les expériences, $\\epsilon=0$ donne GIN-0.\n\nEn classification de graphes, les auteurs somment les nœuds séparément à chaque couche, puis concatènent toutes les couches pour représenter le graphe entier :\n\n$$\nh_G=\\mathrm{CONCAT}\\left(\\mathrm{READOUT}\\left(\\left\\{h_v^{(k)}\\mid v\\in G\\right\\}\\right)\\ \\middle|\\ k=0,1,\\dots,K\\right)\n$$\n\nLes couches profondes décrivent de plus grands sous-arbres ; les caractéristiques peu profondes généralisent parfois mieux. On conserve donc tout.\n\nReprenons le code précédent pour comparer deux paires de graphes avec un GIN-0 aux poids aléatoires, et un MLP à deux couches par couche GIN :\n\n```python\nrng = np.random.default_rng(0)\nmlps = [(rng.normal(size=(4, 8)), rng.normal(size=8), rng.normal(size=(8, 4)), rng.normal(size=4))\n        for _ in range(3)]                            # Un MLP à deux couches, biais compris, par couche GIN\n\ndef to_adj(g):\n    n, edges = g\n    M = np.zeros((n, n))\n    for i, j in edges:\n        M[i, j] = M[j, i] = 1\n    return M\n\ndef gin(g, eps=0.0):\n    M = to_adj(g)\n    h = np.ones((len(M), 4))                          # Sans caractéristiques : même vecteur initial pour tous\n    readouts = [h.sum(0)]\n    for W1, b1, W2, b2 in mlps:\n        m = (1 + eps) * h + M @ h                     # (1+ε)·soi-même + somme des voisins\n        h = np.maximum(np.maximum(m @ W1 + b1, 0) @ W2 + b2, 0)   # MLP à deux couches\n        readouts.append(h.sum(0))                     # Lecture par somme à chaque couche\n    return np.concatenate(readouts)                   # Concaténer les couches pour représenter le graphe\n\nhexagon = (6, [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 0)])\ntwo_triangles = (6, [(0, 1), (1, 2), (2, 0), (3, 4), (4, 5), (5, 3)])\nfor name, g1, g2 in [(\"Chemin vs étoile\", path, star), (\"Hexagone vs deux triangles\", hexagon, two_triangles)]:\n    print(name, \"représentations identiques:\", np.allclose(gin(g1), gin(g2)))\n```\n\n```text\nChemin vs étoile représentations identiques: False\nHexagone vs deux triangles représentations identiques: True\n```\n\nChemin et étoile sont séparés. L'hexagone et les deux triangles restent indiscernables, quels que soient les poids : chaque nœud a exactement deux voisins dans les deux graphes, WL voit la même chose à chaque tour, et GIN produit donc la même représentation. Un graphe a deux triangles, l'autre aucun ; un GNN à agrégation ne voit pas cette différence.\n\n\n> [!TIP]\n> \n> Si l’on considère uniquement la lecture par somme de la première couche, retirer les biais du MLP rend le chemin et l’étoile indiscernables. Un réseau ReLU sans biais vérifie $f(cx)=cf(x)$ pour $c>0$ ; avec des entrées toutes à 1, la somme de la première couche ne conserve que « nombre de nœuds + degré total ». Chemin et étoile ont tous deux 4 nœuds et un degré total de 6. Le lemme 7 porte précisément sur ce genre de cas : un perceptron à une couche sans biais confond certains multiensembles distincts.\n\n\n### Moins expressif, mais parfois utile\n\nLes auteurs situent aussi GCN et GraphSAGE. Leurs perceptrons à une couche, leurs moyennes ou leurs maximums sont moins discriminants que WL, mais ont leurs usages. La moyenne apprend une distribution : elle suffit si la tâche dépend des proportions statistiques des caractéristiques voisines plutôt que de la structure exacte. Quand les caractéristiques sont diverses et se répètent peu, elle peut être aussi puissante que la somme. Cela explique selon les auteurs les bons résultats des modèles comme GCN en classification de sujets ou en détection de communautés, riches en caractéristiques de nœuds.\n\nLe maximum apprend le squelette d'un ensemble et convient aux tâches qui cherchent ses éléments représentatifs.\n\n## Discussion\n\n### Protocole expérimental\n\nLes auteurs utilisent 9 jeux de classification de graphes : 4 en bio-informatique (MUTAG, PTC, NCI1, PROTEINS), 5 en réseaux sociaux (COLLAB, IMDB-BINARY, IMDB-MULTI, REDDIT-BINARY, REDDIT-MULTI5K). Les nœuds biologiques portent des catégories ; les nœuds sociaux sont sans caractéristiques. REDDIT donne le même nombre à tous, les autres un one-hot du degré. L'évaluation utilise une validation croisée en 10 plis.\n\nOutre les noyaux de graphes et les GNN de l'époque, la comparaison inclut des variantes remplaçant la somme de GIN par moyenne ou maximum, ou le MLP par un perceptron à une couche. GCN correspond à « moyenne, une couche », GraphSAGE à « maximum, une couche ».\n\n### Peut-on ajuster l'entraînement ?\n\nLa théorie traite l'expressivité : l'exactitude d'entraînement est le test le plus direct. Les courbes montrent que le MLP ajuste mieux que le perceptron simple, et la somme mieux que moyenne ou maximum. GIN-0 et GIN-$\\epsilon$ approchent presque toujours 100% sur l'entraînement.\n\nAucun GNN ne dépasse l'exactitude d'entraînement du noyau WL de sous-arbres, conformément au plafond théorique de WL.\n\n### Exactitude de test\n\n| Jeu de données | IMDB-B | IMDB-M | RDT-B | RDT-M5K | COLLAB | MUTAG | PROTEINS | PTC | NCI1 |\n| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |\n| WL subtree | 73.8 | 50.9 | 81.0 | 52.5 | 78.9 | **90.4** | 75.0 | 59.9 | **86.0** |\n| **GIN-0** | **75.1** | **52.3** | **92.4** | **57.5** | **80.2** | 89.4 | **76.2** | 64.6 | 82.7 |\n| Moyenne, MLP | 73.7 | 52.3 | 50.0 | 20.0 | 79.2 | 83.5 | 75.5 | **66.6** | 80.9 |\n| Moyenne, une couche (GCN) | 74.0 | 51.9 | 50.0 | 20.0 | 79.0 | 85.6 | 76.0 | 64.2 | 80.2 |\n| Maximum, une couche (GraphSAGE) | 72.3 | 50.9 | — | — | — | 85.1 | 75.9 | 63.9 | 77.7 |\n\nLe tableau ne montre qu'une partie des méthodes, avec l'exactitude moyenne (%) des 10 plis. Les deux jeux REDDIT frappent le plus : tous les nœuds ont le même nombre comme caractéristique, et les modèles par moyenne ne voient aucune structure. RDT-B, binaire, donne 50.0 ± 0.0% ; RDT-M5K, à cinq classes, 20.0 ± 0.0%, soit le hasard. GIN-0 atteint 92.4% et 57.5%. Même avec les degrés comme caractéristiques, les modèles par moyenne ne montent qu'à 71.2% et 41.3% selon les auteurs.\n\nGIN est premier ou ex æquo sur les cinq réseaux sociaux. Les quatre jeux biologiques sont moins tranchés : le noyau WL de sous-arbres gagne nettement sur NCI1 (86.0% contre 82.7%) ; sur MUTAG, GIN reste derrière WL et les 92.6% de PATCHY-SAN ; sur PTC, moyenne avec MLP termine en tête. Ces jeux sont petits et les écarts-types élevés : GIN-0 obtient 64.6 ± 7.0% sur PTC.\n\nGIN-0 et GIN-$\\epsilon$ ajustent pareillement l'entraînement, mais GIN-0 fait systématiquement un peu mieux au test, peut-être grâce à sa simplicité selon les auteurs.\n\n## Conclusion\n\nGIN transforme la puissance des GNN en question démontrable. Les GNN à agrégation de voisins plafonnent à WL ; pour l'égaler, leur agrégation doit être injective sur les multiensembles. La somme le permet, moyenne et maximum échouent. Conçu selon ce critère, GIN combine somme et MLP et dépasse nettement les modèles par moyenne en classification de graphes sociaux.\n\nLe plafond reste là : GIN ne distinguera jamais l'hexagone des deux triangles. Les comptages de sous-structures, encodages positionnels et variantes WL d'ordre supérieur que l'on ajoutera ensuite aux GNN cherchent précisément à franchir ce mur.\n\nPour classifier des graphes dont les nœuds ont peu de caractéristiques, choisissez la somme et gardez les biais dans le MLP.\n","imageSizes":{"/content/papers/assets/1062d104bcaae50e5f8c9abf6c72f574a014c68e6a7bb4c6705f663336773b4f.png":{"width":960,"height":214},"/content/papers/assets/33c4b052156c190bc85033ddb47e50c70b500425938ac89108383fc039b88837.png":{"width":1108,"height":240}}}
