English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

invité
1 / ?
retour aux leçons

Distance Sémantique comme Distance Euclidienne

Un Espace Vectoriel de Haute Dimension

Chaque token du vocabulaire de 8449 tokens d'ANDREA-120M correspond à un point dans R^768. La matrice d'embedding des tokens a une forme de 8449 x 768 : 8449 lignes, une par token du vocabulaire ; 768 colonnes, une par dimension d'embedding.


Géométrie des Panneaux d'ANDREA


Trois propriétés font de cet ensemble un espace vectoriel

1. Addition. v_a + v_b appartient à R^768. La somme de deux embeddings est un vecteur valide.

2. Multiplication par un scalaire. alpha * v appartient à R^768 pour tout scalaire réel alpha. On étire ou on rétrécit dans la même direction.

3. Linéarité. alpha v_a + beta v_b appartient à R^768. Les combinaisons linéaires restent dans l'espace.


Ces propriétés nous donnent des outils géométriques : distance, angle, projection, base, orthogonalité.


Distance comme similarité sémantique

La similarité cosinus de deux embeddings mesure l’angle entre eux : cos(theta) = (v_a . v_b) / (||v_a|| * ||v_b||). Plage : -1 (opposés) à +1 (parallèles).


Observation empirique après l’entraînement : les tokens ayant des contextes similaires produisent des embeddings avec une similarité cosinus élevée. ANDREA-120M place parakeet et monkey proches l’un de l’autre (tous deux biologiques, espèces, catégories existantes ou éteintes). Il place Fourier et transform proches l’un de l’autre (contexte du traitement du signal). Il place parakeet et Fourier éloignés l’un de l’autre (orthogonalité inter-domaines).


Pourquoi R^768 et non R^384

ANDREA-12M utilisait d_model = 384. ANDREA-120M a doublé à 768. Ce doublement est important : un espace de 384 dimensions offre moins d’« angles » disponibles, et la désambiguïsation inter-domaines en souffre. Doubler la capacité donne au modèle la latitude nécessaire pour séparer bank (rivière) de bank (financier) dans des bassins distincts de l’espace d’embeddings sans que l’un ne s’effondre sur l’autre.


Mises à jour des embeddings comme traduction vectorielle

Chaque pas de gradient ajoute delta_v à v_token. Géométriquement : de petites translations dans R^768 rapprochent la position de chaque token de voisinages qui réduisent la perte. Sur 200K pas, chaque token migre de son initialisation aléatoire vers un emplacement appris.

Calcul d'une distance

Trois embeddings entraînés (simplifiés en R^3 pour l'arithmétique) :


- v(perruche) = (1.0, 0.5, 0.0)

- v(singe) = (1.2, 0.3, 0.1)

- v(Fourier) = (0.0, 0.0, 1.5)

(a) Calculez la distance euclidienne ||v(perruche) - v(singe)||. (b) Calculez ||v(perruche) - v(Fourier)||. (c) Indiquez quels deux tokens se regroupent et donnez une raison géométrique en citant les nombres réels.

Projection sur un sous-espace de requête

Ce que calcule l’attention

Pour un token à la position t, l’attention calcule :


softmax(Q K^T / sqrt(d_k)) V


Où Q est la requête (la question de ce token), K est les clés (l'identifiant de chaque token passé), V est les valeurs (le contenu de chaque token passé). La sortie mélange V pondéré par la mesure dans laquelle la requête est liée à chaque clé.


Lecture géométrique

Considérez K comme une liste de vecteurs dans R^d_k. Chaque ligne est la clé d'un token passé. Q est un vecteur dans R^d_k : la question de ce token.


Q K^T projette chaque clé sur Q. Le produit scalaire q . k_i mesure dans quelle mesure k_i s'aligne sur la direction de q. Une projection longue = clé fortement pertinente pour la requête. Une projection courte = clé faiblement pertinente.


softmax normalise les projections en poids qui somment à 1. La somme pondérée de V est un vecteur unique : un mélange du contenu passé, pondéré par la pertinence pour la requête actuelle.


L'attention multi-têtes comme projection multi-sous-espaces

ANDREA-120M utilise 12 têtes d'attention. d_model = 768 ; d_k = 768 / 12 = 64. Chaque tête projette dans un sous-espace différent de 64 dimensions de R^768. Douze têtes donnent douze vues indépendantes de la même séquence : une tête peut suivre le rôle grammatical, une autre la similarité sémantique, une autre les références à longue distance.


Géométriquement : chaque tête définit un sous-espace orienté de 64 dimensions (une « fenêtre ») à travers laquelle elle observe le passé.


Le masque causal

Les modèles décodeur uniquement ajoutent un masque causal : chaque entrée de Q K^T au-dessus de la diagonale est mise à -infini avant le softmax. Géométriquement : la projection sur tout token futur reçoit un poids nul. Le token t ne peut voir que les tokens 0 à t.


Pourquoi c’est important : l’entraînement et l’inférence deviennent symétriques. Même passe avant, mêmes projections masquées, aucune logique de génération spéciale.


Mise à l’échelle sqrt(d_k)

Sans mise à l’échelle, les produits scalaires augmentent avec d_k. Les grands produits scalaires poussent le softmax vers des régions one-hot (un poids proche de 1, les autres proches de 0). Diviser par sqrt(d_k) maintient les projections à une échelle de variance unitaire, préservant la netteté du softmax sur une large plage de valeurs de d_k.


Géométriquement : sqrt(d_k) normalise les longueurs des projections afin que le softmax voie des magnitudes comparables quelle que soit la dimension du sous-espace.

Lecture d’une projection

Trois clés et une requête dans R^4 (simplifié pour l’arithmétique) :


- q = (1, 0, 1, 0)

- k_1 = (1, 0, 0, 0) [jeton passé 1]

- k_2 = (0, 0, 1, 0) [jeton passé 2]

- k_3 = (0, 1, 0, 1) [past token 3]


d_k = 4, donc sqrt(d_k) = 2.

(a) Calculez q . k_i pour i = 1, 2, 3 (produits scalaires). (b) Divisez chaque résultat par sqrt(d_k) = 2 pour obtenir les scores mis à l'échelle. (c) Sans calculer explicitement la softmax, indiquez quelle clé recevra le PLUS GRAND poids d'attention et donnez une raison géométrique.

Gradient Descent comme Chemin sur un Terrain

Une Surface dans 120M+1 Dimensions

Chaque configuration de poids d'ANDREA-120M est un point dans R^120,000,000. La perte L(w) associe à chaque point un nombre réel : la perte d'entraînement pour cette configuration. Ensemble, les valeurs de perte forment une surface de dimension (120M+1) au-dessus de l'espace des paramètres.


Géométriquement impossible à visualiser directement. Conceptuellement : un terrain. Des montagnes (perte élevée), des vallées (perte faible), des points de selle, des plateaux, des crêtes, des bassins.


Le Gradient comme Pente Locale

grad L(w) est un vecteur dans R^120M pointant dans la direction de l'AUGMENTATION la plus forte de L. Son opposé : -grad L(w) pointe vers la descente la plus raide.


Une étape AdamW déplace w dans la direction opposée au gradient (avec un ajustement adaptatif issu de m et v). Géométriquement : un petit pas le long de la surface, vers le bas, dont la taille est contrôlée par lr.


Bassin défectueux de v1

v1 a effectué son premier pas avec LR = pic (0.0003) sur des poids fraîchement initialisés. Image géométrique : w_0 se trouve dans une région fortement courbée (l’initialisation aléatoire présente une forte courbure dans de nombreuses directions), et un pas à LR pic atterrit dans le mauvais bassin. Les étapes suivantes ne permettent pas d’en sortir. Le modèle reste bloqué en produisant « region region region » car ce bassin présente la perte la plus faible que le modèle puisse atteindre depuis l’endroit où il a atterri.


Chemin de warmup de v2

v2 effectue 2000 petits pas avec un LR qui augmente progressivement de 0 jusqu’à la valeur pic. Image géométrique : w_0 migre d’abord doucement le long de directions lisses (où la courbure est faible). À l’étape 2000, w a atteint une région plus navigable ; le LR pic peut alors le guider vers un meilleur bassin sans le faire dépasser.


Le warmup est un protocole d'initialisation sensible à la géométrie : laisser le modèle trouver un voisinage local sûr avant de le pousser fortement.


Bassins larges vs étroits

À l'étape 112K, ANDREA-120M se trouve dans un bassin. Question : quelle est sa largeur ?


Bassin large = de nombreuses configurations de poids voisines atteignent également une faible perte d'entraînement. La généralisation tend à être bonne (la largeur du bassin prédit la performance en test ; voir la leçon PAC-Bayes, Chapitre 3).


Bassin étroit = seul un ensemble restreint de poids permet d’atteindre une faible perte. La généralisation tend à en souffrir.


Le polissage v3 à l’étape 112 619 a fait glisser le modèle le long de la surface (sans réinitialisation) vers un bassin plus large grâce à une perturbation du curriculum : modification de la fonction de perte (bandit différent, mélange d’entraînement différent), permettant à SGD de trouver une région plate proche sous la nouvelle politique.


La falaise zombie

La perte anormale de 0,13 à l’étape 112 080 était une FALAISE : une région étroite et abrupte où un motif d’entrée spécifique (sous-chaîne mémorisée de repo-docs) atteint une perte quasi nulle. Le modèle est tombé du bassin plus large dans un ravin étroit. L’exclusion stricte des repo-docs par le pivot de polissage a comblé ce ravin, empêchant SGD de le retrouver.

Lecture du terrain

Trois configurations de poids après un pivot de polissage. (a) Configuration A : perte d’entraînement 2,0, et 95 % des petites perturbations dans un rayon de 0,1 produisent encore une perte < 2,2. (b) Configuration B : perte d’entraînement 2,0, et 5 % des petites perturbations dans un rayon de 0,1 produisent encore une perte < 2,2. (c) Configuration C : perte d’entraînement 0,13 sur une entrée spécifique mais perte moyenne de 8,0 sur les autres entrées. Classez chacune comme BASSIN LARGE, BASSIN ÉTROIT ou FALAISE, et donnez une raison géométrique en une phrase.

Mélange de Curriculum comme une Marche sur un Simplex Discret

Ce qu'est un Simplex

Un simplex de dimension n (plus précisément le (n-1)-simplex standard) est l'ensemble des n-uplets (w_1, w_2, ..., w_n) avec chaque w_i >= 0 et sum(w_i) = 1.


Pour n = 2 : un segment de droite allant de (1, 0) à (0, 1). Pour n = 3 : un triangle avec les sommets (1, 0, 0), (0, 1, 0), (0, 0, 1). Pour n = 16 (liste complète des sources d'ANDREA) : un simplexe de dimension 15 situé dans R^16.


Poids des bandits en tant que coordonnées du simplexe

Le bandit d'ANDREA produit un vecteur de poids w sur les sources de données à chaque phase. Chaque composante w_i est la probabilité d'échantillonner la source i. Les probabilités sont non négatives et leur somme est égale à 1 : chaque vecteur de poids se trouve sur le simplexe.


Sommets = stratégies pures (échantillonner une seule source). Intérieur = stratégies mixtes (échantillonner plusieurs sources, chacune avec une probabilité positive). Arêtes = mélanges de deux sources uniquement.


Planchers des sources comme région restreinte

ANDREA impose des poids minimums : hermes3-general à un plancher de 0,7 (post-polish). Cela délimite une sous-région du simplexe : seuls les vecteurs de poids avec w_hermes3-general >= 0,7 sont accessibles.


Géométriquement : le plancher coupe le simplexe par un hyperplan. La région accessible est la partie du simplexe située du bon côté de chaque hyperplan de plancher.


Les plafonds comme autre restriction

ANDREA impose également des poids maximums : dictionary à un plafond de 0,25 (post-polish). Chaque plafond est un autre hyperplan, et la région accessible doit également se situer du bon côté de chaque hyperplan de plafond.


Exclure entièrement une source (plafond = 0,0) est le plafond le plus strict possible : la coordonnée est fixée à zéro, ce qui réduit le simplexe effectif d'une dimension.


Transitions de phase en tant que marches sur le simplexe

Chaque transition de phase (tous les 7-42 pas) produit un nouveau vecteur de poids. Chaque nouveau vecteur est un point sur le simplexe. Sur 200K pas, le bandit trace un long chemin à travers la région accessible du simplexe.


Phases aléatoires = téléportation vers un point choisi uniformément au hasard à l'intérieur de la région accessible.

Phases contrôlées par le bandit = pas vers le sommet UCB-optimal compatible avec les planchers et plafonds.

Pivot de polissage = redessiner la région accessible (nouveaux planchers, nouveaux plafonds, certaines sources exclues), et la marche continue depuis le nouveau point de départ.


Pourquoi les sommets sont dangereux

Les phases à source pure (une w_i = 1, le reste = 0) se trouvent aux sommets du simplexe. La diversité est nulle. Le modèle s'entraîne sur une seule distribution. L'effondrement partiel de v1 est en partie dû au bandit qui campe près du sommet repo-docs ; les échantillons reproduisaient exclusivement la distribution de cette source.


Les planchers empêchent le camping aux sommets : un plancher à 0.7 signifie « ne jamais laisser le poids d'une source descendre sous 0.7 » (ou la valeur du plancher pour les sources prioritaires).

Explorer la région accessible

Trois sources : hermes3-general (H), gutenberg (G), dictionnaire (D). Contraintes : plancher H = 0.5, plafond D = 0.25. (Implicitement : tous les poids ≥ 0, somme égale à 1, aucune autre contrainte.)

(a) Le bandit pourrait-il choisir (H=1.0, G=0, D=0) ? Pourquoi ou pourquoi pas ? (b) Pourrait-il choisir (H=0.5, G=0.5, D=0) ? (c) Pourrait-il choisir (H=0.5, G=0.25, D=0.25) ? (d) Décrivez géométriquement à quoi ressemble la région accessible dans ce simplexe à 3 sources.

Restriction des dimensions pour les 20K premiers pas

Ce que l’échauffement du programme v2 a fait

v2 a défini curriculum_warmup_sources sur sept sources : hermes3-general, hermes3-creative, hermes3-roleplay, chat, smoltalk, oasst, gutenberg. Pendant les 20K premiers pas, SEULEMENT ces sept sources ont contribué. Après le pas 20K, le flux complet des 16 sources s’est activé.


Lecture géométrique

Le simplexe complet à 16 sources se trouve dans R^16. En se limitant à 7 sources, 9 des 16 coordonnées sont réduites à zéro. La marche du bandit se déroule dans un sous-simplexe de dimension 6 (une de moins que le nombre de sources, en raison de la contrainte de somme égale à 1).


Géométriquement : une SOUS-VARIÉTÉ du simplexe complet. De dimension inférieure, plus lisse, plus facile à naviguer.


Pourquoi cela aide l'entraînement précoce

Au début de l'entraînement, le modèle n'a pas encore appris de langage cohérent. Des sources diverses le perturbent : chaque source a son propre style, sa propre distribution de vocabulaire, ses propres schémas. Mélanger 16 sources à l'initialisation aléatoire crée une distribution cible trop large que le modèle ne peut pas ajuster.


Limiter à 7 sources conversationnelles/prose donne une cible plus uniforme. Le modèle apprend d'abord une représentation stable, puis s'étend.


Parcours géométrique pendant l’entraînement

1. Étapes 0 à 20K (warmup). La marche se fait sur le 6-D sous-simplexe. Des motifs linguistiques stables émergent dans le modèle.

2. Étapes 20K à 112K (full firehose). La marche s’étend au 15-D simplexe complet. La largeur du domaine émerge.

3. À partir de l’étape 112K (polish). La marche est à nouveau restreinte : repo-docs & repo-docstrings exclus, seuils conversationnels relevés. Polygone plus petit dans le simplexe complet ; la qualité conversationnelle se consolide.


Pourquoi l’étape Polish définit curriculum_warmup_steps = 0

Polish commence à l’étape 112K. Le modèle parle déjà un langage cohérent. Restreindre à un sous-simplexe maintenant ferait perdre de la largeur sans aucun gain (le bénéfice du warmup concerne les modèles fraîchement initialisés). Définir warmup_steps = 0 signifie : rester sur le simplexe complet, mais avec de nouveaux plafonds et seuils.


Trois géométries, une seule exécution d'entraînement

v2 warmup : sous-simplexe de faible dimension.

v2 firehose : simplexe complet en 15-D.

v3 polish : simplexe complet avec un polygone plus petit (plus de contraintes).


Même exécution de 200K étapes, trois régimes géométriques différents. Chacun a été ajusté pour une phase différente de maturité du modèle.

Lecture du sous-variété

(a) v2 warmup utilise 7 sources parmi l'ensemble complet de 16 sources. Quelle est la dimension du sous-simplexe de warmup ? Calculez et indiquez-la. (b) ANDREA-120M v3 polish exclut strictement les repo-docs et repo-docstrings (cap 0.0) mais autorise autrement les 14 sources restantes. Quelle est la dimension du sous-simplexe de polish ? (c) Géométriquement, que signifie définir curriculum_warmup_steps = 0 dans la configuration polish ?