La couche d'embedding est juste une matrice E de forme (vocab_size, model_dim). Pour le token ID i, l'embedding est E[i] — une simple consultation de ligne, pas de calcul. Mais ces embeddings sont appris pendant l'entraînement : les tokens qui apparaissent dans des contextes similaires obtiennent des embeddings similaires. L'exemple classique : les embeddings pour "king" − "man" + "woman" ≈ "queen", montrant que l'espace d'embedding capture les relations sémantiques.
Beaucoup de modèles partagent (lient) la matrice d'embedding avec la couche de sortie (le "unembedding" ou "language model head"). La couche de sortie convertit les états cachés en probabilités de vocabulaire en calculant un produit scalaire avec l'embedding de chaque token. Lier ces couches signifie que le même embedding représente un token en entrée et le prédit en sortie, économisant des paramètres et améliorant souvent la qualité. La plupart des LLM modernes utilisent des embeddings liés.
La représentation complète de l'entrée est typiquement : token_embedding + positional_encoding. L'embedding du token capture ce que le token signifie. L'encodage positionnel capture où il apparaît dans la séquence. Dans les modèles avec des embeddings de position appris (BERT), c'est une seconde table d'embedding indexée par position. Dans les modèles avec RoPE (LLaMA), l'information positionnelle est injectée différemment (en tournant les vecteurs Q et K), et la couche d'embedding ne gère que l'identité du token.