GloVe (Global Vectors for Word Representation)
Origine et contexte
GloVe a été présenté en 2014 par Jeffrey Pennington, Richard Socher et Christopher Manning au sein du Stanford NLP Group. Le papier fondateur, publié à la conférence EMNLP, proposait une approche qui combine les avantages de deux familles de méthodes alors dominantes : les modèles de factorisation matricielle globale (type LSA) et les modèles prédictifs à fenêtre locale (type Word2Vec).
L’intuition centrale de GloVe repose sur une observation simple mais puissante : les rapports de probabilités de co-occurrence entre mots encodent naturellement des relations sémantiques. Par exemple, le rapport P(solide | glace) / P(solide | vapeur) sera élevé, tandis que P(eau | glace) / P(eau | vapeur) sera proche de 1. Ces rapports révèlent la structure sémantique du langage de manière plus fiable que les probabilités brutes.
Comment fonctionne GloVe
Construction de la matrice de co-occurrence
La première étape consiste à parcourir l’intégralité du corpus pour construire une matrice X, où chaque entrée X_ij représente le nombre de fois que le mot j apparaît dans le contexte du mot i (défini par une fenêtre glissante). Contrairement à Word2Vec qui traite le corpus mot par mot, GloVe agrège d’abord toutes les statistiques globales, ce qui lui donne son nom de Global Vectors.
Fonction de coût
GloVe optimise une fonction de coût qui force le produit scalaire de deux vecteurs de mots à être proportionnel au logarithme de leur probabilité de co-occurrence. La formule clé est :
J = Σ f(X_ij) * (w_i^T * w_j + b_i + b_j - log(X_ij))²
La fonction de pondération f(X_ij) empêche les co-occurrences très fréquentes de dominer l’entraînement. Elle plafonne à 1 pour les valeurs supérieures à un seuil x_max (typiquement 100) et suit une courbe en puissance 3/4 en dessous.
Entraînement
L’algorithme utilise une descente de gradient stochastique (SGD) ou AdaGrad pour minimiser cette fonction de coût. Pour chaque mot du vocabulaire, GloVe produit deux vecteurs (un vecteur « mot » et un vecteur « contexte »). Le vecteur final utilisé est la somme des deux, ce qui améliore la qualité des représentations.
Vecteurs pré-entraînés disponibles
Stanford distribue plusieurs jeux de vecteurs pré-entraînés sur le site officiel du projet :
| Corpus | Tokens | Vocabulaire | Dimensions |
|---|---|---|---|
| Wikipedia 2014 + Gigaword 5 | 6 milliards | 400K mots | 50, 100, 200, 300 |
| Common Crawl (42B) | 42 milliards | 1,9M mots | 300 |
| Common Crawl (840B) | 840 milliards | 2,2M mots | 300 |
| 27 milliards | 1,2M mots | 25, 50, 100, 200 | |
| Dolma (2024) | 220 milliards | 1,2M mots | 100, 200, 300 |
Les vecteurs entraînés sur le Common Crawl 840B restent parmi les plus utilisés pour les tâches de NLP classiques. En 2024, Stanford a publié de nouveaux vecteurs entraînés sur le corpus Dolma (220 milliards de tokens), ce qui montre que le projet reste maintenu.
GloVe vs Word2Vec
La question du choix entre GloVe et Word2Vec a longtemps animé la communauté NLP. Voici les différences fondamentales :
| Critère | GloVe | Word2Vec |
|---|---|---|
| Approche | Statistiques globales de co-occurrence | Prédiction locale (CBOW / Skip-gram) |
| Données exploitées | Matrice complète du corpus | Fenêtres contextuelles locales |
| Entraînement | Factorisation matricielle pondérée | Réseau de neurones peu profond |
| Gestion des mots rares | Limité au vocabulaire vu | Limité au vocabulaire vu |
| Sous-mots | Non | Non (sauf via FastText) |
| Parallélisation | Naturellement parallélisable | Possible mais moins direct |
| Résultats empiriques | Comparable à Word2Vec | Comparable à GloVe |
Dans la pratique, les performances de GloVe et Word2Vec sont très proches sur la majorité des benchmarks. Le choix dépend souvent de l’écosystème : GloVe est distribué sous forme de fichiers texte faciles à charger, tandis que Word2Vec est intégré nativement dans Gensim.
Limites de GloVe
Malgré son élégance mathématique, GloVe présente plusieurs limitations significatives qui expliquent pourquoi il a été largement supplanté par les modèles basés sur les Transformers :
Représentations statiques. Un mot reçoit le même vecteur quel que soit le contexte. Le mot « avocat » aura le même embedding qu’il désigne le fruit ou le professionnel du droit. Les modèles comme BERT résolvent ce problème en produisant des embeddings contextuels.
Vocabulaire fermé. GloVe ne peut pas traiter les mots absents du vocabulaire d’entraînement (Out-of-Vocabulary). FastText a résolu ce problème en travaillant au niveau des sous-mots (n-grams de caractères).
Pas de compréhension syntaxique profonde. Les analogies vectorielles (roi – homme + femme = reine) fonctionnent sur certains exemples canoniques, mais échouent sur des relations plus complexes.
Biais hérités du corpus. Les vecteurs GloVe encodent les biais présents dans les données d’entraînement (stéréotypes de genre, biais culturels). Des travaux de recherche ont montré que les embeddings associaient systématiquement certaines professions à un genre.
Cas d’usage encore pertinents
Bien que les LLM aient pris le relais pour la majorité des tâches NLP, GloVe conserve des niches d’utilisation :
Prototypage rapide. Charger des vecteurs pré-entraînés GloVe prend quelques secondes, sans GPU. Pour une preuve de concept rapide de classification de texte ou de recherche de similarité, c’est un choix pragmatique.
Ressources limitées. Sur des environnements contraints (IoT, embarqué, petits serveurs), les embeddings statiques de 300 dimensions pèsent incomparablement moins qu’un modèle BERT de 110M de paramètres.
Initialisation de modèles. GloVe est encore utilisé comme couche d’initialisation des embeddings dans certains modèles de deep learning, avant un fine-tuning spécifique à la tâche.
Recherche et enseignement. GloVe reste un excellent outil pédagogique pour comprendre les fondements des représentations vectorielles. L’algorithme est suffisamment simple pour être implémenté from scratch.
Utilisation pratique
Voici comment charger des vecteurs GloVe en Python avec quelques lignes de code :
import numpy as np
def load_glove(path, dim=300):
embeddings = {}
with open(path, 'r', encoding='utf-8') as f:
for line in f:
values = line.split()
word = values[0]
vector = np.asarray(values[1:], dtype='float32')
embeddings[word] = vector
return embeddings
# Charger les vecteurs 300d
glove = load_glove('glove.6B.300d.txt')
# Vérifier la similarité cosinus
from numpy.linalg import norm
def cosine_sim(a, b):
return np.dot(a, b) / (norm(a) * norm(b))
print(cosine_sim(glove['king'], glove['queen']))
# Résultat typique : ~0.75
Pour une utilisation en production, les bibliothèques comme Gensim, spaCy ou la classe torchtext.vocab.GloVe de PyTorch offrent des interfaces optimisées avec chargement paresseux et indexation rapide.
GloVe face aux Transformers
L’arrivée de BERT en 2018 a profondément changé le paysage. Les embeddings contextuels produits par les Transformers surpassent GloVe sur pratiquement tous les benchmarks NLP. En 2026, les LLM comme GPT-4, Claude ou Gemini intègrent leurs propres représentations internes, rendant les embeddings statiques pré-entraînés moins pertinents pour les tâches avancées.
Pour les tâches de recherche sémantique et de similarité de phrases, les Sentence Transformers ont complètement remplacé la moyenne de vecteurs GloVe, avec des gains de performance considérables.
Questions fréquentes sur GloVe
Quelle est la différence entre GloVe et Word2Vec ?
GloVe exploite les statistiques globales de co-occurrence du corpus entier via une factorisation matricielle pondérée, tandis que Word2Vec apprend les représentations par prédiction locale (fenêtre contextuelle). En pratique, les deux produisent des résultats comparables sur la plupart des benchmarks, mais GloVe est souvent plus rapide à entraîner sur de très grands corpus grâce à sa parallélisation naturelle.
GloVe est-il encore utilisé en 2026 ?
Oui, mais dans des niches spécifiques. GloVe reste pertinent pour le prototypage rapide, les environnements à ressources limitées, l’initialisation d’embeddings dans des modèles de deep learning, et l’enseignement. Pour les applications de production exigeantes, les embeddings contextuels (BERT, Sentence Transformers) ou les API d’embeddings des LLM sont préférés.
Comment choisir la dimension des vecteurs GloVe ?
Les dimensions 100 et 300 sont les plus courantes. Les vecteurs 300d offrent les meilleures performances sur les benchmarks d’analogie et de similarité. Les vecteurs 50d ou 100d conviennent pour le prototypage ou les environnements contraints. Au-delà de 300 dimensions, les gains sont marginaux.
GloVe gère-t-il les mots inconnus (OOV) ?
Non. Si un mot n’est pas présent dans le vocabulaire d’entraînement, GloVe ne peut pas produire de vecteur pour ce mot. C’est l’une de ses principales limites. FastText résout ce problème en décomposant les mots en sous-mots (n-grams de caractères), ce qui permet de générer des embeddings même pour des mots jamais vus.
Où télécharger les vecteurs pré-entraînés GloVe ?
Les vecteurs officiels sont disponibles sur le site du Stanford NLP Group (nlp.stanford.edu/projects/glove/). Vous y trouverez des vecteurs entraînés sur Wikipedia, Common Crawl et Twitter, dans différentes dimensions (25 à 300). En 2024, de nouveaux vecteurs entraînés sur le corpus Dolma ont été ajoutés.