Skip to content

Le piège de l'échelle : pourquoi normaliser

Le module 3 a rencontré un cas réel de divergence causé par des features non standardisées. Cette leçon quantifie précisément pourquoi.

La fonction de coût MSE d’une régression, tracée en fonction de ses paramètres, dessine un bol : un minimum unique, entouré de parois qui remontent dans toutes les directions. La descente de gradient progresse d’autant plus vite que ce bol se rapproche d’une forme circulaire — un bol allongé façon « vallée étroite » ralentit ou déstabilise la progression, quelle que soit la direction empruntée.

Mesurer la forme du bol : le conditionnement

Section titled “Mesurer la forme du bol : le conditionnement”

La courbure du bol est entièrement décrite par la matrice hessienne du coût, H = XᵀX / m pour une régression linéaire. Son conditionnement (rapport entre sa plus grande et sa plus petite valeur propre) mesure à quel point le bol est allongé : un conditionnement de 1 signifie un bol parfaitement circulaire, un conditionnement élevé signifie un bol très allongé.

def condition_number(X):
H = X.T @ X / len(X)
eigvals = np.linalg.eigvalsh(H)
return eigvals.max() / eigvals.min(), eigvals
X_brut = np.column_stack([charge_cpu, np.ones(len(charge_cpu))])
X_std = np.column_stack([standardize(charge_cpu), np.ones(len(charge_cpu))])
cond_brut, eig_brut = condition_number(X_brut)
cond_std, eig_std = condition_number(X_std)
print("Valeurs propres (brut):", eig_brut, "conditionnement:", cond_brut)
print("Valeurs propres (standardise):", eig_std, "conditionnement:", cond_std)
Valeurs propres (brut): [2.02219351e-01 3.13035331e+03] conditionnement: 15479.988940211995
Valeurs propres (standardise): [1. 1.] conditionnement: 1.0

Sans standardisation, le conditionnement atteint 15 480 : un bol extrêmement allongé selon un axe. La descente de gradient, qui avance à pas égal dans toutes les directions, oscille violemment le long de l’axe étroit — c’est exactement le mécanisme derrière la divergence documentée au module 3, avec des valeurs de paramètres explosant jusqu’à 10¹⁵².

Après standardisation, le conditionnement vaut exactement 1 : le bol est parfaitement circulaire. La descente de gradient converge alors directement vers le minimum, quelle que soit la direction de départ — c’est ce qui a permis, au module 3, de multiplier le taux d’apprentissage par plus de 70 (de 0.0007 à 0.05) tout en gagnant en stabilité plutôt qu’en perdant.

Ce calcul de conditionnement, ici appliqué à une seule feature, se généralise directement à N features : plus les features ont des échelles hétérogènes, plus le conditionnement de XᵀX explose, et plus la standardisation devient indispensable avant tout entraînement par descente de gradient.

👉 Sortir de la séparation linéaire : la couche cachée


Junior TSAFACK – 12/09/2026