Les algorithmes génétiques sont souvent introduits avec des exemples très simples tels que l'ajustement des paramètres et l'optimisation des combinaisons, mais avec un peu d'ingéniosité, il est possible de générer automatiquement des algorithmes et des programmes.
C'est un algorithme de recherche basé sur l'idée d'évolution des organismes due à la mutation, l'hérédité, la sélection, etc.
Un type qui est sujet à des manipulations génétiques telles que des mutations et des croisements.
C'est un individu exprimé à partir du génotype à évaluer pour l'adaptabilité.
Le génotype est la structure arborescente
Gemtype est une structure de réseau
Graph Structured Program Evolution (GRAPE) Séquence unidimensionnelle du génotype Le type de représentation est la structure du graphique
Référentiel d'informations académiques de l'Université nationale de Yokohama
Un algorithme qui nécessite une boucle peut également être exprimé, et un programme qui trouve le multiplicateur ou fibonacci peut être généré automatiquement avec une certaine probabilité. [Démo réellement fonctionnelle](https://qiita.com/technote-space/items/7acade8a2b768153f005#%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3% 82% BA% E3% 83% A0% E8% 87% AA% E5% 8B% 95% E7% 94% 9F% E6% 88% 90)
J'ai utilisé GRAPE pour résoudre un problème simple d'OpenAI Gym, qui est un environnement de simulation pour un apprentissage intensif.
Cart Pole Le problème est de déplacer le chariot pour l'équilibrer afin que le pôle sur le dessus ne tombe pas. Étant donné que l'état initial est quelque peu aléatoire, un algorithme pouvant être utilisé à des fins générales est nécessaire.
L'image ci-dessous montre le comportement de l'algorithme réellement acquis.
Voici ce que j'ai craché pour rendre cet algorithme généré automatiquement exécutable en Python: La mise en œuvre automatise également ce processus. Code source Partie algorithme
Mountain Car Le problème est de déplacer la voiture et de gravir la montagne à droite. Là encore, les conditions initiales sont quelque peu aléatoires.
L'image ci-dessous montre le comportement de l'algorithme réellement acquis.
Voici ce que j'ai craché pour rendre cet algorithme généré automatiquement exécutable en Python:
[AutoML-Zero] récemment annoncé (https://ai.googleblog.com/2020/07/automl-zero-evolving-code-that-learns.html) construit également automatiquement l'algorithme lui-même en utilisant un algorithme évolutif. C'était une chose. À l'avenir, on s'attend à ce que des recherches plus actives soient menées pour créer automatiquement des algorithmes et de la programmation, y compris l'apprentissage automatique, complètement loin des mains humaines. Nous avons implémenté AutoML-Zero en étendant GRAPE, qui suit un algorithme génétique plus général pour l'expression individuelle et la manipulation génétique, et à ce stade, nous obtenons à peu près les résultats attendus. (L'implémentation en Python était trop lente pour être utile, je l'ai donc réimplémentée avec diverses optimisations en C ++.)
Comme mentionné dans l'introduction, les algorithmes génétiques font plus que simplement résoudre l'optimisation des paramètres et l'optimisation des combinaisons numériques. L'évolution et l'apprentissage sont compatibles, et je pense qu'AutoML-Zero reproduit la relation de maximisation de la nouvelle structure obtenue par l'évolution dans l'apprentissage à un niveau pratique, et l'algorithme génétique de cette évolution Je crois qu'il peut être grandement utilisé pour la pièce. J'espère que cela sera utile pour ceux qui mènent de la recherche et du développement dans ce domaine.
Recommended Posts