Descente de Gradient
Minimisation itérative de fonctions
Enonce
Implémenter la descente de gradient. Tester sur $f(x,y)=x^2+4y^2$ (minimum en $(0,0)$) et observer l'effet du learning rate.
Signature attendue
def descente_gradient(grad_f, x0, lr: float, max_iter: int) -> list:
Exemple
[round(float(v), 4) for v in descente_gradient(lambda v: 2 * v, [3.0, 2.0], 0.1, 50)[0]]→[0.0, 0.0]
📖 Rappel de cours
La descente de gradient minimise une fonction $f$ en se déplaçant dans la direction opposée au gradient.
Itération :
$x_{n+1} = x_n - \eta \, \nabla f(x_n)$
Taux d'apprentissage $\eta$ :
Trop grand → divergence. Trop petit → convergence très lente.
Pour $f$ convexe et $L$-lisse : convergence en $O(1/\varepsilon)$ itérations avec $\eta < 1/L$.
⚠ Le piège : Le taux d'apprentissage est le seul réglage qui compte : trop petit, la convergence n'en finit pas ; trop grand, les itérations divergent en oscillant. Sur une fonction dont les courbures diffèrent selon les axes, le chemin zigzague — c'est visible en traçant l'historique des points.
← Exercices d'IA et d'apprentissage automatique en Python — CPGE
Exercices du meme theme
- K-Means Clustering
- Régression Linéaire
- Perceptron Simple
- Matrice de Confusion et Métriques
- Validation Croisée k-fold
- Arbre de Décision Simple
La correction commentee, les indices progressifs, l'execution du code dans le navigateur et la verification par l'IA sont reserves aux abonnes.