Laut gedacht
MarIO ist ein selbstlernendes Computerprogramm, das durch Erfahrungen lernt - in diesem Fall, wie man einen anfangs nichtswissenden Mario dazu bringt, alleine seine Levels zu absolvieren.
04.07.2015
04.07.2015
Bewerten, Faven und mehr
Bewertung wurde übermittelt
Du kannst leider nicht mehr als einmal bewerten!
Weird, Cool, WTF
Besondere Kommentare
d0dgeTh1s
d0dgeTh1s
Kommentar schreiben
So funktionieren also Asian Skills ... bzw deren Gehirne ^^
Vorname "MarIO", Nachname "Skynet"
Es gibt noch zwei Fortsetzungen zu diesem Video:
www.youtube.com/watch?v=iakFfOmanJU www.youtube.com/watch?v=S9Y_I9vY8Qw
Quellcode: NEATEvolve.lua - Pastebin.com
Kann man damit bessere Diablo III Bots machen?
hat sich das irgend jemand wirklich bis zu Ende angrhört ???
ich weiss, das ist zwar schon fuer bloede erklaert - aber wenn ihr wuesstet wie bloed ich bin... aerger mich immer das ich sowas nicht verstehe!
bloede sache :/
Die Zukunft wird berechnet, bitte warten Sie. Ich bin gespannt was uns in den nächsten Jahren in diesem Bereich erwartet. Wird es so kommen, dass der Döner den Menschen ersetzen wird?
SkynetIO
Hierbei handelt es sich um einen Genetischen Algorithmus, der mit zufällig generierten künstlichen neuronalen Netzen gefüttert wird.
Ich habe mit beidem schon gearbeitet, bin aber noch nie auf die Idee gekommen, beides miteinander zu kombinieren. Ziemlich geil.
Wer mehr über die Thematik wissen möchte:
www-e.uni-magdeburg.de/harb ich/genetische_algorithmen/genetische_al gorithmen.pdf
geb.uni-giessen.de/geb /volltexte/2004/1697/pdf/Apap_WI_1997_10 .pdf
www-e.uni-magdeburg.de...he_algorithmen.pdf geb.uni-giessen.de...df/Apap_WI_1997_10.pdf
Also ich persönlich sehe das eher als einen Trial&Error Verfahren. Mario ist halt das Level hunderte Male durchlaufen und zwar so lange, bis er irgendwann am Ziel war. Der einzige Unterschied, den ich hier zu einer klassischen Ablaufsteuerung sehe ist, dass Mario mehr oder minder auf äußere Einflüsse eingeht. Allerdings hilft die komplette Entwicklung in einem anderen Level überhaupt nichts. Das "erlernte" Wissen ist also nicht abstrahierbar und damit genauso nutzlos, wie wenn er Bäcker gelernt hätte, und jetzt Wagenräder bauen soll.
Stimmt, sofern sich die Umgebung ändert, fängt er vom "Wissensstand" wieder bei Null an. Der grundlegende Algorithmus sieht so aus das er von Anfang nach rechts läuft und dabei springt. Dies macht er Durchlauf für Durchlauf. Bei nicht erfolgreichem Lauf, läuft er an dem gescheiterten Punkt für Bruchteile von Sekunden und macht danach wieder seine Spring- und Laufbewegung.
Ich habe nicht das Gefühl, wobei dies schwer zu sagen ist, dass er lernt bei Hindernissen (Löchern, Absätzen & Tieren) zu springen und sich so Wissen anzueignen. //Trotzdem sehr interessantes Projekt:-).
Das mag in dem Video so aussehen, aber was dort passiert ist viel komplexer.
Der Algorithmus würde auch bei veränderter Umgebung nicht wieder bei Null anfangen. Er hat tatsächlich gelernt. Nur wenn völlig neue Elemente hinzukommen würden, die im ersten Level noch nicht vorkamen, müsste er diese neu erlernen, z.B. neue Gegnertypen mit neuen Fähigkeiten.
Was dort tatsächlich passiert ist künstliche Evolution. Die Super Marios, die wir am Anfang sehen und nur nach rechts oder gar nicht laufen, sind noch ziemlich dumm, haben also eine geringe Fitness und werden mit der Zeit aussortiert. Durch künstliche "Paarung" und "Mutation" der stärksten Neuronalen Netze und natürliche, bzw. in diesem Fall künstliche, Auslese über mehrere Generationen hinweg, entwickeln sich immer neue und stärkere Neuronale Netze, während Schwächere aussterben.
Am Ende bleiben diejenigen Neuronalen Netze übrig, die in der Lage sind, das Level zu schaffen. Wenn dieselben Neuronalen Netze auf das nächste Level angesetzt werden, würden sie dieses nicht unbedingt schaffen, aber auch keineswegs bei Null anfangen. Sie hätten schon viel gelernt und würden sich lange nicht so dumm anstellen, wie die Neuronalen Netze der Anfangspopulation. Aber genau wie in der Evolution, müssten Sie sich an Veränderungen der Umgebung anpassen.
Analogie: Aus dem Frühmenschen müsste sich ein moderner Mensch entwickeln, aber man müsste nicht wieder bei den Einzellern starten ;)
Dass Mario, wie ich schrieb, bei einem neuen Level mit dem Wissenstand "Null" anfängt, das stimmt natürlich nicht.:P Er hat sich ja über die einzelnen Durchläufe (Evolution) etwas angeeignet was er immer weiter verfeinert hat (Mutationen), bis er erfolgreich war und baut darauf auch bei veränderter Umgebung (bspw. neues Level) drauf auf.
Naja, aber der Algorithmus hat tatsächlich gelernt bei Hindernissen (Löchern, Absätzen & Tieren) zu springen, auch wenn diese in einem neuen Level beispielsweise in einer anderen Reihenfolge und unterschiedlicher Menge/Länge vorkommen würden.
Möglich wäre es, dass der Algorithmus dementsprechend erweitert werden könnte, dass er Hindernissen (Löchern, Absätzen & Tieren) ausweicht, aber im aktuellen Quelltext hab ich auf die Schnelle nichts entdeckt was darauf hinweist.
Natürlich findest du es nicht im Quelltext. Er ist ja auch nicht darauf programmiert Hindernissen auszuweichen, sondern er ist darauf programmiert ein Neuronales Netz zu finden, das in der Lage ist Hindernissen ausweichzuweichen. Und wie das entsprechende Neuronale Netz funktioniert, steht ja nicht im Quellcode. Im Quellcode steht ja nur wie die Lösung gefunden wird, aber nicht wie die Lösung, die am Ende gefunden wird, auch aussieht. Das Neuronale Netz wird aber ja im Video eingeblendet. Wenn du verstehst, wie das Neuronale Netz, das im Video eingeblendet wird funktioniert, dann verstehst du auch, warum es nicht nur dieses eine Level schaffen kann. Das Neuronale Netz hat einen ziemlich primitiven Sehsinn, durch den es Hindernisse erkennen kann. Zumindest die, die in dem Level auch schon vorgekommen sind. Und es weiß, wie es auf Hindernisse zu reagieren hat. Es wird nicht einfach eine simple Sequenz abgearbeitet, wie das manche hier vielleicht vermuten, weil es in dem Video nicht ausführlich genug erklärt wurde.
Der Quelltext musst also nicht erweitert werden. Der Algorithmus kann JEDES Level schaffen. Mit jedem Level kommen natürlich neue Herausforderungen, die er erst dazulernen muss, z.B. neue Gegnertypen, neue Typen von Hindernissen etc., aber das ist ja beim Menschen genauso. Der Quellcode bleibt aber die ganze Zeit derselbe.
Ach So ist dies und wird umgesetzt... Danke für die Erläuterungen!
ziemlich schräg, wo es das naheliegendste überhaupt ist.
das sagst du jetzt hinterher, nachdem jemand anderes es dir vorgekaut hat, aber fakt ist: genetische algorithmen gibt es seit 1975 (J. Holland, D. Goldberg), künstliche neuronale netze sogar schon seit 1943 (Warren McCulloch, Walter Pitts) und auf die idee beides zu kombinieren, ist man das erste mal 2002 (Ken Stanley) gekommen.
sowas entwickelt man wenn man keine Freunde hat
...oder zu viele.. ich arbeite da an etwas...
Heisst das, dass du das programmiert hast?
ne deine Freundin weil dus im Bett nicht bringst
Am Anfang eines Satzes, schreibt man groß. Und es könnte nicht schaden, das ein oder andere Komma zu verwenden. Aber das Beste ist, dass dein Kommentar nicht den geringsten Sinn ergibt! XD
Rechtschreibflames omg sowas machen nur dumme Leute denen die Argumente ausgehen
Zweitacc verwendet man wenn man dumm ist
der Drehsprung ist als kleiner Mario nutzlos, nur mit der Feuerblume oder der Feder konnte man damit gegner besiegen. Ausserdem springt Mario dann nicht so hoch.
Falsch, bei 0:27 hast du den Gegenbeweis. Auf diesen Gegner müsste man normalerweise sogar 2mal draufspringen, um ihn zu besiegen. Außerdem gibt es Gegner, die einen töten, wenn man normal auf sie springt, aber nicht mit dem Drehsprung, iirc beispielsweise diese feuerspuckenden Blumen.
Nach links, Idiot!
bloß nicht. da sind die schlimmsten.
stimmt, und weniger geheime Level.
Dein Kommentar wartet deswegen jetzt auf Begutachtung. Falls alles in Ordnung sein sollte, wird er natürlich freigeschaltet.
Deswegen kann ich diesen geänderten Kommentar nicht entgegennehmen.