La régression linéaire, en bas niveau
Un seul neurone entraîné par descente de gradient : le modèle, la fonction de coût, le gradient, et la solution analytique.
La régression linéaire est le point d’entrée classique du deep learning : un
seul neurone, sans fonction d’activation, entraîné par descente de gradient.
Comprendre son fonctionnement mécanique — pas juste model.fit() — donne les
bases de tout ce qui suit (réseaux profonds, backprop, optimiseurs).
Le modèle
On cherche une fonction affine qui approxime à partir de :
Avec plusieurs variables d’entrée, devient un vecteur, et également :
La fonction de coût
On mesure l’erreur sur tout le jeu d’entraînement avec l’erreur quadratique moyenne :
où est le nombre d’exemples. Le carré pénalise davantage les grosses erreurs et rend la fonction dérivable partout, contrairement à la valeur absolue.
Le gradient
Pour minimiser , on calcule sa dérivée par rapport à chaque paramètre. Pour :
Et pour :
La descente de gradient
On met à jour les paramètres dans la direction opposée au gradient, pondérée par un taux d’apprentissage :
On répète jusqu’à convergence. Un trop grand fait diverger l’entraînement ; trop petit, il converge mais très lentement.
Implémentation minimale
import numpy as np
def train(X, y, lr=0.01, epochs=1000):
m, n = X.shape
w = np.zeros(n)
b = 0.0
for _ in range(epochs):
y_hat = X @ w + b
error = y_hat - y
dw = (2 / m) * X.T @ error
db = (2 / m) * np.sum(error)
w -= lr * dw
b -= lr * db
return w, b
La solution analytique
Pour ce cas précis, il existe une solution exacte, sans itération : les équations normales.
Elle évite la descente de gradient entièrement, mais devient coûteuse quand est grand (inversion de matrice en ), ou impossible si n’est pas inversible. La descente de gradient, elle, se généralise directement aux réseaux profonds — c’est pour ça qu’on l’apprend en premier.