Question

J'essaie de comprendre la différence entre les différentes classes d'algorithmes d'apprentissage automatique.

Je comprends que les implémentations des algorithmes évolutifs sont assez différentes de celles des réseaux de neurones.

Cependant, ils semblent tous deux orientés vers la détermination d’une corrélation entre les intrants et les extrants à partir d’un ensemble potentiellement bruyant de données historiques / d’apprentissage.

D'un point de vue qualitatif, existe-t-il des domaines problématiques qui constituent de meilleures cibles pour les réseaux de neurones par opposition aux algorithmes évolutifs?

J'ai feuilleté des articles suggérant de les utiliser de manière complémentaire. Existe-t-il un bon exemple d’un cas d’utilisation?

Était-ce utile?

La solution

Voici le problème: dans les problèmes d’apprentissage automatique, vous avez généralement deux composants:

a) Le modèle (classe de fonction, etc.)

b) Méthodes d’ajustement du modèle (algorithmes d’optimisation)

Les réseaux de neurones sont un modèle: à partir d’un agencement et d’un réglage de pondération, le réseau de neurones produit une sortie. Il existe certaines méthodes canoniques d’ajustement des réseaux neuronaux, telles que la rétropropagation, la divergence contrastive, etc. Cependant, le gros avantage des réseaux neuronaux est que si quelqu'un vous donnait les "bons" poids, vous vous en sortiriez bien.

Les algorithmes évolutifs s’adressent à la deuxième partie - l’adaptation du modèle. Là encore, certains modèles canoniques s’appliquent aux algorithmes évolutifs: par exemple, la programmation évolutive essaie généralement d’optimiser tous les programmes d’un type particulier. Cependant, les EA sont essentiellement un moyen de trouver les bonnes valeurs de paramètres pour un modèle particulier. En général, vous écrivez les paramètres de votre modèle de telle manière que l'opération de cross-over est une opération raisonnable et vous tournez la manivelle EA pour obtenir un réglage raisonnable des paramètres.

Maintenant, vous pouvez, par exemple, utiliser des algorithmes évolutifs pour former un réseau de neurones et je suis sûr que cela a été fait. Cependant, le point critique dont EA a besoin pour fonctionner est que l’opération de croisement doit être une chose raisonnable à faire - en prenant une partie des paramètres d’un paramètre raisonnable et du reste d’un autre paramètre raisonnable, vous obtiendrez souvent un encore meilleur paramétrage. La plupart du temps, EA est utilisé, ce n’est pas le cas et il s’agit en quelque sorte du recuit simulé, mais il est plus confus et inefficace.

Autres conseils

Problèmes nécessitant "intuition" sont mieux adaptés aux ANN, par exemple la reconnaissance de l'écriture manuscrite. Vous entraînez un réseau de neurones avec une énorme quantité d’entrées et le notez jusqu’à ce que vous ayez terminé (cela prend beaucoup de temps), mais vous disposez ensuite d’un algorithme / système de boîte noire qui peut " deviner ". la main qui écrit, vous gardez donc votre petit cerveau et vous l’utilisez comme module pendant de nombreuses années. Parce que former un ANN de qualité à un problème complexe peut prendre des mois, je suis dans le pire des cas, et de la chance.

La plupart des autres algorithmes évolutifs " calculent " une solution ad hoc sur le vif, dans une sorte de modèle d’escalade.

Comme indiqué dans une autre réponse, un ANN peut " deviner " pendant l'exécution, et ";" plus rapide que la plupart des autres algorithmes évolutifs peuvent " calculer ". Cependant, il faut faire attention, l’ANN n’est que " devinant ". un peut être faux.

Regardez Neuro Evolution. (NE)

Les meilleures méthodes actuelles sont NEAT et HyperNEAT de Kenneth Stanley.

Les algorithmes génétiques ne trouvent qu’un génome; C'est génial de créer le génome d'un réseau de neurones, car vous obtenez la nature réactive du réseau de neurones, plutôt que simplement un groupe de gènes statiques.

Il n’ya pas beaucoup de limites à ce qu’il peut apprendre. Mais cela prend du temps bien sûr. La topologie neuronale doit évoluer à travers les mutations et croisements habituels, ainsi que les poids mis à jour. Il ne peut y avoir aucune propagation en arrière.

Vous pouvez également l’entraîner avec une fonction de mise en forme, qui est donc supérieure à la propagation en arrière lorsque vous ne savez pas ce que le résultat devrait être. Parfait pour apprendre le comportement complexe de systèmes pour lesquels vous ne connaissez pas de stratégies optimales. Le seul problème, c'est qu'il va apprendre un comportement que vous n'aviez pas prévu. Souvent, ce comportement peut être très étranger, bien qu'il fasse exactement ce que vous avez récompensé pour la fonction fitness. Ainsi, vous utiliserez autant de temps que nécessaire pour dériver des fonctions de mise en forme, comme vous le feriez pour créer des ensembles de sortie pour la rétropropagation:

Les algorithmes évolutifs, ou plus génétiquement génétiques, et les réseaux de neurones peuvent tous deux être utilisés pour des objectifs similaires, et d’autres réponses décrivent bien la différence.

Cependant, il existe un cas spécifique dans lequel les algorithmes évolutifs sont plus indiqués que les réseaux de neurones: lorsque l'espace de la solution est non continu / discret .

En effet, les réseaux de neurones utilisent la descente de gradient pour tirer des leçons de la rétro-propagation (ou d’un algorithme similaire). Le calcul d'un gradient s'appuie sur des dérivées, qui nécessitent un espace continu, autrement dit, vous pouvez passer progressivement d'une solution à une autre.

Si votre espace de solution est discret (vous pouvez choisir la solution A, B ou C, mais rien au milieu de 0,5% A + 0,5% B), alors vous essayez de placer une solution non continue. les réseaux de neurones ne peuvent plus fonctionner.

Dans ce cas, les algorithmes évolutifs sont parfaits, on pourrait même dire un dieu envoi, car il peut "sauter". d'une solution à l'autre sans aucun problème.

Il convient également de mentionner que les algorithmes évolutifs ne sont pas soumis à la malédiction de la dimensionnalité autant que tout autre algorithme d’apprentissage automatique, y compris les réseaux de neurones.

Cela fait des algorithmes évolutifs un outil très polyvalent et générique pour aborder naïvement tout problème, et l’un des très rares outils permettant de traiter des fonctions non continues ou des jeux de données de dimensions astronomiquement élevées.

En termes de domaines problématiques, je compare les réseaux de neurones artificiels formés par rétropropagation à un algorithme évolutif.

Un algorithme évolutif utilise une recherche aléatoire de faisceaux, ce qui signifie que vos opérateurs évolutifs développent des candidats qui doivent être testés et comparés en fonction de leur condition physique. Ces opérateurs sont généralement non déterministes et vous pouvez les concevoir de manière à ce qu'ils puissent trouver des candidats proches et des candidats plus éloignés dans l'espace des paramètres afin de surmonter le problème de blocage des optima locaux.

Cependant, le succès d’une approche d’évaluation environnementale dépend en grande partie du modèle que vous développez. Il s’agit d’un compromis entre un fort potentiel d’expression (vous risquez de sur-adapter) et une généralité (le modèle risque de ne pas pouvoir exprimer la fonction cible).

Etant donné que les réseaux de neurones sont généralement multicouches, l'espace de paramètre n'est pas convexe et contient des optima locaux, les algorithmes de descente de gradient peuvent rester bloqués. La descente de gradient est un algorithme déterministe, qui effectue une recherche à proximité étroite. C’est la raison pour laquelle les réseaux de neurones sont généralement initialisés de manière aléatoire et que vous devez en former de nombreux modèles.

De plus, vous savez que chaque nœud caché d’un réseau de neurones définit un hyperplan, vous pouvez concevoir un réseau de neurones afin qu’il corresponde bien à votre problème. Il existe certaines techniques pour empêcher les réseaux de neurones de surapprentissage.

Dans l’ensemble, les réseaux de neurones pourraient être formés rapidement et obtenir des résultats raisonnables avec peu d’efford (essayez simplement quelques paramètres). En théorie, un réseau de neurones suffisamment grand est capable d'approcher chaque fonction de la cible, ce qui le rend vulnérable à la sur-adaptation. Les algorithmes évolutifs vous demandent de faire beaucoup de choix de conception pour obtenir de bons résultats, le plus difficile étant probablement le modèle à optimiser. Mais EA est capable de chercher dans des espaces à problèmes très complexes (d’une manière que vous définissez) et d’obtenir de bons résultats rapidement. Même les AE peuvent rester efficaces lorsque le problème (la fonction cible) évolue dans le temps.

Le livre d'apprentissage automatique de Tom Mitchell: http://www.cs.cmu.edu/~tom/mlbook.html

Les algorithmes évolutifs (EA) sont lents car ils reposent sur un apprentissage non supervisé: on dit aux EA que certaines solutions sont meilleures que d'autres, mais pas comment les améliorer. Les réseaux de neurones sont généralement plus rapides car ils constituent un exemple d'apprentissage supervisé: ils savent comment améliorer une solution en utilisant la descente de gradient dans un espace fonctionnel sur certains paramètres; Cela leur permet de trouver plus rapidement une solution valable. Les réseaux de neurones sont souvent utilisés lorsqu'il n'y a pas suffisamment de connaissances sur le problème pour que d'autres méthodes fonctionnent.

Les algorithmes évolutifs (EA) représentent une manière d’entraîner un modèle, où les réseaux neuronaux (NN) sont un modèle. Le plus souvent dans la littérature, vous constaterez que les NN sont formés à l'aide de l'algorithme de rétropropagation. Cette méthode est très attrayante pour les mathématiciens MAIS elle nécessite que vous puissiez exprimer le taux d'erreur du modèle à l'aide d'une formule mathématique. C'est le cas pour les situations dans lesquelles vous connaissez un grand nombre de valeurs d'entrée et de sortie pour la fonction que vous essayez d'approcher. Ce problème peut être modélisé mathématiquement, comme la minimisation d'une fonction de perte, qui peut être obtenue grâce au calcul (et c'est pourquoi les mathématiciens l'adorent).

Mais les réseaux neuronaux sont également utiles pour les systèmes de modélisation qui tentent de maximiser ou de minimiser certains résultats, dont la formule est très difficile à modéliser de manière mathématique. Par exemple, un réseau neuronal pourrait contrôler les muscles d'un cyborg pour pouvoir courir. À chaque intervalle de temps différent, le modèle devrait établir la quantité de tension qui devrait être présente dans chaque muscle du corps du cyborg, sur la base des informations fournies par divers capteurs. Il est impossible de fournir de telles données de formation. Les EE permettent la formation en fournissant uniquement une manière d’évaluer le modèle. Pour notre exemple, nous punirions les chutes et récompenserions la distance parcourue sur une surface (dans un délai déterminé). EA ne ferait que sélectionner les modèles qui font de leur mieux dans ce sens. Les premières générations sucent mais, étonnamment, après quelques centaines de générations, ces personnes atteignent des objectifs très "naturels". mouvements et parviennent à courir sans tomber. De tels modèles peuvent également être capables de gérer les obstacles et les forces physiques externes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top