Zubnet AIApprendreWiki › Initialisation des poids
Entraînement

Initialisation des poids

Xavier Init, Kaiming Init, He Init
Comment les poids du réseau de neurones sont fixés avant que l'entraînement ne commence. Une mauvaise initialisation peut faire échouer l'entraînement avant même qu'il ne commence (activations qui s'évanouissent ou explosent). Une bonne initialisation assure que les activations et gradients maintiennent des magnitudes raisonnables à travers les couches. L'initialisation Xavier (pour tanh/sigmoid) et l'initialisation Kaiming/He (pour ReLU) sont les standards, chacune calibrée pour la fonction d'activation.

Pourquoi c'est important

L'initialisation semble être un détail mineur mais c'est critique pour l'entraînement de réseaux profonds. Un réseau avec des poids initiaux aléatoires (trop grands) produit des activations qui explosent. Un avec des poids trop petits produit des activations qui s'évanouissent. Une initialisation correcte place le réseau dans une « zone Goldilocks » où les signaux traversent sans exploser ni s'évanouir — un prérequis pour que la descente de gradient fonctionne.

En profondeur

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.

Dans les Transformers

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.

Poids pré-entraînés

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.

← Tous les termes