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.
Es ist ein Suchalgorithmus, der auf der Idee der Evolution von Organismen aufgrund von Mutation, Vererbung, Selektion usw. basiert.
Ein Typ, der das Ziel genetischer Manipulationen wie Mutationen und Überkreuzungen ist.
Es ist ein Individuum, das aus dem Genotyp exprimiert wird, um auf Anpassungsfähigkeit bewertet zu werden.
Der Genotyp ist Baumstruktur
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)
Ich habe versucht, ein einfaches Problem von OpenAI Gym, einer Simulationsumgebung für das Lernen von Verstärkung, mit GRAPE zu lösen.
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.
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.
Folgendes habe ich ausgespuckt, um diesen automatisch generierten Algorithmus in Python ausführbar zu machen:
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