Pilier 6

Descente de gradient — la bille qui descend la pente

Idée

Imagine une bille posee sur le flanc d'une colline accidentee : à chaque instant, elle bouge un peu dans la direction de la plus grande pente vers le bas.

Pourquoi

Imagine une bille posee sur le flanc d'une colline accidentee : à chaque instant, elle bouge un peu dans la direction de la plus grande pente vers le bas. C'est exactement ce que font les pas de mise a jour $W \leftarrow W - \alpha \cdot dW$ et $b \leftarrow b - \alpha \cdot db$ ou $\alpha$ est le learning_rate. Mecaniquement, c'est l'analogue continu $\dot{W}(t) = -\nabla \mathcal{L}(W(t))$ d'une particule sans inertie dans le potentiel $\mathcal{L}$, vu en mecanique L1 ; la version discrète est l'algorithme d'Euler explicite avec pas $\alpha$. Attention : le pas $\alpha$ est le paramètre le plus capricieux : trop grand, la bille saute la cuvette ; trop petit, elle n'arrive jamais. C'est l'hyperparamètre qu'on ajuste en premier.

Outil

Analogue continu $\dot{W}(t) = -\nabla \mathcal{L}(W(t))$ d'une particule sans inertie dans le potentiel $\mathcal{L}$ ; version discrète = schéma d'Euler explicite avec pas $\alpha$.

Formule

Notant $\alpha$ le learning_rate (taux d'apprentissage) et $dW = \partial \mathcal{L}/\partial W$, $db = \partial \mathcal{L}/\partial b$, la mise a jour SGD du perceptron est : $$W \leftarrow W - \alpha \cdot dW, \qquad b \leftarrow b - \alpha \cdot db.$$ Le PDF utilise $\alpha = 0{,}1$ pour la version Numpy (p6) et $\alpha = 1{,}1$ pour la version Pytorch (p6, apprentissage_t) — la difference est volontaire pour distinguer visuellement les deux courbes d'erreur. La version Pytorch passe par optim.SGD([Wt, bt], lr=alpha) puis optimizer.step().

Piège

Intuition trompeuse : le learning rate $\alpha$ contrôle la 'vitesse' de descente, donc 'grand $\alpha$ = grand pas = vite'. La réalité : si $\alpha$ dépasse une valeur critique (liée à la plus grande valeur propre du Hessien de la loss), le pas dépasse le minimum à chaque itération et la loss diverge (oscille puis explose). Le bon $\alpha$ est un compromis : assez grand pour ne pas stagner, assez petit pour ne pas exploser.