Question

Existe-t-il une règle empirique (ou un ensemble d'exemples) permettant de déterminer quand utiliser des algorithmes génétiques plutôt que des réseaux de neurones (et inversement) pour résoudre un problème?

Je sais que dans certains cas, vous pouvez combiner les deux méthodes, mais je recherche une comparaison de haut niveau entre les deux méthodes.

Était-ce utile?

La solution

De wikipedia:

  

Un algorithme génétique (GA) est une technique de recherche utilisée en informatique pour rechercher Des solutions exactes ou approximatives aux 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 rechercher des modèles dans les données.

Si vous ne pouvez pas quantifier la valeur d'une solution, un algorithme génétique peut effectuer une recherche dirigée dans l'espace de la solution. (Par exemple, trouver l'itinéraire le plus court entre deux points)

Lorsque vous avez plusieurs éléments dans différentes classes, un réseau de neurones peut "apprendre". pour classer des éléments qu'il n'a pas encore vus " avant. (Reconnaissance du visage, reconnaissance vocale, par exemple)

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

Autres conseils

Un algorithme génétique (malgré son nom sexy) est, dans la plupart des cas, une technique d’optimisation . Cela se résume principalement à un certain nombre de variables et à la recherche de la meilleure combinaison de valeurs pour ces variables. Il emprunte simplement des techniques d’évolution naturelle pour y parvenir.

Les

réseaux de neurones sont utiles pour reconnaître des modèles . Ils suivent un modèle simpliste du cerveau et, en modifiant un certain nombre de facteurs de pondération, tentent de prédire les résultats en fonction des intrants.

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

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

Les réseaux sociaux classifient (ou reconnaissent) les modèles existants en fonction des données de formation que vous avez fournies.

Les GA réussissent bien à chercher efficacement un large espace 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ées et de les réutiliser dans un autre (non-NN).

Vous comparez deux choses totalement différentes ici.

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

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

Il existe de nombreuses similitudes entre eux. Je ne ferai donc que décrire leurs différences .

Réseaux de neurones

sont capables d’analyser les tendances en ligne (celles qui changent avec le temps) En règle générale, il s’agit d’un échantillon variant dans le temps qui doit être mis en correspondance et prédit.

Exemples :

  • Extrapolation de graphique
  • reconnaissance faciale

Algorithmes génétiques

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

Exemples :

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

Vous pouvez utiliser des algorithmes génétiques en guise d'alternative à l'algorithme de rétropropagation pour mettre à jour les pondérations dans les réseaux de neurones. Pour un exemple, reportez-vous à: http://www.ai-junkie.com/ann/evolved/nnt1. html .

Les algorithmes génétiques travaillent (généralement) sur des données discrètes (énums, plages entières, etc.). Une application typique pour les GA est la recherche dans un espace discret d'un "assez bon". solution lorsque la seule alternative disponible est une recherche par force brute (évaluation de toutes les combinaisons).

Les réseaux de neurones, par contre, travaillent (généralement) sur des données continues (flotteurs, etc.). Une application typique pour les NN est l’approximation de fonction, où vous avez un ensemble X d’entrées et un ensemble Y de sorties connexes, mais la fonction analytique f: X ? Y.

Bien sûr, il existe des milliers de variantes, ce qui rend leur ligne moins nette.

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

Les concepteurs généraux tirent les langages sexy de l'évolution, mais vous attendez que votre ordinateur tombe sur une solution aléatoire. Étudiez vos données, faites de bonnes hypothèses, essayez de savoir ce que vous voulez et choisissez une approche qui puisse les utiliser à bon escient. Si votre premier choix donne de piètres résultats, sachez pourquoi et améliorez l'algorithme lui-même ou choisissez-en un meilleur.

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