Cet article s’inspire librement de « Transformers Laid Out » de Pramod Goyal une rareté : un guide qui mêle intuition, lecture fine du papier original « Attention Is All You Need », et code exécutable. Ce format transforme la théorie en expérience.
Aujourd’hui, les grands modèles de langage (LLMs) comme ChatGPT, Gemini ou Claude façonnent nos vies : ils rédigent des emails, aident à apprendre, génèrent du code, influencent des décisions. Mais ces systèmes ne sont pas neutres. Ils incarnent des choix techniques, des biais cachés, des limites invisibles.
Et pour comprendre les LLMs, il faut commencer par leur cœur : le Transformer.
Introduit en 2017 par des chercheurs de Google, le Transformer a révolutionné le traitement du langage. Conçu à l’origine pour la traduction automatique, il a vite été généralisé à presque toutes les tâches de langage et au-delà. Son secret ? Un mécanisme élégant appelé attention, qui permet au modèle de « voir » l’ensemble d’une phrase d’un seul coup d’œil, plutôt que mot par mot.
Pour en saisir l’essence, suivons la traduction de « I like Pizza » en « J’aime la pizza », étape par étape.
Un modèle ne lit pas du texte. Il manipule des nombres. Dès qu’il reçoit une phrase, chaque mot « I », « like », « Pizza » est converti en un vecteur dense de \( d_{\text{model}} = 512 \) dimensions, appelé embedding.
Imaginez un espace mathématique à 512 dimensions. Chaque mot y occupe une position précise, définie par ses coordonnées (ex. : [0.45, -0.23, 0.88, …]). Ces positions ne sont pas aléatoires : elles sont apprises sur des milliards de phrases. Ainsi, des mots de sens proche « like », « love », « enjoy » se retrouvent proches dans cet espace, tandis que « like » et « hate » sont éloignés.
Formellement, si \( x_i \) est le vecteur one-hot du mot \( i \), son embedding est :
\[ e_i = x_i^\top W_{\text{emb}} \in \mathbb{R}^{d_{\text{model}}} \]où \( W_{\text{emb}} \) est une matrice apprise. On empile ces vecteurs :
\[ X = [e_1^\top, e_2^\top, e_3^\top]^\top \in \mathbb{R}^{3 \times 512} \] Problème : à ce stade, l’ordre est perdu. Pour le modèle, « I like Pizza » et « Pizza like I » sont identiques ! Il faut donc ajouter une notion de position.Le Transformer traite tous les mots en parallèle il n’a donc aucune notion intrinsèque de séquence. Pour y remédier, on ajoute un encodage de position (Positional Encoding, PE) à chaque embedding.
L’idée ? Utiliser des fonctions sinusoïdales de fréquences décroissantes :
\[ \text{PE}_{(\text{pos}, 2i)} = \sin\left( \frac{\text{pos}}{10000^{2i / d_{\text{model}}}} \right), \quad \text{PE}_{(\text{pos}, 2i+1)} = \cos\left( \frac{\text{pos}}{10000^{2i / d_{\text{model}}}} \right) \]Pourquoi sinus et cosinus ? Parce que cette paire permet d’exprimer un décalage de position (ex. : +3 mots) comme une transformation linéaire (une rotation). Cela aide le modèle à apprendre des relations relatives même sur des phrases plus longues que celles vues à l’entraînement.
L’entrée finale devient :
\[ X_{\text{input}} = X + \text{PE} \]Chaque mot porte désormais son sens + sa position une condition indispensable pour comprendre la grammaire par exemple.
Le cœur du Transformer est l’auto-attention : un mécanisme qui permet à chaque mot de « regarder » tous les autres y compris lui-même pour construire une représentation enrichie par le contexte. Et tout cela, en une seule étape parallèle.
Prenons « like » dans « I like Pizza ». Est-ce un verbe ? Un nom ? Seul le contexte le dit. L’auto-attention résout cela en posant une requête (Query) : « Quels mots m’aident à comprendre mon rôle ? ». En parallèle, chaque mot fournit :
On projette \( X_{\text{input}} \) dans trois espaces appris :
\[ Q = X_{\text{input}} W_Q, \quad K = X_{\text{input}} W_K, \quad V = X_{\text{input}} W_V \]On calcule ensuite la « compatibilité » entre chaque requête et chaque clé via un produit scalaire, normalisé par \( \sqrt{d_k} \) (pour stabiliser le softmax) :
\[ \text{Attention}(Q, K, V) = \text{softmax}\left( \frac{Q K^\top}{\sqrt{d_k}} \right) V \]Le résultat ? Une nouvelle représentation de chaque mot, où l’information pertinente est renforcée. Pour « like », cela pourrait être : 60 % de « I » (sujet), 30 % de « Pizza » (objet), 10 % de lui-même. Le modèle « sait » désormais que « like » est un verbe transitif une clé pour traduire correctement.
Une seule « vue » du contexte ne suffit pas. Un mot peut jouer plusieurs rôles : grammatical, sémantique, stylistique… Le Transformer utilise donc 8 têtes d’attention en parallèle.
Chaque tête a ses propres matrices \( W_Q^{(h)}, W_K^{(h)}, W_V^{(h)} \), et peut se spécialiser par exemple :
Les sorties sont concaténées, puis projetées dans l’espace original :
\[ \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \dots, \text{head}_8) \, W^O \]Cette combinaison permet au modèle de capturer une compréhension riche et multifacette essentielle pour choisir la traduction la plus naturelle.
L’auto-attention a permis aux mots d’« échanger ». Maintenant, chaque mot doit « réfléchir seul » à ce qu’il a entendu. C’est le rôle du FFN : un petit réseau à deux couches, appliqué indépendamment à chaque mot.
Formellement :
\[ \text{FFN}(x) = \max(0, x W_1 + b_1) W_2 + b_2 \]Avec :
On combine le résultat avec l’entrée via une connexion résiduelle, puis on normalise :
\[ x_{\text{out}} = \text{LayerNorm}\big( x + \text{FFN}(x) \big) \]Cette étape permet d’extraire des motifs complexes que l’attention seule ne pourrait pas modéliser.
L’encodeur est composé de 6 blocs identiques. Chaque bloc enchaîne :
À chaque passage, la représentation devient plus abstraite. À la fin, on obtient une matrice \( Z \in \mathbb{R}^{3 \times 512} \) qui encode :
Cette matrice \( Z \) est la « mémoire » que le décodeur consultera pour traduire.
Le décodeur est auto-régressif : il génère la phrase cible mot par mot, en utilisant ses propres prédictions précédentes.
Chaque bloc décodeur contient trois sous-couches :
1. Auto-attention masquée
Le décodeur s’auto-interroge, mais ne doit pas voir l’avenir. Pour cela, on applique un masque triangulaire inférieur \( M \), défini par :
L’attention devient alors :
\[ \text{MaskedMHA}(X_{\text{dec}}) = \text{softmax}\left( \frac{Q K^\top}{\sqrt{d_k}} + M \right) V \]Grâce à ce masque, quand le modèle prédit « aime », il ne voit que
2. Attention encodeur-décodeur (cross-attention)
Ici, le décodeur « consulte » la représentation encodée \( Z \) de la phrase source. Les requêtes (\( Q_{\text{dec}} \)) proviennent de la traduction partielle, tandis que les clés (\( K_{\text{enc}} \)) et valeurs (\( V_{\text{enc}} \)) proviennent directement de \( Z \) :
Quand il génère « aime », sa requête trouve que « like » est la partie la plus pertinente de \( Z \). Quand il génère « pizza », il se concentre sur « Pizza ». C’est ce pont sémantique entre les langues qui rend la traduction fidèle.
3. FFN
Enfin, comme dans l’encodeur, chaque mot passe par un réseau feed-forward pour un traitement non linéaire individuel :
suivi d’une connexion résiduelle et d’une normalisation par couche :
\[ x_{\text{out}} = \text{LayerNorm}\big( x + \text{FFN}(x) \big) \]Ce bloc complet — auto-attention masquée, cross-attention, FFN, avec résidus et normalisations — est répété 6 fois dans le décodeur.
La sortie du dernier bloc décodeur est projetée dans le vocabulaire cible :
\[ \text{logits}_t = y_t W_{\text{vocab}}^\top \]On applique un softmax pour obtenir une distribution de probabilité sur les mots :
\[ P(y_t = w) = \frac{\exp(\text{logits}_t[w])}{\sum_{w'} \exp(\text{logits}_t[w'])} \]Le mot le plus probable est sélectionné. Ainsi, le modèle génère successivement : « J’ » → « aime » → « la » → « pizza »
Le Transformer n’est pas qu’un algorithme. C’est le fondement des systèmes qui influencent aujourd’hui nos décisions, nos apprentissages, nos conversations. Comprendre son fonctionnement embeddings, attention, architecture permet de :
J’ai implémenté cette architecture en JAX/Flax ici.
En résumé, le Transformer excelle parce qu’il modélise les relations contextuelles de façon parallèle, expressive et modulaire. Conçu pour la traduction, il est devenu le socle de presque tous les modèles de langage modernes une preuve que parfois, une idée simple (« l’attention suffit ») peut changer le monde.
Pour approfondir vos connaissances et explorer des outils avancés, voici quelques ressources :
Ma recommandation musicale du jour : à écouter sans modération !
Écouter sur YouTube