Pourquoi le cross-over fait-il partie des algorithmes génétiques?


8

Genetic Algorithms a récemment attiré mon attention en essayant de corriger / améliorer les adversaires informatiques pour les jeux informatiques de stratégie au tour par tour.

J'ai implémenté un algorithme génétique simple qui n'utilisait aucun croisement, juste une mutation aléatoire. Cela semblait fonctionner dans ce cas, et j'ai donc commencé à penser:

Pourquoi le cross-over fait-il partie des algorithmes génétiques? La mutation ne suffirait-elle pas?

Il s'agit d'un vidage de données sur un ancien site d'IA. Le demandeur avait l'UID de 7.

Réponses:


7

La mutation est généralement définie comme un opérateur global , c'est-à-dire qu'une mutation itérée est (éventuellement) capable d'atteindre tous les points de l'espace vectoriel défini par le génome. En ce sens, la mutation seule est certainement «suffisante».

Concernant la motivation pour le crossover - de Essentials of Metaheuristics, p42:

Le crossover était à l'origine basé sur la prémisse que les individus très en forme partagent souvent certains traits communs, appelés blocs de construction . Par exemple, dans l'individu booléen 10110101, *** 101 * 1 peut être un élément constitutif

(où * signifie "soit 0 soit 1")

L'idée est donc que le crossover fonctionne en répartissant rapidement les blocs de construction dans la population.

Les méthodes croisées supposent également qu'il existe un certain degré de liaison entre les gènes sur le chromosome: c'est-à-dire que les paramètres de certains gènes dans les groupes sont fortement corrélés à l'amélioration de la condition physique. Par exemple, les gènes A et B peuvent contribuer à la remise en forme uniquement lorsqu'ils sont tous deux définis sur 1: si l'un est défini sur 0, le fait que l'autre est défini sur 1 ne fait rien.

Notez également que le crossover n'est pas un opérateur global . Si le seul opérateur est crossover alors (également à partir de p42):

Finalement, la population convergera, et souvent (malheureusement) prématurément, vers des copies du même individu. À ce stade, il n'y a pas d'échappatoire: quand un individu passe avec lui-même, rien de nouveau n'est généré.

Pour cette raison, le croisement est généralement utilisé avec un opérateur de mutation global.


5

Le crossover permet de combiner deux parents (vs mutation, qui n'utilise qu'un seul parent). Dans certains cas, cela est utile (par exemple, si vous entraînez un bot FPS, si un parent est bon pour tirer et un autre parent est bon pour bouger, il est logique de les combiner). Dans certains autres cas, ce n'est pas le cas.


4

Lorsque vous pensez au crossover, il est important de penser au paysage du fitness.

Considérons un scénario hypothétique où nous appliquons un algorithme génétique pour trouver une solution qui fonctionne bien en 2 tâches. Cela pourrait provenir de l'exemple de Franck (déplacement et tir) pour une IA, ou peut-être pourrait-on prédire 2 sorties dans un scénario d'apprentissage automatique génétique, mais en réalité, la plupart des scénarios où les AG sont appliqués sont synonymes (même pour résoudre une seule tâche, il peut y avoir différents aspects de la tâche à traiter).

Supposons que nous ayons un individu, 1, qui se comporte raisonnablement bien dans les deux tâches, et nous trouvons une série de mutations qui produisent 2 nouveaux individus, 2 et 3, qui obtiennent de meilleurs résultats que l'individu 1 aux tâches 1 et 2 respectivement. Maintenant, bien que ces deux soient des améliorations, nous souhaitons idéalement trouver une bonne solution générale, nous voulons donc combiner les fonctionnalités qui nous ont été jugées bénéfiques.

C'est là qu'intervient le crossover; en combinant les génomes des individus 2 et 3, nous pouvons trouver un nouvel individu qui produit un mélange de leurs performances. S'il est possible qu'un tel individu soit produit par une série de mutations appliquées à l'individu 2 ou à l'individu 3, le paysage peut tout simplement ne pas convenir à cela (il peut n'y avoir aucune mutation favorable dans cette direction, par exemple).

entrez la description de l'image ici

Vous avez donc partiellement raison; il peut parfois arriver que les avantages du croisement puissent être répliqués avec une série de mutations. Parfois, cela peut ne pas être le cas et le crossover peut lisser le paysage de fitness de votre GA, accélérant ainsi l'optimisation et aidant votre GA à échapper aux optima locaux.


Si (comme cela devrait être le cas) l'opérateur de mutation est global (c'est-à-dire capable d'exprimer tous les points dans l'espace de recherche), il est toujours possible d'exprimer les résultats du croisement via (une séquence de) mutations. Cependant (selon ma réponse), l'inverse n'est pas le cas.
NietzscheanAI

C'est vrai, je voulais juste illustrer le point avancé par vous et Franck avec un exemple :)
Tim Atkinson

Les exemples sont toujours bons - je devrais en inclure plus ;-)
NietzscheanAI
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.