Le principe central : initialiser les poids de sorte que la variance des activations soit approximativement constante à travers les couches. Si chaque couche amplifie le signal (la variance croît), les activations explosent. Si chaque couche le diminue (la variance décroît), les activations s'évanouissent. L'initialisation Xavier fixe les poids à une variance 2/(fan_in + fan_out). L'initialisation Kaiming fixe la variance à 2/fan_in, tenant compte du fait que ReLU met à zéro la moitié des valeurs.
Les Transformers modernes utilisent souvent une initialisation mise à l'échelle : les poids de projection de sortie dans les couches d'attention et FFN sont initialisés avec un écart-type mis à l'échelle par 1/√(2×nombre_de_couches). Ça empêche le flux résiduel de devenir trop grand à mesure que les contributions de nombreuses couches s'accumulent. GPT-2 et beaucoup de modèles suivants utilisent cette approche « scaled init ». Certaines architectures (comme muP/maximal update parameterization) poussent ça plus loin avec des règles de mise à l'échelle dérivées mathématiquement.
Pour la plupart des usages pratiques, l'initialisation à partir de zéro est rare — tu pars de poids pré-entraînés et tu fine-tunes. Mais l'initialisation compte toujours pour les nouveaux composants : les adaptateurs LoRA, les nouvelles têtes de classification, ou les embeddings de vocabulaire étendus. L'initialisation à zéro pour la matrice B de LoRA (pour que l'adaptateur commence comme identité) et une initialisation correcte pour les nouveaux embeddings de tokens (typiquement en copiant la moyenne des embeddings existants) sont des patterns courants qui empêchent les nouveaux composants de perturber le modèle pré-entraîné au début du fine-tuning.