Types d'optimiseurs dans l'apprentissage en profondeur que tout ingénieur en intelligence artificielle devrait connaître

Publié: 2020-12-01

Table des matières

introduction

L'apprentissage en profondeur est une grande avancée par rapport à l'apprentissage automatique en termes de flexibilité, de précision accrue et d'un large éventail de possibilités dans les applications industrielles. Qu'il s'agisse d'une application de chat, de la correction automatique de la grammaire, de la traduction entre différentes langues, de la détection de fausses nouvelles ou de la rédaction automatique d'histoires basées sur certaines formulations initiales, l'apprentissage en profondeur trouve son utilisation dans presque tous les secteurs.

Avec une telle utilisation, il devient important que ces algorithmes fonctionnent avec un minimum de ressources afin que nous puissions réduire les coûts récurrents et fournir des résultats efficaces en moins de temps. Un optimiseur est une méthode ou un algorithme pour mettre à jour les différents paramètres qui peuvent réduire la perte avec beaucoup moins d'effort. Examinons quelques optimiseurs d'apprentissage en profondeur populaires qui fournissent des résultats acceptables.

Apprenez les cours AI ML des meilleures universités du monde. Gagnez des programmes de maîtrise, Executive PGP ou Advanced Certificate pour accélérer votre carrière.

Descente de gradient (GD)

Il s'agit de l'optimiseur le plus basique qui utilise directement la dérivée de la fonction de perte et du taux d'apprentissage pour réduire la perte et atteindre les minima. Cette approche est également adoptée dans la rétropropagation dans les réseaux de neurones où les paramètres mis à jour sont partagés entre différentes couches en fonction du moment où la perte minimale est atteinte. Il est facile à mettre en œuvre et à interpréter les résultats, mais il présente divers problèmes.

Les poids sont mis à jour lorsque l'ensemble du gradient du jeu de données est calculé, ce qui ralentit le processus. Il nécessite également une grande quantité de mémoire pour stocker ces données temporaires, ce qui en fait un processus gourmand en ressources. Bien que l'idée derrière cet algorithme soit bien adaptée, elle doit être peaufinée.

Descente de gradient stochastique

Il s'agit d'une version modifiée de la méthode GD, où les paramètres du modèle sont mis à jour à chaque itération. Cela signifie qu'après chaque échantillon d'apprentissage, la fonction de perte est testée et le modèle est mis à jour. Ces mises à jour fréquentes se traduisent par une convergence vers les minima en moins de temps, mais cela se fait au prix d'une variance accrue qui peut faire que le modèle dépasse la position requise.

Mais un avantage de cette technique est le faible besoin en mémoire par rapport à la précédente car il n'est plus nécessaire de stocker les valeurs précédentes des fonctions de perte.

Descente de gradient en mini-lot

Une autre variante de cette approche GD est le mini-lot, où les paramètres du modèle sont mis à jour en petits lots. Cela signifie qu'après tous les n lots, les paramètres du modèle seront mis à jour, ce qui garantit que le modèle progresse vers les minima en moins d'étapes sans dérailler souvent. Cela se traduit par une utilisation moindre de la mémoire et une faible variance dans le modèle.

Lire : Idées de projets d'apprentissage automatique

Descente de gradient basée sur l'élan

Revoyons la méthode que nous utilisons pour mettre à jour les paramètres. Sur la base de la dérivée du premier ordre de la fonction de perte, nous rétropropageons les gradients. La fréquence des mises à jour peut être après chaque itération, un lot ou à la fin, mais nous ne considérons pas le nombre de mises à jour que nous avons dans les paramètres.

Si cet élément d'historique est inclus dans les prochaines mises à jour, il peut accélérer l'ensemble du processus et c'est ce que signifie l'élan dans cet optimiseur. Cet élément d'histoire est comme la façon dont notre esprit mémorise les choses. Si vous marchez dans une rue et que vous parcourez une assez grande distance, alors vous serez sûr que votre destination est à une certaine distance et vous augmenterez votre vitesse.

Cet élément dépend de la valeur précédente, du taux d'apprentissage et d'un nouveau paramètre appelé gamma, qui contrôle cette mise à jour de l'historique. La règle de mise à jour sera quelque chose comme w = w – v, où v est l'élément historique.

Gradient accéléré Nesterov (NAG)

Le GD basé sur le momentum a donné un coup de pouce aux optimiseurs actuellement utilisés en convergeant vers les minima au plus tôt, mais il a introduit un nouveau problème. Cette méthode prend beaucoup de demi-tours et oscille dans la vallée des minima, ajoutant au temps total. Le temps pris est encore bien trop inférieur à la normale GD, mais ce problème nécessite également un correctif et cela se fait dans NAG.

L'approche suivie ici était que la mise à jour des paramètres serait d'abord effectuée avec l'élément d'historique, puis seule la dérivée est calculée, ce qui peut le déplacer vers l'avant ou vers l'arrière. C'est ce qu'on appelle l'approche anticipée, et cela a plus de sens car si la courbe atteint près des minima, alors la dérivée peut la faire bouger lentement afin qu'il y ait moins d'oscillations et donc gagner plus de temps.

Lisez aussi : Techniques d'apprentissage en profondeur que vous devez connaître

Adagrad

Jusqu'à présent, nous nous concentrons uniquement sur la façon dont les paramètres du modèle affectent notre formation, mais nous n'avons pas parlé des hyper-paramètres auxquels une valeur constante est attribuée tout au long de la formation. L'un de ces hyper-paramètres importants est le taux d'apprentissage et sa variation peut modifier le rythme de la formation.

Pour une entrée de caractéristiques clairsemées où la plupart des valeurs sont nulles, nous pouvons nous permettre un taux d'apprentissage plus élevé qui augmentera le gradient de mort résultant de ces caractéristiques clairsemées. Si nous avons des données denses, nous pouvons avoir un apprentissage plus lent.

La solution pour cela est d'avoir un taux d'apprentissage adaptatif qui peut changer en fonction de l'entrée fournie. L'optimiseur Adagrad essaie d'offrir cette adaptabilité en diminuant le taux d'apprentissage proportionnellement à l'historique mis à jour des gradients.

Cela signifie que lorsqu'il y a des mises à jour plus importantes, l'élément d'historique est accumulé, et donc cela réduit le taux d'apprentissage et vice versa. Un inconvénient de cette approche est que le taux d'apprentissage décroît de manière agressive et après un certain temps, il se rapproche de zéro.

RMSProp

C'est une amélioration de l'optimiseur Adagrad. Cela vise à réduire l'agressivité du taux d'apprentissage en prenant une moyenne exponentielle des gradients au lieu de la somme cumulée des gradients au carré. Le taux d'apprentissage adaptatif reste intact, car la moyenne exponentielle punira un taux d'apprentissage plus élevé dans des conditions où il y a moins de mises à jour et un taux plus faible dans un nombre plus élevé de mises à jour.

Adam

Adaptive Moment Estimation combine la puissance de RMSProp (root-mean-square prop) et de GD basé sur la quantité de mouvement. Dans les optimiseurs Adam, la puissance de momentum GD pour conserver l'historique des mises à jour et le taux d'apprentissage adaptatif fourni par RMSProp font de l'optimiseur Adam une méthode puissante. Il introduit également deux nouveaux hyper-paramètres beta1 et beta2 qui sont généralement maintenus autour de 0,9 et 0,99 mais vous pouvez les modifier en fonction de votre cas d'utilisation.

A lire : Régularisation dans le Deep Learning

Conclusion

Dans cet article, nous avons examiné 8 optimiseurs d'apprentissage en profondeur dans l'ordre de leur facilité d'utilisation et comment la limitation d'un optimiseur est surmontée par le suivant, et ainsi de suite. Il y a plus de modifications de l'un ou l'autre des optimiseurs mentionnés ici, mais ce sont les fondamentaux que vous devriez considérer avant d'opter pour des solutions complexes.

Choisir un gagnant parmi ceux-ci est très subjectif par rapport au cas d'utilisation et au problème auquel vous êtes confronté, mais on peut certainement classer Adam Optimizer au sommet en raison de sa combinaison avec le concept d'élan qui a changé la façon dont les paramètres du modèle doivent être mis à jour et en adaptant le changement. taux d'apprentissage pour différents scénarios permettant un traitement efficace de tous les types d'entrées.

Une tendance générale montre que pour une même perte, ces optimiseurs convergent vers des minima locaux différents. Alors que les optimiseurs d'apprentissage adaptatif convergent vers des minima plus nets, d'autres types de techniques convergent vers des minima plus plats, ce qui est meilleur pour la généralisation. Ces techniques ne peuvent aider que dans une certaine mesure, car à mesure que les réseaux de neurones profonds deviennent de plus en plus grands, des méthodes plus efficaces sont nécessaires pour obtenir de bons résultats.

Si vous êtes curieux de maîtriser l'apprentissage automatique et l'IA, boostez votre carrière avec notre Master of Science en Machine Learning & AI avec l'IIIT-B et l'Université John Moores de Liverpool.

Comment les optimiseurs fonctionnent-ils avec l'apprentissage en profondeur ?

Alors que les réseaux de neurones sont à la mode en ce moment, un optimiseur est quelque chose de beaucoup plus fondamental pour l'apprentissage d'un réseau de neurones. Alors que les réseaux de neurones peuvent apprendre par eux-mêmes, sans aucune connaissance préalable, un optimiseur est un programme qui s'exécute avec le réseau de neurones et lui permet d'apprendre beaucoup plus rapidement. En bref, il le fait en modifiant les paramètres du réseau neuronal de manière à rendre l'entraînement avec ce réseau neuronal beaucoup plus rapide et plus facile. Ces optimiseurs permettent aux réseaux de neurones de fonctionner en temps réel et la formation ne prend que quelques minutes. Sans eux, la formation prendrait facilement des jours.

Pourquoi est-il difficile d'optimiser les algorithmes de deep learning ?

Les systèmes d'apprentissage en profondeur sont généralement considérés comme difficiles à optimiser, car ils sont volumineux et complexes, impliquant souvent plusieurs couches et des non-linéarités. Les optimiseurs doivent gérer un énorme système, qui n'est pas facile à comprendre. Certains outils d'apprentissage en profondeur ne fournissent qu'un nombre limité de paramètres pouvant être réglés, ce qui limite leur utilité. Il existe cependant des moyens efficaces d'optimiser les modèles d'apprentissage en profondeur et d'améliorer leur généralisation.

Quels sont les différents optimiseurs en apprentissage profond ?

Dans l'apprentissage en profondeur, les optimiseurs sont utilisés pour ajuster les paramètres d'un modèle. Le but d'un optimiseur est d'ajuster les pondérations du modèle pour maximiser une fonction de perte. La fonction de perte est utilisée pour mesurer la performance du modèle. Un optimiseur doit être utilisé lors de la formation d'un modèle de réseau neuronal. Il existe une variété d'optimiseurs différents qui peuvent être utilisés avec un modèle d'apprentissage en profondeur. Certains des optimiseurs les plus populaires sont RMSprop, momentum et Adam