Aller au contenu principal

Régression linéaire : modèle et descente de gradient

Cette page explique le modèle prédictif et son ajustement itératif. La note sur les moindres carrés traite la solution fermée, les conditions de rang, l’incertitude statistique et les pénalités sur les coefficients.

Commençons par deux points et une droite. La pente incline la droite ; l’ordonnée à l’origine la déplace verticalement. Ajuster le modèle consiste à modifier ces deux nombres pour réduire les erreurs de prédiction. Essayez avant de passer aux matrices.

À vous d’essayer

Ajuster une droite à deux points

Les points verts sont les observations ; la droite bleue est votre prédiction. Réduisez les erreurs en pointillés avec les curseurs, puis essayez un pas de gradient. La MSE est la moyenne des erreurs au carré : plus elle est petite, mieux la droite s’ajuste à ces points.

xy01(0, 1)(1, 3)

ObservationsPrédiction

MSE 5.0000

5.00MSE après chaque pas0

ŷ = 0.000x + (0.000)∇L [b, w] = [-4.000, -3.000]

Essayez : repartez de zéro, faites un pas à 0.1, puis recommencez avec 1. Un grand pas peut augmenter l’erreur. Pouvez-vous ajuster la droite vous-même ?

Les paramètres restent entre −3 et 4. Un pas hors de cet intervalle est désactivé : réduisez le taux ou recommencez. La droite est coupée aux limites verticales du graphique. La lecture s’arrête après 60 pas, près de zéro ou si le panneau est masqué. Le mode à mouvements réduits conserve les pas manuels.
Voir le code · NumPy / JAX

L’interaction utilise JavaScript. Ces exemples Python reprennent les mêmes données et équations avec les valeurs initiales, pas celles des curseurs. JAX calcule le gradient de la perte avec jax.grad. Guide de différentiation JAX

Dans un nouveau projet local, enregistrez l’exemple dans demo.py. Installation CPU : uv init ai-lab → cd ai-lab → uv add numpy jax → uv run demo.py

import numpy as np

x = np.array([0., 1.])
y = np.array([1., 3.])
p = np.array([0., 0.]) # [b, w]

def loss(p):
return np.mean((p[1] * x + p[0] - y) ** 2)

def gradient(p):
error = p[1] * x + p[0] - y
return np.array([2 * error.mean(), 2 * (error * x).mean()])

p = p - 0.1 * gradient(p)
print(p, loss(p)) # [0.4, 0.3], 2.825

La régression linéaire prédit une cible numérique comme fonction affine des variables :

y^=x⊤w+b.\hat{y} = \mathbf{x}^{\top}\mathbf{w} + b.

Pour nn observations, les lignes sont rassemblées dans une matrice de conception X\mathbf{X}. Si l’ordonnée à l’origine est représentée par une colonne supplémentaire de 1, le modèle devient

y^=Xθ.\hat{\mathbf{y}} = \mathbf{X}\boldsymbol{\theta}.

Le mot « linéaire » se rapporte aux paramètres. Les variables peuvent inclure des transformations telles que des interactions ou des termes polynomiaux, tandis que le modèle reste linéaire en θ\boldsymbol{\theta}.

Objectif d’erreur quadratique​

Les moindres carrés ordinaires minimisent la somme des carrés des résidus, ou de manière équivalente l’erreur quadratique moyenne :

θ^=arg⁡min⁡θ1n∥Xθ−y∥22.\hat{\boldsymbol{\theta}} = \arg\min_{\boldsymbol{\theta}} \frac{1}{n}\left\|\mathbf{X}\boldsymbol{\theta}-\mathbf{y}\right\|_2^2.

La descente de gradient approche le même objectif par mises à jour successives. Elle convient notamment aux grands jeux de données et aux modèles intégrés à un système différentiable plus vaste.

Du résidu à la mise à jour​

Avec dd variables et une constante, XX est de forme n×(d+1)n\times(d+1) et θ\theta possède d+1d+1 composantes. La dérivée de la MSE ci-dessus donne

∇θL=2nX⊤(Xθ−y),θ←θ−η∇θL.\nabla_\theta L=\frac{2}{n}X^\top(X\theta-y), \qquad \theta\leftarrow\theta-\eta\nabla_\theta L.

Le taux d’apprentissage η>0\eta>0 règle l’amplitude du pas. Pour (x,y)=(0,1),(1,3)(x,y)=(0,1),(1,3), partons de (b,w)=(0,0)(b,w)=(0,0). Les erreurs « prédiction moins cible » Xθ−yX\theta-y valent [−1,−3][-1,-3] et le gradient, dans l’ordre (b,w)(b,w), vaut [−4,−3][-4,-3]. Avec η=0.1\eta=0.1, les paramètres deviennent (0.4,0.3)(0.4,0.3) et la MSE passe de 55 à 2.8252.825. L’ajustement exact est (b,w)=(1,2)(b,w)=(1,2). L’inférence évalue seulement wx+bwx+b, sans cible ni mise à jour des poids.

Échelle des variables et pas​

Passer des mètres aux millimètres multiplie les valeurs par 1 000. Sans ajuster poids et pas, la contribution de cette variable au gradient peut fortement augmenter. Ajuster centrage et échelle sur les données d’entraînement, puis réutiliser ces statistiques à la prédiction. Cela modifie la géométrie de l’optimisation, sans prouver la pertinence d’une relation linéaire.

La note sur le processus d’entraînement calcule une plage de stabilité pour un exemple quadratique et relie ces mises à jour aux mini-lots, au momentum et à la validation. Une perte d’entraînement réduite indique un progrès d’optimisation ; comparer l’erreur réservée à une prédiction constante fondée sur la moyenne d’entraînement avant de conclure à son utilité.

Limites de l’interprétation​

  • Un coefficient dépend des variables incluses dans le modèle et de leur échelle.
  • Une bonne prédiction n’établit pas de relation causale.
  • L’inférence statistique exige d’autres hypothèses que la seule minimisation de l’erreur quadratique ; prédiction et inférence sont des objectifs distincts.
  • La colinéarité peut rendre les coefficients instables même si les prédictions restent satisfaisantes.
  • L’extrapolation hors de la plage observée des variables dépend fortement de la forme fonctionnelle choisie.
  • Les graphiques des résidus et l’erreur hors échantillon révèlent des défaillances invisibles dans la perte d’entraînement.

La régression linéaire est utile à la fois comme modèle et comme référence. Une méthode plus complexe doit justifier son intérêt face à cette solution plus simple.

Pour un ajustement complet, les hypothèses d’incertitude et la régularisation, consultez les moindres carrés ordinaires. Cette note utilise la demi-MSE : son gradient de perte est la moitié de celui présenté ici. Comparez donc aussi les conventions d’échelle du taux d’apprentissage et des pénalités.

Poursuivez avec la régression softmax pour la classification en classes mutuellement exclusives. La principale référence externe est Dive into Deep Learning: Linear Neural Networks for Regression.

Explorer les liensOuvrir le réseau