La rétropropagation nous donne des gradients - mais des gradients de quoi ? Avant que la rétropropagation puisse s'exécuter, nous avons besoin d'un seul nombre qui capture à quel point le modèle se trompe. Ce nombre provient d'une fonction de perte. Une fois que nous avons les gradients, un optimiseur décide comment mettre à jour les poids. Ensemble, ils forment la boucle d'apprentissage.
Une fonction de perte (également appelée fonction de coût) prend la prédiction du modèle et la vraie réponse, et renvoie un nombre mesurant le « degré d'erreur ». L'objectif de l'entraînement est de minimiser ce nombre.
Pensez-y comme un score au golf - plus c'est bas, mieux c'est. Une perte de 0 signifie une prédiction parfaite.
Lorsqu'on prédit des valeurs continues (prix immobiliers, température), on utilise l'erreur quadratique moyenne (MSE) :
MSE = (1/n) × Σ(prédit - réel)²
Élever au carré fait deux choses : cela rend toutes les erreurs positives, et cela pénalise de manière disproportionnée les grandes erreurs. Prédire un prix immobilier avec 100 000 € d'écart produit une erreur au carré 100 fois pire qu'un écart de 10 000 €.
MSE remonte à Carl Friedrich Gauss en 1795 - plus de deux siècles avant les réseaux de neurones. Il l'a utilisée pour suivre l'orbite de l'astéroïde Cérès.
Lorsqu'on prédit des catégories (spam ou non, chat vs chien), on utilise la perte d'entropie croisée. Elle mesure à quel point les probabilités prédites par le modèle sont éloignées des vraies étiquettes.
Si la bonne réponse est « chat » et que le modèle dit 99 % chat, la perte est minuscule. S'il dit 10 % chat, la perte est énorme. L'entropie croisée a une propriété utile : elle devient infiniment mécontente lorsque le modèle se trompe avec confiance, créant un gradient fort pour corriger l'erreur.
L'entropie croisée binaire est destinée aux problèmes à deux classes. L'entropie croisée catégorielle gère plusieurs classes en comparant les distributions de probabilités.
Sign in to join the discussion
Pourquoi MSE est-elle un mauvais choix pour les tâches de classification ?
Avec une fonction de perte définie, nous pouvons visualiser le paysage de la perte - une surface où chaque point représente un ensemble de poids et la hauteur correspond à la perte. Entraîner le modèle revient à trouver la vallée la plus profonde.
La descente de gradient est l'algorithme qui nous y mène :
La taille de chaque pas est contrôlée par le taux d'apprentissage - sans doute l'hyperparamètre le plus important de l'apprentissage profond.
Imaginez que vous descendiez une montagne dans le brouillard et que vous ne puissiez sentir que la pente directement sous vos pieds. Vous faites des pas vers le bas, mais vous ne voyez pas l'ensemble du paysage. Comment pourriez-vous vous retrouver dans un petit creux qui n'est pas la vallée la plus profonde ? C'est le problème du minimum local.
Calcule le gradient en utilisant l'ensemble du jeu de données avant chaque mise à jour. Précis mais terriblement lent pour les grands ensembles de données - imaginez relire chaque livre d'une bibliothèque avant de corriger une seule faute d'orthographe.
Met à jour les poids après chaque exemple individuel. Rapide mais bruitée - le chemin zigzague fortement. Le bruit peut en fait aider à s'échapper des minima locaux, ce qui est un avantage surprenant.
Le compromis idéal en pratique. Calcule les gradients sur un petit lot (généralement 32 à 512 exemples). Offre un équilibre entre vitesse et stabilité, et c'est ce que la quasi-totalité des entraînements modernes utilise.
La SGD simple a des limites. Les chercheurs ont développé des optimiseurs plus intelligents qui s'adaptent au fil de l'entraînement.
Comme une lourde balle roulant en descente, le momentum accumule de la vitesse dans les directions cohérentes et amortit les oscillations. Si le gradient pointe constamment dans la même direction, le momentum accélère. S'il change constamment de direction, le momentum le lisse.
Adapte le taux d'apprentissage par paramètre. Les poids fréquemment mis à jour reçoivent des pas plus petits ; les poids rarement mis à jour reçoivent des pas plus grands. Excellent pour les données éparses (comme le texte), mais le taux d'apprentissage peut diminuer jusqu'à zéro au fil du temps.
Combine le momentum et les taux adaptatifs par paramètre. Il maintient des moyennes glissantes du gradient (premier moment) et du gradient au carré (second moment). Adam est le choix par défaut pour la plupart des praticiens aujourd'hui.
Quel avantage Adam a-t-il par rapport à la SGD de base ?
Plutôt que de fixer le taux d'apprentissage, l'entraînement moderne le planifie souvent :
L'intuition : faire de grands pas au début pour explorer largement, puis de petits pas ensuite pour affiner.
Parfois, les gradients explosent (comme nous l'avons vu dans la leçon sur la rétropropagation). L'écrêtage des gradients plafonne la magnitude du gradient avant l'étape de mise à jour. Si le gradient dépasse un seuil, il est réduit proportionnellement. C'est une pratique standard lors de l'entraînement des RNN et des Transformers.
Que prévient l'écrêtage des gradients ?
L'article sur l'optimiseur Adam (Kingma & Ba, 2014) compte plus de 150 000 citations, ce qui en fait l'un des articles les plus cités de toute l'informatique.
Si vous entraîniez un modèle et que la perte cessait de diminuer après quelques epochs, qu'examineriez-vous en premier - le taux d'apprentissage, la fonction de perte ou les données ? Pourquoi ?