Backpropagation vs algorithme génétique pour la formation de réseaux de neurones


34

J'ai lu quelques articles sur les avantages et les inconvénients de chaque méthode, certains affirmant que l'AG n'apporte aucune amélioration dans la recherche de la solution optimale, tandis que d'autres montrent que celle-ci est plus efficace. Il semble que le GA soit généralement préféré dans la littérature (bien que la plupart des gens le modifient d’une manière ou d’une autre pour obtenir les résultats dont ils ont besoin), alors pourquoi la majorité des solutions logicielles semblent-elles utiliser uniquement la rétropropagation?

Existe-t-il une règle générale quand utiliser l'une ou l'autre? Cela dépend peut-être du type de NN ou existe-t-il une solution de pointe qui surpasse généralement les autres?

Si possible, je cherche des réponses générales: "si le NN est énorme, GA est meilleur", ou "GA est toujours meilleur mais a des problèmes de performances de calcul" etc ...

Réponses:


23

Si vous examinez attentivement la littérature scientifique, vous constaterez des résultats contrastés. Évidemment, dans certains cas, GA (et plus généralement, Evolutionary Algorithms) peut vous aider à trouver une conception NN optimale, mais ils présentent normalement de nombreux inconvénients (réglage des paramètres de l'algorithme, complexité de calcul, etc.) et leur utilisation est irréalisable. applications mondiales. Bien sûr, vous pouvez trouver un ensemble de problèmes où GA / EA est toujoursmieux que la rétropropagation. Étant donné que la recherche d'une conception optimale de la notation réseau est un problème complexe d'optimisation multimodale, les GA / EA peuvent aider (comme les métaheuristiques) à améliorer les résultats obtenus avec des algorithmes "traditionnels", par exemple en utilisant des GA / EA pour ne trouver que la configuration initiale des poids ou en aidant les algorithmes traditionnels à: échapper aux minima locaux (si vous êtes intéressé, j’ai écrit un article sur ce sujet).

J'ai beaucoup travaillé sur ce domaine et je peux vous dire qu'il existe de nombreux travaux scientifiques sur les GA / EA appliqués aux NN parce qu'ils sont (ou mieux, ils étaient) un domaine de recherche émergent.


2
C’est quelque chose que j’ai récemment proposé: trouver d’abord une «bonne» solution, puis l’améliorer davantage avec l’AG. Non seulement applicable aux NN, mais à l'optimisation en général ...
samedi

1
Je suis confus pourquoi ils s'excluent mutuellement. Je pensais que GA était censé apprendre la structure; La propagation de dos ne peut apprendre que les poids
pete

8

L'un des principaux problèmes des réseaux de neurones est la sur-adaptation, ce qui signifie que les algorithmes qui tentent très difficilement de trouver un réseau qui minimise un critère basé sur un échantillon limité de données aboutiront à un réseau qui fonctionnera très bien pour cet échantillon particulier. de données, mais qui aura une faible généralisation. Pour cette raison, je me méfie plutôt de l’utilisation des GA pour concevoir des réseaux de neurones, en particulier s’ils optimisent l’architecture en même temps que les poids. J'ai généralement constaté que la formation de réseaux (avec régularisation) à partir d'un nombre (par exemple, 20) de vecteurs de pondération initiale aléatoires, puis la formation d'un ensemble de tous les réseaux résultants est généralement une approche aussi efficace que n'importe laquelle.

En gros, l’optimisation est la racine de tous les maux de l’apprentissage automatique. Plus vous en faites, plus vous risquez de sur-ajuster les données.


Dikran, bien que GA opère une sélection naturelle mais n’ignore pas les informations que vous avez mentionnées, il ne fait en sorte que si la solution choisie résout son problème, sinon, il cherche à savoir pourquoi et met à jour l’agorithme qui en constitue la base jusqu’au réseau converger à une ou deux meilleure solution. espérons-vous que vous obtenez ce droit?

converger vers la meilleure solution évaluée sur un échantillon fini de données est exactement ce qui cause le sur-ajustement. Pour éviter de sur-adapter, vous souhaitez converger vers une solution qui n’est pas la meilleure (par exemple, un arrêt précoce des réseaux de neurones d’apprentissage). Les GA ne valent pas mieux que toute autre forme d'optimisation dans l'ajustement des réseaux de neurones, vous devez éviter de sur-optimiser le critère de formation.
Dikran Marsupial

5

Chaque fois que vous traitez d'énormes quantités de données et que vous souhaitez résoudre une tâche d'apprentissage supervisé avec un réseau de neurones à feed-forward, les solutions basées sur la rétropropagation sont beaucoup plus envisageables. La raison en est que, pour un réseau de neurones complexe, le nombre de paramètres libres est très élevé. Un projet industriel sur lequel je travaille actuellement concerne un réseau de neurones à feed-forward avec environ 1000 entrées, deux couches cachées @ 384 neurones et 60 sorties. Ceci conduit à 1000 * 384 + 384 * 384 + 384 * 60 = 554496 paramètres de poids à optimiser. Utiliser une approche générale ici serait terriblement lent.


Je crois comprendre que l’AG est conçue pour traiter des problèmes qui sont plus difficiles à résoudre avec des approches standard. Ne devrait-il pas mieux fonctionner exactement dans une situation que vous avez décrite?
Sashkello

2
Je pensais que GA était censé être utilisé pour déterminer quelle structure il s'agissait, par exemple combien de couches cachées et comment elles étaient connectées. La rétroprojection ne permet que de déterminer le poids
pete le

2

La deuxième réponse est fausse. Le surajustement n'est pas causé par l'optimisation. La suradaptation survient lorsque votre modèle est trop compliqué et peut s’adapter à tous les points de données sans connaître la règle qui les a créés (c’est-à-dire tout simplement les mémoriser, dans le cas extrême). dropconnect, poids decay, et en utilisant simplement plus de données. L'objectif doit être d'optimiser votre réseau et de le rendre aussi précis que possible, en tenant compte de ces contraintes.

Pour répondre à cette question, backprop est censé être beaucoup plus rapide que l'optimisation stochastique (algorithmes génétiques, etc.). Je suppose que c'est parce qu'elle tire parti de ce que la sortie réelle était censée être, ajuste les poids dans la bonne direction en fonction de cela. , où l'optimisation stochastique essaye des changements complètement aléatoires et ignore ces informations.

Cependant, en explorant une zone plus vaste, les AG vont probablement faire mieux à long terme en évitant les optima locaux, il faudra juste plus de temps pour s'entraîner.

Je suis curieux de voir combien les GA sont plus lents que les backprop, et si quelqu'un connaît les algorithmes hybrides (la recherche par dispersion semble être idéale pour cela.)


1
En désaccord avec votre premier paragraphe. Le surapprentissage est empêché principalement par le biais d’approches de régularisation dans le problème de la formation . Si vous commencez à faire de la méta-optimisation, ce qui résout de nombreux problèmes d’entraînement (par exemple, l’adaptation des paramètres du noyau, les architectures de réseau, ...), il devient beaucoup plus difficile de s’occuper de la suralimentation et ne sera certainement plus implicitement garanti.
Marc Claesen

Si l'optimisation ne causait pas de surajustement, un arrêt précoce ne constituerait pas un remède efficace.
Dikran Marsupial le

1

À mon avis, la différence entre GA et la rétro-propagation réside dans le fait qu’elle est basée sur des nombres aléatoires et que la rétro-propagation est basée sur un algorithme statique tel que la descente de gradient stochastique. GA étant basé sur des nombres aléatoires et ajouté à cette mutation, cela éviterait probablement d'être pris dans un minimum local. Mais alors, étant donné que l’AG est basé sur des nombres aléatoires, cela signifie qu’il est assez probable que, à deux moments différents, vous dirigiez l’apprentissage sur le même réseau, la conclusion peut être différente, c’est-à-dire un ensemble différent


Juste pour commenter, nous utilisons également init aléatoire. pour les poids en back-prop. Si nous utilisons la même graine lors de l'initialisation, cela conduira à la même solution, mais si vous ne l'utilisez pas, ce ne sera probablement pas le cas. Ainsi, le support arrière dépend également d'une entrée aléatoire. Lorsque vous corrigez la graine, vous obtenez également le même résultat en algorithme génétique car il utilisera le même seq. de chiffres à nouveau.
gunes
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.