Der neuroevolutionäre Algorithmus lernt Mario zu spielen
SethBling ist bekannt für seinen Kanal, auf dem verschiedene Tipps und Erfindungen für die Minecraft-Welt veröffentlicht werden. Oft erscheinen andere Inhalte. Zum Beispiel steht Mario auf der Interessenliste des Vloggers. Es wurde SethBling der erste vergangen Super Mario World auf der Konsole mit einem Bug mit Speichern Bearbeitung durch Gegenstände im Spiel zu bewegen. Seine neuesten Videos und Streams haben immer noch das gleiche Spiel. Aber es ist nicht eine Person, die spielt, sondern ein neuroevolutionärer Algorithmus, den SethBling selbst geschrieben hat.Die Implementierung heißt MarI / O. Oben auf dem Bildschirm wird eine grafische Darstellung des neuronalen Netzwerks erstellt. Links wird gezeigt, wie der Algorithmus das Level sieht - er versteht die Umgebung und Position des Spielers. Weiße Quadrate sind Blöcke, auf denen der Spieler stehen kann, schwarze bewegen Objekte. Rechts befinden sich Schaltflächen, auf die ein neuronales Netzwerk klicken kann. Die Neuronenverbindungen befinden sich in der Mitte, von denen jeweils nur ein Teil verwendet wird.Die Struktur ist komplex, aber SethBling hat kein neuronales Netzwerk erstellt. Dies geschah durch seine Implementierung des neuroevolutionären Algorithmus. Das Programm versuchte, Aktionen durchzuführen, dann wurde ihre Wirksamkeit anhand der zurückgelegten Entfernung bewertet. Das Training dauerte einen Tag. Die Null-Generation war sehr dumm, einige Leute standen einfach still. Wenn der Spieler zu lange stand, wurde die Simulation beendet. Einige haben gelernt, sich vorwärts zu bewegen und die Anwesenheit von Hindernissen und Feinden zu ignorieren. Dies führte zu einem Treffen mit Feinden und Kugeln, aber es gab zumindest einige Fortschritte. Einer der Individuen der Null-Generation. Die grüne Linie ist eine positive Verbindung. Wenn ein Block hineinkommt, wird dieselbe Farbe an den Ausgang übertragen. Dieses Neuron zwingt den Spieler, sich vorwärts zu bewegen, während sich eine Plattform vor ihm befindet. Die rote Linie ist negativ und die Ausgabe ist das Gegenteil der erhaltenen Farbe.
Nachdem der Spieler mehrere Feinde über seinem Kopf getroffen hat, springt er mehrmals und befindet sich auf einer Plattform, die in einer Klippe endet. Da sich an der richtigen Stelle kein Block mehr befindet, bleibt diese Person hier stehen. Komplexere und möglicherweise erfolgreichere Individuen haben mehr Neuronen, aber das Funktionsprinzip bleibt dasselbe.Um das neuronale Netzwerk lernen zu lassen, wird eine Auswahl angewendet. Die Leistung jedes Einzelnen wird anhand der zurückgelegten Strecke und der Geschwindigkeit geschätzt. In der nächsten Generation werden nur die effektivsten Individuen gekreuzt, dann treten Mutationen auf. Der Vorgang wird so oft wie nötig wiederholt. Es dauerte 35 Generationen, um ein Level zu absolvieren. Die perfekteste Person erhielt einen Fitnesswert in der Größenordnung von 4000.
SethBling hat sich kein Grundprinzip von Grund auf ausgedacht. Bei seiner Erstellung verwendete er die bereits existierende wissenschaftliche Arbeit zu NEAT (NeuroEvolution of Augmenting Topologies), der Neuroevolution wachsender Topologien. Es wird auch beschrieben, wie Generationen in Arten unterteilt werden können, was nicht alle genetischen Algorithmen versuchen. MarI / O wurde in Lua mit dem BizHawk- Emulator geschrieben . SethBling hörte hier nicht auf. Er zwang den Algorithmus, andere Plattformer zu durchlaufen, und übertrug den Lernprozess in seinem Twitch-Konto. Unter den Spielen war der Klassiker Super Mario Brothers. MarI / O konnte das erste Level bestehen, blieb aber bereits beim zweiten stehen. Trotz des Fehlers entdeckte der Algorithmus versehentlich einen kleinen Fehler, der möglicherweise für Speedraner nützlich sein könnte.
Einige Personen steckten in Super Mario World an einer der Wände in der Donut Plains 4-Ebene fest. Es hat einige Zeit gedauert, um zu verstehen, dass Sie gegen die Wand rennen müssen und nicht darauf springen müssen. Die nächste Generation konnte bereits gegen die Wand rennen, aber beim nächsten Hindernis hielten Einzelpersonen an - sie vergaßen, wie man vor das Hindernis springt. Nach einigen Generationen erkannte der Algorithmus, wo die Taste links gedrückt und wo gesprungen werden musste. MarI / O konnte dieses Level nie beenden. Eines der Rohre ist zu hoch, um darauf zu springen. Verwenden Sie stattdessen die Plattform eines der Hammer Brothers. SethBling unterbrach den Lernprozess und glaubte, dass der Algorithmus dies niemals lernen würde.
Im dritten Video spielt MarI / O Super Mario Kart im Zeitfahrmodus ohne Feinde. Winterbunny half beim Ändern des Skripts, um in diesem Spiel zu funktionieren. Obwohl sich Super Mario Kart von Plattformspielern unterscheidet, ist der Lernprozess der gleiche. Der Algorithmus ist zunächst dumm und kann nichts machen. Einzelpersonen versuchen nur, auf bestimmte Schaltflächen zu klicken. Aber auch in der Null-Generation gab es Menschen, die gelernt haben, recht gut zu fahren.Bereits in der siebten Generation wurde eine Person gefunden, die 5 Runden in 2,5 Minuten fuhr. Diese Zahl ist schlecht, der Weltrekord liegt bei etwa einer Minute. Eine Person stieß ständig auf Hindernisse und wickelte manchmal Kreise ein. Eine Person aus der neunten Generation zeigte ein gutes Ergebnis von 1,5 Minuten, sie versuchte sogar, auf der Straße zu bleiben, ohne an die Seitenlinie zu gehen.Pastebin MarI / O-QuellcodeEin weiterer Twitch-Kanal, auf dem MarI / O das Spielen verschiedener Spiele lerntSource: https://habr.com/ru/post/de381315/
All Articles