Quand devrais-je utiliser des algorithmes génétiques par opposition aux réseaux de neurones? [fermé]

139

Existe-t-il une règle empirique (ou un ensemble d'exemples) pour déterminer quand utiliser des algorithmes génétiques par opposition aux réseaux de neurones (et vice-versa) pour résoudre un problème?

Je sais qu'il y a des cas dans lesquels vous pouvez mélanger les deux méthodes, mais je recherche une comparaison de haut niveau entre les deux méthodes.

Neil N
la source
3
Il convient de souligner qu'il existe deux types de réseau neuronal: supervisé et non supervisé. Les supervisés obtiennent des données de formation d'un humain, des commentaires non supervisés sur eux-mêmes et ressemblent davantage à des AG à cet égard.
Chris S
3
Je ne pense pas du tout que ce soit "list-y". Les réponses comparent deux méthodes et clarifient quand utiliser l'une par rapport à l'autre.
Neil N
Réponse courte: utilisez GA lorsque la fonction à modéliser est non continue / discrète, ou lorsque le jeu de données est astronomiquement de haute dimension. Utilisez les réseaux de neurones ou GA (ou un autre modèle) pour le reste en fonction de ce qui vous donne les meilleurs résultats. Pour plus d'informations, voir ma réponse ici: stackoverflow.com/a/49684833/1121352
gaborous

Réponses:

130

De wikipedia:

Un algorithme génétique (GA) est une technique de recherche utilisée en informatique pour trouver des solutions exactes ou approximatives à des problèmes d'optimisation et de recherche.

et:

Les réseaux de neurones sont des outils de modélisation de données statistiques non linéaires. Ils peuvent être utilisés pour modéliser des relations complexes entre les entrées et les sorties ou pour trouver des modèles dans les données.

Si vous rencontrez un problème où vous pouvez quantifier la valeur d'une solution, un algorithme génétique peut effectuer une recherche dirigée de l'espace de solution. (Par exemple, trouvez l'itinéraire le plus court entre deux points)

Lorsque vous avez un certain nombre d'éléments dans différentes classes, un réseau neuronal peut «apprendre» à classer des éléments qu'il n'a pas «vus» auparavant. (Par exemple, reconnaissance faciale, reconnaissance vocale)

Les délais d'exécution doivent également être pris en compte. Un algorithme génétique met beaucoup de temps à trouver une solution acceptable. Un réseau de neurones met beaucoup de temps à «apprendre», mais il peut alors classer presque instantanément de nouvelles entrées.

Dawie Strauss
la source
13
Je veux juste ajouter un peu à la définition GA. Parfois, les gens pensent à l'espace de solution d'un problème GA comme un ensemble d'états ou de valeurs. Tels que "Trouvez toutes les façons dont un ensemble de quatre pièces d'échecs pourrait être arrangé sur un échiquier pour créer un échec et mat." Cependant, l'espace de solution peut également être un ensemble d'algorithmes. C'est là que la véritable puissance des algorithmes génétiques entre en jeu. Ils vous aident à répondre à une question comme "Trouver une séquence de coups avec un ensemble donné de pièces d'échecs qui entraînera un échec et mat".
lfalin
44

Un algorithme génétique (malgré son nom sexy) est, dans la plupart des cas, une technique d'optimisation . Cela revient principalement à avoir un certain nombre de variables et à vouloir trouver la meilleure combinaison de valeurs pour ces variables. Il emprunte simplement des techniques à l'évolution naturelle pour y arriver.

Les réseaux neuronaux sont utiles pour reconnaître les modèles . Ils suivent un modèle simpliste du cerveau et, en modifiant un certain nombre de poids entre eux, tentent de prédire les sorties en fonction des entrées.

Ce sont deux entités fondamentalement différentes, mais parfois les problèmes qu’elles sont capables de résoudre se chevauchent.

zenna
la source
22
Les réseaux de neurones ne sont en fait qu'une technique d'interpolation. :)
Don Reba
3
+1 pour les algorithmes génétiques (optimisation) et les réseaux de neurones (apprentissage supervisé) n'ont presque rien en commun.
alfa
2
Le seul élément commun est qu'ils se réorganisent dynamiquement à mesure qu'ils s'approchent d'un objectif.
lfalin
1
Je ne suis pas sûr qu'il y ait un chevauchement, vraiment. Les réseaux neuronaux sont un modèle avec une fonction de coût, GA est une technique d'optimisation qui peut être utilisée pour minimiser cette fonction de coût, comme l'a dit @zenna.
Matthieu Brucher
37

Les GA génèrent de nouveaux modèles dans une structure que vous définissez.

Les NN classent (ou reconnaissent) les modèles existants en fonction des données d'entraînement que vous fournissez.

Les GA réussissent bien à rechercher efficacement un vaste espace d'états de solutions et à converger vers une ou plusieurs bonnes solutions, mais pas nécessairement la «meilleure» solution.

Les NN peuvent apprendre à reconnaître les modèles (via la formation), mais il est notoirement difficile de comprendre ce qu'ils ont appris, c'est-à-dire d'en extraire les connaissances une fois formés et de réutiliser les connaissances dans d'autres (non NN).

Steven A. Lowe
la source
26

Vous comparez ici deux choses totalement différentes.

Les réseaux de neurones sont utilisés pour la régression / classification - étant donné un ensemble d'exemples (x, y), vous voulez régresser l'inconnu y pour un x donné.

Les algorithmes génétiques sont une technique d'optimisation. Étant donné une fonction f (x), vous voulez déterminer le x qui minimise / maximise f (x).

bayer
la source
10
En effet. Ce sont vraiment des techniques «orthogonales». Vous pouvez utiliser un GA pour trouver des poids nets neuronaux et / ou une architecture.
redcalx
23

Il existe de nombreuses similitudes entre eux, je vais donc essayer de souligner leurs différences .

Les réseaux de neurones

Sont capables d'analyser les modèles en ligne (ceux qui changent avec le temps). En général, il s'agit d'un échantillon variant dans le temps qui doit être apparié et prédit.

Exemples :

  • Extrapolation graphique
  • La reconnaissance faciale

Algorithmes génétiques

Utilisé lorsque vous pouvez coder des attributs qui, selon vous, peuvent contribuer à un problème spécifique et non évolutif. L'accent est mis sur la capacité de coder ces attributs (parfois vous savez ce qu'ils sont) et que le problème est dans une large mesure immuable (sinon les évolutions ne convergent pas).

Exemples :

  • Planification des avions / expédition
  • Horaires.
  • Trouver les meilleures caractéristiques pour un agent simple dans un environnement artificiel
  • Rendu d'une approximation d'une image avec des polygones aléatoires
Inconnue
la source
14

Vous pouvez utiliser des algorithmes génétiques comme alternative à l' algorithme de rétropropagation pour mettre à jour les poids dans les réseaux de neurones. Pour un exemple de cela, consultez: http://www.ai-junkie.com/ann/evolved/nnt1.html .

Amro
la source
1
Et aussi NEAT ( cs.ucf.edu/~kstanley/neat.html ). Avec une implémentation C # à ( sharpneat.sourceforge.net )
redcalx
Pour javascript, consultez github.com/wagenaartje/neataptic . Il implémente également NEAT.
Thomas W
8

Les algorithmes génétiques fonctionnent (généralement) sur des données discrètes (énumérations, plages d'entiers, etc.). Une application typique pour les GA recherche dans un espace discret une solution «assez bonne» lorsque la seule alternative disponible est une recherche par force brute (évaluation de toutes les combinaisons).

Les réseaux de neurones, quant à eux, fonctionnent (généralement) sur des données continues (flottants, etc.). Une application typique pour NNs est l'approximation de fonction, où vous avez un ensemble X d'entrées et un ensemble Y de sorties associées, mais la fonction analytique f: X → Y.

Bien sûr, il existe des milliers de variantes des deux, de sorte que la frontière entre elles est quelque peu floue.

nbro
la source
5

Il n'y a pas de règle empirique. Dans de nombreux cas, vous pouvez formuler votre problème pour utiliser l'un ou l'autre. L'apprentissage automatique est toujours un domaine de recherche actif et le modèle d'apprentissage à utiliser peut être discuté.

Les GA prennent des langages sexy de l'évolution, mais vous attendez que votre ordinateur trouve une solution par un processus aléatoire. Étudiez vos données, faites de bonnes hypothèses, essayez de savoir ce que vous voulez et choisissez une approche qui peut en faire bon usage. Si votre premier choix donne de mauvais résultats, sachez pourquoi il en a été ainsi et améliorez l'algorithme lui-même ou choisissez-en un meilleur.

Tilish
la source