web-dev-qa-db-fra.com

Comment savons-nous que la prochaine génération sera meilleure?

J'ai été initié aux algorithmes génétiques récemment par cet article MSDN , dans lequel il les appelle évolution combinatoire, mais cela semble être la même chose, et j'ai du mal à comprendre comment la combinaison de deux solutions potentielles produira toujours un nouvelle solution au moins aussi bonne que ses parents.

Pourquoi cela est-il ainsi? Associer pourrait sûrement produire quelque chose de pire.

Pour autant que je le comprenne, l'algorithme est basé sur le concept que lorsqu'un mâle et une femelle d'une espèce produisent une progéniture, cette progéniture aura les caractéristiques des deux parents. Certaines combinaisons seront meilleures, d'autres pires et d'autres tout aussi bonnes. Celles qui sont meilleures (pour n'importe quelle définition de "mieux" est appropriée) ont plus de chances de survivre et de produire une descente qui a les caractéristiques améliorées. Cependant, il y aura des combinaisons plus faibles. Pourquoi n'est-ce pas un problème avec GA?

32
Avrohom Yisroel

Un algorithme génétique tente de s'améliorer à chaque génération en abattant la population. Chaque membre est évalué en fonction d'une fonction de fitness, et seule une partie ayant un score élevé est autorisée à se reproduire.

Vous avez cependant raison: rien ne garantit que la prochaine génération améliorera le score de son prédécesseur.

Considérez programme de belette de Dawkins : "évoluant" la chaîne "Methinks it is like a weasel". À partir d'une population de chaînes aléatoires, la fonction de fitness évalue la correspondance textuelle la plus proche, qui est perturbée pour produire la génération suivante. Avec une reproduction croisée simple, deux chaînes à score élevé qui sont combinées pourraient très facilement produire une progéniture à score inférieur. Même une mutation aléatoire "asexuée" d'une seule chaîne à haute condition physique pourrait réduire la forme physique de l'enfant.

Il convient de noter, je pense, que ce n'est pas nécessairement un défaut. Avec ce type de recherche, il y a l'idée de maxima locaux . Un membre de la population pourrait représenter une solution qui est pas le résultat optimal, mais c'est le meilleur qui puisse être obtenu sans empirer en cours de route.

Imaginez que la fonction de mise en forme pour le programme belette ne trouve pas seulement la distance d'édition, mais a une certaine notion de "mot", et teste si le dernier mot de la chaîne est le nom d'un animal. Tout nom d'animal donne de bons résultats, mais "weasel" obtient un gros bonus.

Maintenant, que se passe-t-il si "Methinks it is like a walrus" est évolué? Ça marque bien. Pas aussi bien que la chaîne cible ultime, mais mieux que "Methinks it is like a walrut" ou d'autres variations proches qui pourraient être atteintes par une seule étape de mutation.

La chaîne de morse est un maximum local, et la recherche peut rester bloquée à moins que le programme ne le permette le score de la prochaine génération soit pire.

43
jscs

Nous ne savons pas que ça ira mieux, nous savons que ça ne va pas empirer.

Dans chaque génération, ne se compose pas uniquement du rejeton des meilleurs éléments, mais comprend également les meilleurs éléments eux-mêmes - des clones si vous voulez. Puisqu'ils sont toujours présents, ils marqueront le même qu'auparavant. Cela signifie que si aucun des descendants n'est meilleur, les vainqueurs des générations précédentes gagneront à nouveau - et seront re-mutés/se reproduiront.

Considérez: Avec un individu progéniteur étant une lettre, par exemple A Un enfant muté étant défini en ajoutant un nombre, par exemple A1, les solutions croisées étant écrites avec des crochets autour du parent, par exemple (A1B2) Et le noyau de remise en forme de tout écrit individuel après lui - plus haut vaut mieux [12]

Pour la démonstration, considérons un pool de 5, où nous gardons le meilleur 2. et remplissons avec 1 muté de chacun, plus un croisement

Génération 1

  • A [10]
  • B [5]
  • C [4]
  • D [3]
  • E [1]

Gardez A, B, car ce sont les deux meilleurs, et remplissez 3 autres emplacements avec leurs descendants

Génération 2

  • A [10]
  • B [5]
  • (AB) [7]
  • A1 [12]
  • B1 [4]

Gardez A et (AB), car ils sont les meilleurs 2 - Cela signifie que grand-père A sera toujours dans la piscine car la plupart des enfants travaillent plus faibles

Génération 3

  • A [10]
  • (AB) [12]
  • (A(AB)) [14]
  • A2 [8]
  • (AB)1 [13]

Garder (AB)1 et (A(AB)) - cette fois, aucun grand-parent n'a été maintenu, car deux de leurs enfants les ont battus. Mais si (AB1) a fait un peu moins bien que nous aurions gardé (AB) au lieu.

Cela continue jusqu'à ce que le score se stabilise. Ce qui indique que vous avez atteint une sorte de maximum local (potentiellement un maximum global). L'une des raisons pour lesquelles cela serait détecté serait que les mêmes individus continuent d'être "clonés" dans la prochaine génération. (bien que pour des problèmes de grande dimension qui pourraient prendre trop de temps, il vaut peut-être mieux vérifier simplement l'amélioration <une tolérance particulière)

6
Lyndon White

En général, les algorithmes génétiques fonctionnent en créant un certain nombre de variations (aléatoires) sur les parents à chaque génération. Ensuite, une fonction de sélection est appliquée et la progéniture qui est la plus adaptée selon cette fonction survit. Ainsi, la progéniture n'est pas nécessairement meilleure car la variation est aléatoire, mais combiné avec la sélection, vous obtenez une amélioration au fil du temps.

4
JacquesB

Quand j'ai étudié les algorithmes génétiques au collège, cela a été expliqué comme ceci:

Imaginez une solution est une combinaison de "gènes", où chaque gène affecte la qualité de la solution dans son ensemble. Lorsque deux solutions sont accouplées, leurs gènes sont choisis au hasard dans chaque parent.

Maintenant, si le gène mène, généralement, à une bonne solution, sa fréquence dans le pool génétique augmente. Dans les cas extrêmes, le gène dominera la population.

Donc, quand vous pensez aux algorithmes génétiques (et à l'évolution en général), vous ne devriez pas penser aux individus. Vous devez penser aux gènes et aux populations dans leur ensemble. Même si une "meilleure" solution est perdue, cela ne signifie pas que ses gènes sont perdus.

Il y a aussi l'idée d'élitisme dans les algorithmes génétiques. Cela signifie que les meilleures solutions sont toujours conservées d'une génération à l'autre. Cela pourrait accélérer la convergence de l'algorithme, mais il est plus facile pour l'algorithme de se coincer dans les optima locaux.

4
Euphoric

Les algorithmes GA ne sont pas déterministes, ils ne garantissent pas d'obtenir une amélioration à chaque génération, et ils ne garantissent pas non plus de trouver un optimum total. Cependant, la phase de sélection d'une AG, utilisant une fonction de fitness, rend plus probable la survie des "bonnes solutions".

2
Doc Brown