web-dev-qa-db-fra.com

Qu'est-ce que NEAT (Neuroévolution des topologies augmentantes)?

J'ai recherché ce qui NEAT est sur youtube et sur Internet, mais je ne peux trouver que des projets utilisant NEAT, mais en dehors de l'entrée wikipedia (qui ne dit que ce qu'il est en introduction, et est très Je ne sais toujours pas ce que c'est, est-ce une bibliothèque, est-ce un type de réseau neuronal, est-ce une méthode de formation de réseaux neuronaux? Désolé si c'est une question évidente.

11
Karan Elangovan

NEAT, ou Neuro-Evolution of Augmenting Topologies, est un algorithme évolutif basé sur la population introduit par Kenneth O'Stanley [1].

L'algorithme est basé sur plusieurs fonctionnalités clés:

Complexification

Les réseaux dans la population initiale sont les plus simples possibles (jusqu'à l'extrême absence de connexions, laissant les neurones d'entrée et de sortie non connectés) et l'algorithme uniquement ajoute de nouveaux éléments structurels (neurones, connexions). De cette façon, les réseaux résultants ont tendance à être très petits.

Éviter les conventions concurrentes via les marquages ​​historiques

Dans les algorithmes évolutionnaires ordinaires, il peut facilement arriver que deux individus codent le même comportement (ou très similaire) mais avec un génotype très différent. Cela s'appelle conventions concurrentes. Lorsque ces personnes font l'objet d'un croisement, leurs enfants sont susceptibles d'être pires que l'un ou l'autre des parents. NEAT résout ce problème en conservant les marquages ​​historiques des nouveaux éléments structurels. Lorsqu'un nouvel élément structurel est créé (via une mutation structurelle), un numéro d'innovation lui est attribué (et toutes ces mutations qui ont produit le même élément) , même chez des individus différents se voient également attribuer ce même numéro.) Ensuite, lorsque deux individus sont croisés, leurs génotypes sont alignés de telle sorte que les numéros d'innovation correspondants correspondent et seuls les éléments différents sont échangés.

Partage de spéciation et de remise en forme

NEAT fonctionne avec le concept de espèce. Il s'agit simplement d'une subdivision de la population en plusieurs groupes d'individus, appelés espèces. Cette subdivision est basée sur la dissimilarité des individus qui est calculée sur la base d'un alignement similaire de leurs génotypes tel qu'il est utilisé lors du croisement. La probabilité de croiser des individus de différentes espèces est alors beaucoup plus faible que le croisement à l'intérieur des espèces. En favorisant l'accouplement de parents plus similaires, les enfants sont moins susceptibles d'être bien pires que les parents parce que les parents étaient tout simplement compatibles.

De plus, au sein de l'espèce, la forme physique est partagée entre les individus. Cela sert à deux fins. (1) Il protège les individus contre les mutations - lorsqu'une mutation se produit, la forme physique est normalement faible mais parce qu'il y a partage de la forme physique, la personne a le temps de s'optimiser (les poids) pour s'adapter à ce nouveau changement structurel. (2) Favorise la diversité parce que plus l'espèce est grande, plus la forme physique est partagée et moins les membres de l'espèce sont en forme.

Je fortement recommande de lire le document original [1]. L'algorithme est très bien décrit. Il y a aussi une Page Utilisateurs NEAT qui a plus de liens vers plus d'articles et aussi des implémentations et utilisations de NEAT.


[1] Kenneth O. Stanley et Risto Miikkulainen. Évolution des réseaux de neurones grâce à l'augmentation des topologies. Calcul évolutif, 10 (2): 99-127, 2002.

16
zegkljan