Skip to content

Fonction de coût et descente de gradient

Un modèle avec des paramètres theta tirés au hasard prédit n’importe quoi. Pour l’améliorer, il faut d’abord savoir mesurer à quel point il se trompe. En régression, la mesure la plus courante est l’erreur quadratique moyenne (MSE) :

def cost_function(X, y, theta):
m = len(y)
return (1 / (2 * m)) * np.sum((model(X, theta) - y) ** 2)

Le carré pénalise davantage les grosses erreurs que les petites ; le 1/(2m) est une convention qui simplifie la dérivée (le facteur 2 du carré s’annule avec le 1/2).

Le gradient de la fonction de coût indique, pour chaque paramètre, la direction dans laquelle augmenter le coût. Pour le réduire, il suffit donc d’avancer dans la direction opposée. Pour ce coût MSE particulier, le gradient a une forme fermée simple :

def grad(X, y, theta):
m = len(y)
return (1 / m) * X.T @ (model(X, theta) - y)
def gradient_descent(X, y, theta, learning_rate, n_iterations):
cost_history = np.zeros(n_iterations)
for i in range(n_iterations):
theta = theta - learning_rate * grad(X, y, theta)
cost_history[i] = cost_function(X, y, theta)
return theta, cost_history

À chaque itération, theta se déplace un peu dans la direction opposée au gradient. Le learning_rate (taux d’apprentissage) contrôle l’amplitude de ce déplacement — un paramètre qui va s’avérer plus délicat à régler qu’il n’y paraît, comme le montre la leçon suivante.

Deux hyperparamètres, pas des paramètres

Section titled “Deux hyperparamètres, pas des paramètres”

learning_rate et n_iterations ne sont pas appris par le modèle : ce sont des hyperparamètres, choisis par la personne qui entraîne le modèle, avant l’entraînement. Bien les régler est justement l’objet de la prochaine leçon.

👉 Diagnostiquer l’entraînement : le piège du taux d’apprentissage


Junior TSAFACK – 12/09/2026