Résumé
Ce cours étudie les algorithmes de descentes de gradient par batch et de gradient stochastique, ainsi que leur implémentation dans un réseau de neurones avec l’algorithme de rétro-propagation du gradient.
L’algorithme de descente de gradient ajuste des paramètres pour minimiser une fonction de coût, qui quantifie l’erreur entre la réponse estimée et la bonne réponse sur des données d’entraînement. Ces paramètres sont modifiés itérativement en soustrayant le gradient de la fonction de coût. Cet algorithme nécessite donc de calculer la variation du coût à la sortie du réseau relativement à la variation des paramètres du réseau. Dans un réseau de neurones, le coût se calcule par composition d’opérateurs linéaires ou de non-linéarités ponctuelles différentiables. La différentiation d’une composition d’opérateurs s’obtient en appliquant la règle de Leibniz. La propagation des dérivées se fait donc dans le réseau par multiplications successives de matrices Jacobiennes.
Le gradient est normalement calculé en moyenne sur un batch qui contient toutes les données d’entraînement, ce qui nécessite beaucoup de calculs. L’algorithme de descente de gradient stochastique réduit ce batch à un seul exemple pris au hasard dans la base de données. Dans le cas où la fonction de coût est strictement convexe, on démontre que l’algorithme de descente de gradient converge vers un minimum unique. La vitesse de convergence est exponentielle, avec un exposant qui dépend du conditionnement du Hessien.
L’algorithme de descente de gradient stochastique a une convergence beaucoup plus lente que l’algorithme par batch, car chaque itération est bruitée par la variabilité du gradient qui dépend de l’exemple particulier qui a été choisi. Cependant, lorsque la base de données est suffisamment grande, cet algorithme peut nécessiter moins d’opérations que la descente de gradient par batch pour approcher le minimum de la fonction de coût.