1 points par GN⁺ 2025-09-16 | 1 commentaires | Partager sur WhatsApp
  • Dans un espace d’embedding de haute dimension, il est possible de représenter un très grand nombre de concepts en exploitant la quasi-orthogonalité plutôt qu’une orthogonalité parfaite
  • Le lemme de Johnson-Lindenstrauss garantit que des données arbitraires de haute dimension peuvent être projetées dans une dimension plus faible avec très peu de perte d’information
  • Au cours de l’optimisation, la conception de la fonction de perte est cruciale, car une fonction de perte de base peut produire une disposition de vecteurs inefficace ou biaisée
  • Les résultats expérimentaux montrent que la capacité réelle de l’espace d’embedding est bien supérieure à ce que l’on supposait théoriquement, et que des millions à des milliards de concepts peuvent naturellement y coexister
  • Ces résultats ont une grande portée pratique pour la mise en œuvre du machine learning, notamment pour la représentation des données et la réduction de dimension en NLP et dans la conception d’embeddings

Introduction : la question de la capacité de l’espace d’embedding des modèles de langage

Dans une récente série de vidéos de 3Blue1Brown sur les modèles Transformers, Grant Sanderson a soulevé une question fascinante : comment l’espace d’embedding à 12 288 dimensions de GPT-3 peut-il contenir des millions de concepts du monde réel ?
Cette interrogation rejoint des résultats mathématiques liés à la géométrie en haute dimension et au lemme de Johnson-Lindenstrauss (JL)
En explorant ce sujet, de nouvelles intuitions ont émergé sur les propriétés fondamentales des espaces vectoriels et sur l’optimisation, jusqu’à déboucher sur une collaboration avec Grant

Quasi-orthogonalité des vecteurs et capacité de l’espace d’embedding

  • Dans un espace de dimension N, il n’existe que N vecteurs parfaitement orthogonaux
  • En pratique, si l’on autorise des relations quasi-orthogonales légèrement éloignées de 90° (par exemple des angles entre 85° et 95°), le nombre de vecteurs représentables dans le même espace augmente de façon exponentielle
  • Dans la vidéo de Grant, une visualisation montre 10 000 vecteurs unitaires placés dans un espace à 100 dimensions de manière presque orthogonale
  • Mais en reproduisant cette même expérience, un piège subtil dans la conception de la fonction de perte d’optimisation a été mis au jour

Problèmes et motifs de la fonction de perte

  • Fonction de perte de base :
    loss = (dot_products.abs()).relu().sum()
  • Sur la sphère unitaire réelle, cette fonction de perte pose deux problèmes
    1. Piège de gradient : lorsque l’angle entre vecteurs approche de 90°, le gradient agit fortement, mais près de 0° ou 180°, il devient presque nul, ce qui bloque l’amélioration
    2. Solution à 99 % : la méthode d’optimisation minimise la perte globale en plaçant chaque vecteur de façon à être correctement orthogonal à 9 900 autres, mais presque parallèle à 99 d’entre eux (autrement dit, en dupliquant des vecteurs de référence)
  • Cette solution diffère fondamentalement de ce qui était attendu à l’échelle globale, d’où la nécessité d’une fonction de perte plus sophistiquée
  • La fonction de perte a donc été modifiée avec une pénalité exponentielle : loss = exp(20*dot_products.abs()**2).sum()
  • Cette approche produit un résultat plus proche de la distribution recherchée (l’angle pairwise maximal est d’environ 76,5°)

Lemme de Johnson-Lindenstrauss (JL) : une garantie géométrique

  • Le lemme JL garantit que même si un ensemble arbitraire de points de données en haute dimension est projeté aléatoirement dans une dimension plus faible, les distances euclidiennes sont presque préservées
  • Pour un ensemble de 1 à N points, un facteur d’erreur ε et une dimension de projection k :
    (1-ε)||u-v||² ≤ ||f(u)-f(v)||² ≤ (1+ε)||u-v||²
  • La dimension minimale requise k est : k ≥ (C/ε²) * log(N)
    où C est une constante qui ajuste la probabilité de succès
  • En général, on choisit une valeur prudente de C entre 4 et 8, mais des schémas de projection particuliers (par exemple une matrice de Hadamard ou des méthodes d’optimisation) peuvent permettre d’atteindre une valeur plus faible

Domaines d’application pratique

  1. Réduction de dimension :
    • Exemple : convertir efficacement les préférences de clients d’un site e-commerce depuis des dizaines de milliers de dimensions produits vers quelques milliers de dimensions
    • Cela peut être utilisé pour l’analyse en temps réel de données de haute dimension, les systèmes de recommandation, etc.
  2. Analyse des limites de capacité d’un espace d’embedding :
    • Au lieu d’une orthogonalité parfaite, l’espace peut naturellement représenter un spectre de similarités et de différences entre concepts
    • Exemples de mots réels : "archery", "fire", "gelatinous", "green", dont les significations physiques et abstraites se superposent dans l’espace de haute dimension

Analyse expérimentale de la capacité des embeddings

  • Après optimisation avec des transformations comme la matrice de Hadamard, la valeur de C se situe entre 2,5 et 4, et peut devenir bien plus faible avec une optimisation sur GPU
  • Méthode expérimentale : projeter successivement N vecteurs de base standards dans un espace de dimension k, puis répéter l’optimisation 50 000 fois
  • Observations :
    1. Quand N augmente, la valeur de C atteint d’abord un maximum (~0,9), puis baisse progressivement
    2. Plus le ratio N/k est élevé, plus C descend en dessous de 0,2
  • Cela s’explique par l’efficacité du sphere packing dans les espaces de haute dimension
  • Cela suggère qu’en pratique, la marge de représentation des concepts est encore plus grande que ne l’indiquent les bornes théoriques supérieures

Signification concrète pour les embeddings des modèles de langage

  • Selon le nombre de dimensions d’embedding k, l’angle quasi orthogonal F (90° - angle réel), et la valeur de C, le nombre de concepts pouvant être encodés est : Vectors ≈ 10^(k * F² / 1500)
    • k=12 288, F=1(89°) → 10^8
    • F=2(88°) → 10^32
    • F=3(87°) → 10^73
    • F=5(85°) → possibilité de stocker plus de 10^200 vecteurs
  • Avec seulement 86°, on dépasse déjà le nombre d’atomes observables dans l’univers (10^80)
  • Autrement dit, les modèles de langage réels peuvent préserver très richement des millions de significations même avec un nombre de dimensions relativement limité

Applications pratiques et pistes futures

  1. Réduction de dimension efficace :
    • Grâce à des méthodes de projection aléatoire combinées à des transformations de Hadamard, au codage BCH, etc., il devient possible de réduire la dimension de données massives et d’accélérer les calculs sans optimisation complexe
  2. Conception de l’espace d’embedding :
    • Cette compréhension de la capacité de l’espace aide à expliquer comment de grands modèles de langage comme les Transformers peuvent préserver simultanément des relations sémantiques fines jusque dans des concepts comme "Canadian" ou "Muppet-like"
  • En conclusion, les dimensions d’embedding actuelles (1 000 à 20 000) suffisent à représenter la connaissance humaine ; l’enjeu central est d’apprendre une disposition idéale dans cet espace

Conclusion

  • En partant de problèmes subtils d’optimisation dans la fonction de perte, cette exploration débouche sur des intuitions profondes sur la géométrie en haute dimension et les structures fondamentales du machine learning
  • Publié en 1984, le lemme JL fournit aujourd’hui encore un principe central pour les embeddings en machine learning, la représentation de l’information et la réduction de dimension
  • L’auteur remercie Grant Sanderson, la chaîne 3Blue1Brown et Suman Dev pour leur collaboration, et partage le plaisir qu’a représenté cette recherche et sa rédaction

Lectures complémentaires

  1. Sphere Packings, Lattices and Groups – Conway & Sloane
  2. Database-friendly random projections: Johnson-Lindenstrauss with binary coins – Achlioptas
  3. Hadamard Matrices, Sequences, and Block Designs – Seberry & Yamada

1 commentaires

 
GN⁺ 2025-09-16
Commentaires Hacker News
  • Les implications de cette propriété géométrique sont vraiment saisissantes. On peut imaginer une façon simple d’estimer combien de vecteurs presque orthogonaux on peut faire tenir dans un espace de dimension k. Si on se concentre uniquement sur l’angle minimal entre vecteurs, on retombe finalement sur une analyse des codes sphériques (spherical codes). Pourtant, cet article ne cite absolument pas les travaux existants sur les codes sphériques, et une bonne partie donne l’impression d’avoir été rédigée par un modèle de langage. En plus, de nombreuses incohérences élémentaires nuisent à la fiabilité des conclusions. Par exemple, dans le graphique qui montre la valeur de C en fonction de K et N, l’axe des x représente-t-il K ou N ? La légende dit que l’axe des x est N (le nombre de vecteurs), mais plus loin il est expliqué qu’on obtient C=0.2 dans un « très grand espace », alors que sur le graphique, C=0.2 n’est atteint que pour N=30 000, K=2 — c’est-à-dire 30 000 vecteurs dans un espace à 2 dimensions ! À l’inverse, si l’axe des x est K, alors l’article extrapole à partir d’un résultat mesuré avec 2 vecteurs en 30 000 dimensions vers le cas de 10^200 vecteurs en 12 888 dimensions, ce qui n’a aucun sens. J’aimerais aborder le travail des gens avec bienveillance, mais en ce moment le flot d’articles rédigés par des LLM sur Hacker News devient vraiment écrasant

    • Dire que quelque chose a été généré par un LLM est impossible à prouver, et il est plus direct et plus utile de simplement dire « il y a des erreurs ». Le fait d’avoir relevé les erreurs est effectivement plus utile. Sur cette figure, il me semble bien que l’axe des x doit être N

    • Comme je ne connaissais pas les codes sphériques, ça m’a donné l’impression que la terminologie de ce domaine est elle-même assez obscure. Même Wikipédia semble à peine connaître le sujet, et les résultats Google finissent surtout sur des problèmes de packing optimal façon balle de golf, généralement en moins de 32 dimensions. Il arrive souvent que des mathématiques déjà existantes soient redécouvertes parce qu’elles sont cachées derrière un jargon non intuitif

    • Oui. Je me demande quels articles expliquent mieux les propriétés géométriques et informationnelles des espaces vectoriels de grande dimension, ainsi que les codes sphériques

    • Sur le graphique que tu mentionnes, je ne vois pas K=2 atteindre C=0.2. K=3 s’arrête aussi à C=0.3. Et je ne comprends pas très bien non plus pourquoi ce serait un problème. L’auteur projette N vecteurs de base en K dimensions, et C ressemble à une mesure d’erreur du mapping de l’espace N vers l’espace K. S’il y a une raison pour laquelle cette idée est incompatible avec le graphique, j’aimerais en entendre davantage. Dans ton argumentation, on dirait que ce concept lui-même n’est pas abordé

  • Je pense que l’auteur se focalise beaucoup trop sur le cas où tous les vecteurs sont complètement orthogonaux, et qu’il surestime donc le niveau d’erreur réellement acceptable. En pratique, ce qui compte n’est pas seulement que des vecteurs orthogonaux restent presque orthogonaux, mais aussi que l’ordre des distances soit préservé entre des vecteurs éloignés de l’orthogonalité. Même avec un epsilon bien plus petit, il peut y avoir de vrais problèmes. Autrement dit, l’affirmation selon laquelle « comme le montre cette étude, entre 1 000 et 20 000 dimensions suffisent à contenir à la fois l’ensemble du savoir humain et le raisonnement » me paraît excessivement optimiste

    • Les vecteurs sont généralement normalisés sur la surface de la n-sphère, et en pratique la distance qui a du sens dans les résultats est la similarité cosinus. Donc en pratique, le « presque orthogonal » est important. Pendant l’entraînement, l’objectif est de rendre les représentations dénuées de sens plus « orthogonales » sur la sphère. Lorsqu’on implémente cela sur du vrai matériel, il y a aussi des limites de précision en virgule flottante, ce qui fait que cette approche fonctionne particulièrement bien. À noter que cette idée n’a pas été proposée pour la première fois par ce blog ou cette vidéo YouTube. La portée de ce lemme pour l’IA, ou au moins pour l’entraînement de réseaux neuronaux, avait déjà été mentionnée il y a une dizaine d’années par C. Eliasmith, bien avant qu’il soit réellement possible d’entraîner en pratique des réseaux de connaissances ultra-haute dimension de type GPT

    • La logique de l’argument de l’OP n’est pas terrible, mais la capacité de représentation autour de 20 000 dimensions reste malgré tout encourageante

    • Je n’ai jamais pensé non plus que tous les vecteurs soient complètement orthogonaux ou indépendants. Il y a aussi un article intéressant sur la mesure des distances, les espaces curvilignes et les coordonnées obliques : https://news.ycombinator.com/item?id=41873650. Cela soulève des questions fondamentales comme : « À quel point la mesure de distance change-t-elle selon l’ordre des caractéristiques ? », « Si l’ordre de tous les axes orthogonaux change, la sortie de l’algorithme change-t-elle aussi ? », « Les caractéristiques d’un espace de grande dimension sont-elles vraiment toutes orthogonales à 90° ? ». Si les caractéristiques ne sont pas statistiquement indépendantes, il n’y a en pratique aucune chance qu’elles soient parfaitement orthogonales, et l’utilité de mesures de distance fondées sur cette hypothèse d’indépendance peut être limitée. Les modèles linéaires comme Naive Bayes, la régression linéaire, la régression logistique, la LDA ou la PCA sont moins fiables lorsque les caractéristiques ne sont pas indépendantes. Des techniques comme la régularisation L1 lasso ou L2 ridge peuvent aussi être risquées avec des données aberrantes, non indépendantes ou non orthogonales. Comme il est difficile de comprimer de force la [parfaite orthogonalité], il est difficile d’affirmer que le modèle suffit. Et il y a aussi, au fond, la question de savoir si un encodage simultané est possible dans gbit

  • Le ton ChatGPT qui se dégage d’une grande partie du texte m’a pas mal dérangé, au point de rendre la lecture difficile. J’utilise aussi l’IA pour peaufiner mon anglais, mais j’essaie d’éviter ça en demandant explicitement de ne pas trop modifier le ton ou la forme. Cela dit, je trouve quand même cette observation mathématique vraiment intéressante. Elle donne un éclairage fondamental sur la manière dont les grands modèles de langage, ou d’autres systèmes d’IA, fonctionnent réellement. Quand on regarde comment des données de grande dimension sont projetées dans des dimensions plus faibles tout en préservant leur structure, on voit que ce type de mécanisme est au cœur de l’efficacité et du passage à l’échelle

    • Ironiquement, dans ton deuxième paragraphe, des termes comme « fascinating », « crucial », « delving » ainsi que la structure du paragraphe donnent immédiatement l’impression d’un passage par ChatGPT

    • Je me demande quels éléments t’ont donné cette forte impression de GPT ? C’est à cause du style très énumératif ?

  • Ce type de théorie intuitive et le lemme de Johnson-Lindenstrauss (JL) sont au cœur de ce qui rend possibles, dans le domaine de la sécurité de l’IA, les travaux d’interprétabilité mécanique avec des SAE (sparse autoencoders). Beaucoup de ces idées sont bien synthétisées dans un article publié par Anthropic en 2022 : https://transformer-circuits.pub/2022/toy_model/index.html

    • Je me demande où l’on peut voir le véritable article, et où il a été publié
  • Un modèle de langage ne bourre pas des « concepts » de façon fixe dans les C dimensions d’une couche (j’imagine que c’est ainsi qu’est utilisé le chiffre 12k). Il n’a pas non plus besoin d’une orthogonalité parfaite entre vecteurs pour distinguer et traiter des concepts. Un LLM ne se contente pas d’éloigner les concepts les uns des autres dans l’espace vectoriel ; les significations se chevauchent un peu partout. C’est précisément l’essence d’une représentation dense (dense representation). Si l’on entraîne un autoencodeur sparse, on peut voir quels neurones s’activent par sujet. Neuronpedia montre très bien à quoi cela ressemble en pratique : https://www.neuronpedia.org/

    • Justement, ces travaux sur les autoencodeurs sparse reposent sur l’idée de « presque orthogonal » dont parle cet article. À l’origine, cela s’appelait l’« hypothèse de superposition » : https://transformer-circuits.pub/2022/toy_model/index.html Les SAE servent à décomposer des vecteurs denses en « concepts » sparse, presque orthogonaux, dans un espace surcomplet (overcomplete). Cette approche fonctionne vraiment bien en pratique, et peut même être utilisée pour aligner efficacement les espaces d’embedding entre différents LLM

    • Si l’on relâche la condition d’orthogonalité parfaite, on peut faire entrer bien plus d’information. En substance, cela revient à regrouper de l’information supplémentaire (de dimension fractionnaire) avec des dimensions existantes. Autrement dit, beaucoup de concepts ne sont pas parfaitement orthogonaux entre eux et présentent un certain chevauchement ou des corrélations. Donc le contenu de l’article n’a rien de si révolutionnaire. Et l’abus de termes comme « remarkable », « fascinating », « profound » donne un petit côté LLM qui cherche subtilement à happer le lecteur

  • Un point un peu anecdotique mais amusant : vous aussi, vous pouvez faire tenir des milliards de concepts dans autant d’espace. Même si l’on ne se soucie que de 4 bits par composante du vecteur, un vecteur de 12 000 dimensions en fp4 fait environ 6 Ko, soit à peu près l’équivalent de plusieurs pages de texte en UTF-8. C’est du niveau d’un embedding 64K pour 3K tokens. Le nombre de « pensées » possibles ainsi représentées est énorme. Lorsqu’un seul token est traité, chaque couche mélange aussi, environ 60 fois, les « pensées » précédentes avec l’attention et les données apprises par le FFN. C’est ainsi que tout ce système peut accomplir des tâches complexes (par exemple convertir du Bash en Python, résoudre des problèmes verbaux, etc.). Bien sûr, on ne s’attend pas à ce que ce soit efficace à 100 % du point de vue de l’espace. Il faut que cela fonctionne bien quand on compose des vecteurs avec des « intensités » différentes, et l’entraînement ne converge pas toujours vers la compression la plus efficace possible. Au final, même si l’on ne considère cette limite théorique que comme une borne supérieure, cela donne une nouvelle intuition : dans des vecteurs d’ultra-haute dimension, on peut pratiquement entasser n’importe quoi qui ressemble à une « pensée »

  • Mon intuition est bien plus simple — en supposant que les concepts ont une certaine structure hiérarchique, on peut estimer grossièrement combien de concepts rentrent dans un espace à 12 000 dimensions. Si chaque concept est, sur au moins un axe, orthogonal à tous les autres concepts dans une certaine dimension, cela signifie qu’une fonction capable de séparer linéairement deux concepts est garantie, même si la distance cosinus n’est pas très grande. Dans ce cas, à l’extrême, on pourrait aller jusqu’à 12 000! concepts (factorielle), ce qui laisse bien trop de place pour la plupart des taxonomies

    • Pour implémenter 12 000! concepts, il faudrait faire correspondre à chaque concept un ordre sur les dimensions, alors qu’en pratique l’ordre des dimensions n’a aucune signification dans le modèle. Autrement dit, [weight_1, weight_2,...] et [weight_2, weight_1,...] sont totalement équivalents dans le modèle. En pratique, dans un modèle de langage, on peut considérer qu’il n’y a que trois états par axe : positif, négatif ou 0, ce qui donne plutôt 3^12 000 concepts. En réalité, dans la plupart des vecteurs, presque tous les axes sont proches de 0 à l’exception de quelques dizaines (à cause des contraintes de temps d’entraînement)

    • Ce nombre est immensément plus grand que le nombre d’atomes dans tout l’univers (10^80), environ 10^43741

    • Le fait même que « la distance cosinus n’est pas très grande » constitue déjà une limite décisive

  • Si vous avez déjà joué à 20 Questions, vous savez qu’il n’est pas nécessaire d’avoir 1 000 dimensions pour des milliards de concepts. Des vecteurs aussi grands peuvent contenir des informations bien plus complexes que de simples milliards de concepts. En pratique, un tel vecteur peut représenter et permettre de retrouver tout un poème, jusqu’à l’emplacement des fautes de frappe. Comme quand on colle un poème dans GPT puis qu’on lui demande où se trouve une faute : quelque part dans les couches internes, cette information est distinguée de manière concrète

    • En réalité, ce n’est pas un simple vecteur qui fait cela, mais le modèle tout entier. Le modèle complet se comporte comme une sorte de vecteur de mille milliards de dimensions

    • Avec des vecteurs binaires, 20 dimensions suffisent pour représenter un peu plus d’un million de concepts. 30 dimensions permettent d’aller jusqu’à 1 milliard de concepts

  • Beaucoup de commentaires ont déjà relevé plusieurs failles dans cet article, mais je voudrais juste ajouter une observation vraiment élémentaire : l’affirmation même selon laquelle 10^200 concepts tiendraient en 12k dimensions est totalement absurde. Certes, un espace vectoriel de 12k peut contenir une quantité énorme de valeurs distinctes, mais cela n’en fait pas pour autant des concepts. Cette affirmation est ridicule. J’imagine que Shannon lui-même aurait voulu le rappeler très clairement

  • L’erreur fondamentale est qu’en réalité, il n’existe pas des milliards de concepts. Les « concepts » utilisés par les humains sont fondamentalement différents des « instances » ou « entités » mécaniques. Les instances peuvent être infinies, mais le nombre de concepts abstraits que nous utilisons réellement pour penser est bien plus limité