De nombreux ouvrages et tutoriels sur les réseaux de neurones consacrent beaucoup de temps à l'algorithme de rétropropagation, qui est essentiellement un outil permettant de calculer le gradient.
Supposons que nous construisons un modèle avec ~ 10K paramètres / poids. Est-il possible d'exécuter l'optimisation à l'aide d'algorithmes d'optimisation sans gradient?
Je pense que calculer le gradient numérique serait trop lent, mais qu’en est-il d’autres méthodes telles que Nelder-Mead, le recuit simulé ou un algorithme génétique?
Tous les algorithmes souffriraient de minima locaux, pourquoi être obsédé par le gradient?
Réponses:
Les deux premiers algorithmes que vous mentionnez (Nelder-Mead et Simulated Annealing) sont généralement considérés comme relativement obsolètes dans les cercles d’optimisation, car il existe de bien meilleures alternatives qui sont à la fois plus fiables et moins coûteuses. Les algorithmes génétiques couvrent un large éventail, et certains d'entre eux peuvent être raisonnables.
Toutefois, dans la classe plus large des algorithmes d’optimisation sans dérivées (MPO), beaucoup sont nettement meilleurs que ces "classiques", dans la mesure où il s’agissait d’un domaine de recherche actif au cours des dernières décennies. Ainsi, certaines de ces nouvelles approches pourraient-elles être raisonnables pour un apprentissage en profondeur?
Un article relativement récent comparant l’état de la technique est le suivant:
Ceci est un bel article qui présente de nombreuses informations intéressantes sur les techniques récentes. Par exemple, les résultats montrent clairement que les meilleurs optimiseurs locaux sont tous "basés sur un modèle" et utilisent différentes formes de programmation quadratique séquentielle (SQP).
Cependant, comme indiqué dans leur résumé "Nous constatons que la capacité de tous ces solveurs à obtenir de bonnes solutions diminue avec l’augmentation de la taille du problème." Pour donner une idée des nombres, pour tous les problèmes, les solveurs se voyaient attribuer un budget de 2 500 évaluations de fonctions et la taille des problèmes représentait un maximum de ~ 300 paramètres à optimiser. Au-delà des paramètres O [10], très peu de ces optimiseurs se sont très bien comportés, et même les meilleurs ont montré une baisse notable des performances à mesure que la taille du problème augmentait.
Donc, pour les problèmes très dimensionnels, les algorithmes du MPO ne sont tout simplement pas compétitifs par rapport aux algorithmes dérivés. Pour donner une certaine perspective, l’ optimisation basée sur les PDE (équations aux dérivées partielles) est un autre domaine qui présente des problèmes dimensionnels très élevés (par exemple, plusieurs paramètres pour chaque cellule d’une grande grille d’éléments finis 3D). Dans ce domaine, la " méthode adjointe " est l'une des méthodes les plus utilisées. Il s’agit également d’un optimiseur de gradient-descente basé sur la différenciation automatique d’un code de modèle avancé.
Le filtre le plus proche d’un optimiseur DFO de haute dimension est peut-être le filtre d’ensemble Kalman , utilisé pour assimiler des données dans des simulations complexes d’EDP, par exemple des modèles météorologiques. Fait intéressant, il s’agit essentiellement d’une approche SQP, mais avec une interprétation bayésienne-gaussienne (le modèle quadratique est donc défini positif, c’est-à-dire qu’il n’ya pas de point d'équilibre). Mais je ne pense pas que le nombre de paramètres ou d'observations dans ces applications soit comparable à ce que l'on voit dans l'apprentissage en profondeur.
Note secondaire (minima locaux): D'après le peu que j'ai lu sur l'apprentissage en profondeur, je pense que le consensus est qu'il s'agit de points de selle plutôt que de minima locaux, qui sont les plus problématiques pour les espaces de paramètres NN de grande dimension.
Par exemple, la revue récente de Nature indique que "Les résultats théoriques et empiriques récents suggèrent fortement que les minima locaux ne sont pas un problème grave en général. Au lieu de cela, le paysage est rempli d'un nombre combinatoire important de points de selle où la pente est nulle et courbes de surface dans la plupart des dimensions et courbes dans le reste. "
Une préoccupation connexe concerne l'optimisation locale par rapport à l'optimisation globale (par exemple, cette question est soulignée dans les commentaires). Même si je n’apprends pas en profondeur, le fait de suréquiper est certainement une préoccupation valable. À mon avis, les méthodes d'optimisation globales sont les mieux adaptées aux problèmes de conception technique qui ne dépendent pas fortement de données "naturelles". En ce qui concerne les problèmes d'assimilation de données, les minima globaux actuels pourraient facilement changer si de nouvelles données étaient ajoutées (mise en garde: mon expérience est concentrée dans les problèmes géoscientifiques, où les données sont généralement "rares" par rapport à la capacité du modèle).
Une perspective intéressante est peut-être
qui fournit des arguments semi-théoriques sur pourquoi et quand l'optimisation approximative peut être préférable en pratique.
Note finale (méta-optimisation): Bien que les techniques basées sur les gradients semblent prédominer pour les réseaux de formation, le MPO pourrait jouer un rôle dans les tâches de méta-optimisation associées.
Un exemple serait le réglage hyper-paramètre. (Il est intéressant de noter que les optimiseurs DFO basés sur des modèles de Rios & Sahinidis, qui ont fait leurs preuves, pourraient essentiellement être considérés comme résolvant une séquence de problèmes de conception d'expériences / surface de réponse .)
la source
Il y a toutes sortes d'algorithmes de recherche locaux que vous pouvez utiliser, la rétropropagation s'est révélée être le plus efficace pour les tâches plus complexes en général ; il y a des circonstances où d'autres recherches locales sont meilleures.
Vous pouvez utiliser l' escalade à démarrage aléatoire sur un réseau de neurones pour trouver rapidement une solution satisfaisante, mais il ne serait pas faisable de trouver une solution presque optimale.
Wikipedia (je sais, pas la plus grande source, mais quand même) dit
la source
En ce qui concerne les algorithmes génétiques, je verrais Backpropagation vs algorithme génétique pour la formation de réseau neuronal
Le principal argument que je voudrais faire valoir pour Backprop est qu’il est très largement utilisé et qu’il a apporté de nombreuses améliorations . Ces images montrent vraiment quelques-uns des progrès incroyables de la rétro-propagation de vanille.
Je ne penserais pas que backprop soit un algorithme, mais une classe d'algorithmes.
J'aimerais également ajouter que pour les réseaux de neurones, les paramètres 10k sont de petits haricots. Une autre recherche fonctionnerait très bien, mais sur un réseau profond avec des millions de paramètres, ce n’est guère pratique.
la source
Eh bien, les réseaux de neurones d'origine, avant la révolution de la rétropropagation des années 70, ont été "formés" à la main. :)
Cela étant dit:
Il existe une «école» d’apprentissage automatique appelée machine d’apprentissage extrême qui n’utilise pas la rétropropagation.
Ce qu'ils font est de créer un réseau de neurones avec un très grand nombre de nœuds (avec des poids aléatoires), puis de former la dernière couche en utilisant des carrés minimaux (comme une régression linéaire). Ils éliminent ensuite le réseau de neurones par la suite ou appliquent une régularisation à la dernière étape (comme un lasso) pour éviter les surajustements. J'ai vu cela s'appliquer aux réseaux de neurones avec une seule couche cachée. Il n'y a pas d'entraînement, donc c'est super rapide. J'ai fait des tests et étonnamment, ces réseaux de neurones "entraînés" de cette façon sont assez précis.
La plupart des gens, du moins ceux avec qui je travaille, traitent cette école "d'apprentissage" avec dérision et ils forment un groupe exclu avec leurs propres conférences, etc., mais je pense en fait que c'est un peu naïf.
Un autre point: dans la rétropropagation, il existe des alternatives rarement mentionnées, comme la rétroproposition résiliente , qui sont implémentées dans R dans le
neuralnet
package, qui utilisent uniquement l’ampleur de la dérivée. L'algorithme est constitué de conditions if-else au lieu d'algèbre linéaire. Ils présentent certains avantages par rapport à la rétropropagation traditionnelle, à savoir que vous n’avez pas besoin de normaliser vos données car ils ne souffrent pas du problème du gradient en voie de disparition .la source
Vous pouvez utiliser à peu près n'importe quel algorithme d'optimisation numérique pour optimiser les poids d'un réseau de neurones. Vous pouvez également utiliser des algorithmes d’optimisation mixtes continus et discrets pour optimiser non seulement les poids, mais également la présentation elle-même (nombre de couches, nombre de neurones dans chaque couche, même type de neurone). Cependant, il n'y a pas d'algorithme d'optimisation qui ne souffre pas de "malédiction de dimensionnalité" et d'optimas locaux d'une manière ou d'une autre
la source
Vous pouvez également utiliser un autre réseau pour indiquer comment les paramètres doivent être mis à jour.
Il existe les interfaces de neurones découplées (DNI) de Google Deepmind. Au lieu d'utiliser la rétropropagation, il utilise un autre ensemble de réseaux de neurones pour prédire comment mettre à jour les paramètres, ce qui permet une mise à jour parallèle et asynchrone des paramètres.
Le document montre que le DNI augmente la vitesse de formation et la capacité modèle des RNN, et donne des résultats comparables pour les RNN et les FFNN pour diverses tâches.
Le document a également énuméré et comparé de nombreuses autres méthodes autres que la rétropropagation
la source
Tant que cette question concerne la communauté, j'ai pensé ajouter une autre réponse. "Back Propagation" est simplement l'algorithme de descente de gradient. Cela implique d'utiliser uniquement la première dérivée de la fonction pour laquelle on cherche à trouver les minima ou les maxima locaux. Il existe une autre méthode appelée méthode de Newton ou Newton-Raphson qui consiste à calculer la hesse et à utiliser ainsi des dérivées secondes. Il peut réussir dans les cas où la descente de gradient échoue. D’autres me disent plus compétents que moi, et c’est un appel de seconde main à l’autorité, qu’il n’est pas utilisé dans les réseaux neuronaux, car le calcul de toutes les dérivées secondes est trop coûteux en termes de calcul.
la source