Neuronales Netzwerk spielt Super Mario

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Neuronales Netzwerk spielt Super Mario
Hab hier ein Video auf Youtube verlinkt bekommen, bei dem ein Neuronales Netzwerk ein Level in Super Mario löst.
Klick mich hart!

Ist ziemlich cool, aber ist das nun nicht “overfitting”?
Hört sich für mich so an, als wäre das Neuronale Netz nun nur in der Lage dieses Level zu spielen. Was passiert, wenn man ein anderes Level startet?

[size=5](Hab die gleiche Frage auch auf YT in die Kommentarfunktion geschrieben^^)[/size]


Das sieht für micht so aus, als sei das Netzwerk tatsächlich auf dieses Level Overfittet (Überanpassung). Also höchstwahrscheinlich hast du maßgeblich recht.

Prinzipiell kann man das Netwerk aber schon so schreiben, dass es tatsächlich lernt die Dinge zu verarbeiten und vorauszuplanen, das ist in Mario aber nur bedingt möglich, da viele Entscheidungen getroffen werden müssen aufgrund von Dingen, die zum Entscheidungsmoment noch gar nicht sichtbar sind. Nichtsdestotrotz wird ein solches Netzwerk andere Level schon besser spielen können, als ein noch unttrainiertes.


Verstehe nicht so ganz was du mit „zum Entscheidgundsmoment noch garn nicht sichtbar“ meinst.
Das man jetzt eine Entscheidung trifft, die einem dann kurze Zeit später zum Verhängnis wird? Aber eben dies konnte man nicht wissen?
Sagen wir z.B. vor 10 Sekunden eine Abzweigung in eine Sackgasse genommen, und man kann nicht mehr zurück → Also muss man sterben!
(Auch wenn ich mich nicht erinnern kann, dass es solche Sackgassen in Super Mario gab)

Aber auch das müsste das neuronale Netz doch irgendwann rausbekommen und irgendwann den richtigen Weg nehmen

Sprich, es weiß jetzt schon, dass es sinnvoll ist nach rechts zu laufen, und fängt das Level nicht wieder mit rumstehen an?


Ja, es muss ja kein so großes Delay sein. Mir ging es nicht zwingend um sterben, sondern eher um schnell sein und davon waren in dem Video schon einige dieser Stellen dabei.

Ja, aber dafür muss es erst neu trainiert werden. Und das ist vielleicht nicht so einfach, wenn es schon overfittet wurde.

genau :wink: Es weiß aber sicherlich auch Dinge wie: Bei einer Wand ist ein Sprung gelegentlich hilfreich.


Das overfitting ist wohl weniger das Problem, ein von-0-anfangen waere wohl trotzdem schlechter, weil man dann das nach rechts laufen wieder lernen muesste.

Das Problem ist eher, was das Neuronale Netz hier lernt bzw. was nicht: Es lernt das Level auswendig. Es wird ja auch nur auf genau diesem einen Level trainiert, bei dem sich selbst die Gegner immer genau gleich verhalten. Fuer Super Mario ist das optimal, aber dann sollte man sich fragen, ob der genetische Algorithmus allein nicht ausreichen wuerde.

Was es eher nicht lernt, ist, wie man Gegnern ausweicht oder wann man abspringen muss, um unterschiedlich hohe Hindernisse zu ueberwinden. Und das ist ja das, was man eigentlich mit Neuronalen Netzen lernen will: Die Eingabeneuronen als Handlungsgrundlage nutzen (nicht um nur auf einen Zeitpunkt zu mappen, zu dem man dann auf eine bestimmte Taste druecken muss). Wuerde man das Terrain und die Spawnpunkte der Gegner in jeder Trainingsrunde aendern, koennte man das vermutlich. Aber dann werden Spruenge auf Terrains, die noch gar nicht sichtbar sind, natuerlich nicht mehr optimal ausgefuehrt.

(Was vermutlich auch ginge, waere das Level so lang und variabel zu machen, dass das Mapping von einem Bildschirm auf einen Zeitpunkt nicht mehr eindeutig ist…)