[PYTHON] Automatisierung der Algorithmusgenerierung mit genetischen Algorithmen

Vorwort

Genetische Algorithmen werden oft mit sehr einfachen Beispielen wie Parameteranpassung und Kombinationsoptimierung eingeführt, aber mit ein wenig Einfallsreichtum ist es möglich, Algorithmen und Programme automatisch zu generieren.

Vorausgesetztes Wissen

Genetischen Algorithmus

Es ist ein Suchalgorithmus, der auf der Idee der Evolution von Organismen aufgrund von Mutation, Vererbung, Selektion usw. basiert.

Genotyp

Ein Typ, der das Ziel genetischer Manipulationen wie Mutationen und Überkreuzungen ist.

Ausdruckstyp

Es ist ein Individuum, das aus dem Genotyp exprimiert wird, um auf Anpassungsfähigkeit bewertet zu werden.

Verschiedene genetische Algorithmen

Genetische Programmierung

Der Genotyp ist Baumstruktur

Wikipedia

Genetische Netzwerkprogrammierung

Gemtype ist die Netzwerkstruktur

Graph Structured Program Evolution (GRAPE) Eindimensionale Sequenz des Genotyps Der Darstellungstyp ist die Diagrammstruktur

Akademisches Informationsarchiv der Yokohama National University

Ein Algorithmus, der eine Schleife erfordert, kann ebenfalls ausgedrückt werden, und ein Programm, das den Multiplikator oder Fibonacci findet, kann mit einer bestimmten Wahrscheinlichkeit automatisch erzeugt werden. [Derzeit funktionierende Demo](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)

Zielproblem

Ich habe versucht, ein einfaches Problem von OpenAI Gym, einer Simulationsumgebung für das Lernen von Verstärkung, mit GRAPE zu lösen.

Implementierung (GitHub)

Cart Pole Das Problem besteht darin, den Wagen zu bewegen, um ihn auszugleichen, damit der Mast oben nicht umfällt. Da der Anfangszustand etwas zufällig ist, ist ein Algorithmus erforderlich, der für allgemeine Zwecke verwendet werden kann.

Das folgende Bild zeigt das Verhalten des tatsächlich erfassten Algorithmus. CartPole

Folgendes habe ich ausgespuckt, um diesen automatisch generierten Algorithmus in Python ausführbar zu machen: Die Implementierung automatisiert auch diesen Prozess. Quellcode Algorithmus-Teil

Mountain Car Das Problem ist, das Auto zu bewegen und den Berg rechts zu besteigen. Auch hier sind die Anfangsbedingungen etwas zufällig.

Das folgende Bild zeigt das Verhalten des tatsächlich erfassten Algorithmus. MountainCar

Folgendes habe ich ausgespuckt, um diesen automatisch generierten Algorithmus in Python ausführbar zu machen:

Quellcode Algorithmus-Teil

Zusammenfassung

Das kürzlich angekündigte AutoML-Zero erstellt den Algorithmus selbst automatisch mithilfe eines evolutionären Algorithmus. Es war eine Sache. In Zukunft wird erwartet, dass aktivere Forschungen durchgeführt werden, um automatisch Algorithmen und Programmierungen, einschließlich maschinelles Lernen, vollständig außerhalb der menschlichen Hände zu erstellen. Wir haben AutoML-Zero implementiert, indem wir GRAPE erweitert haben, das einem allgemeineren genetischen Algorithmus für die individuelle Expression und genetische Manipulation folgt, und an diesem Punkt erhalten wir ungefähr die erwarteten Ergebnisse. (Die Implementierung in Python war zu langsam, um nützlich zu sein, daher habe ich sie mit verschiedenen Optimierungen in C ++ erneut implementiert.)

Wie in der Einleitung erwähnt, lösen genetische Algorithmen nicht nur die Parameteroptimierung und die Optimierung numerischer Kombinationen. Evolution und Lernen sind kompatibel, und ich glaube, dass AutoML-Zero die Beziehung der Maximierung der neuen Struktur, die durch Evolution beim Lernen auf praktischer Ebene erhalten wird, und den genetischen Algorithmus dieser Evolution reproduziert Ich glaube, dass es für das Teil stark genutzt werden kann. Ich hoffe, es ist hilfreich für diejenigen, die in diesem Bereich forschen und entwickeln.

Recommended Posts

Automatisierung der Algorithmusgenerierung mit genetischen Algorithmen
[Python] Hinweise zur Beschleunigung genetischer Algorithmen mithilfe von Multiprocessing
Genetischer Algorithmus in Python
Erkennungsalgorithmus zur Erzeugung von Quallen
Suche nach stabilen Strukturen von Metallnanoclustern mithilfe genetischer Algorithmen
Merkmalsauswahl durch genetischen Algorithmus
Suchalgorithmus mit word2vec [Python]
Stärkste Pokemon-Generation mit LSTM
Finden Sie den optimalen Wert der Funktion mit einem genetischen Algorithmus (Teil 1)