Nachdem ich viel zu viel Angry Birds gespielt hatte, begann ich meine eigenen Strategien zu beobachten. Es stellt sich heraus, dass ich einen sehr spezifischen Ansatz entwickelt habe, um auf jeder Ebene 3 Sterne zu bekommen.
Das brachte mich auf die Herausforderung, ein maschinelles Lernsystem zu entwickeln, mit dem Angry Birds gespielt werden kann. Die Interaktion mit dem Spiel und das Starten der Vögel ist trivial. Aber eine Frage, die ich hatte, betrifft die "Bausteine" des Systems.
Maschinelle Lernsysteme scheinen mit einfachen Konzepten zu arbeiten oder das Problem zu verstehen. Dies wird häufig als Merkmale als Eingaben codiert. Das System muss also in der Lage sein, einige Konzepte auf hoher Ebene zu verstehen, um eine Strategie zu generieren.
Ist das wahr? Was sind die Herausforderungen oder schwierigen Teile bei der Entwicklung eines solchen Systems?
EDIT # 1:
Hier ist eine Klarstellung. 3 Sterne zu bekommen ist ein schwieriges Problem, da man die Punkte maximieren muss. Dies kann auf zwei nicht ausschließliche Arten erfolgen: 1) Minimierung der Anzahl der verwendeten Vögel (Sie erhalten 10.000 Punkte für jeden nicht verwendeten Vogel). 2) Maximiert die Zerstörung von Glas, Holz und anderen Objekten. Jedes zerstörte Objekt gibt dir Punkte. Es ist möglich, Objekte im Wert von mehr als 10.000 Punkten mit einem einzigen Vogel zu zerstören.
Hier finden Sie weitere Erklärungen zu "High-Level-Konzepten". Um die oben beschriebenen Punkte zu maximieren, müssen Sie die besonderen Kräfte jedes Vogels einsetzen. Das bedeutet also, dass je nach Kartenlayout verschiedene Vögel mit unterschiedlichen Flugbahnen abgefeuert werden. Und während ich spiele, entwickle ich eine Strategie, die bestimmte Gebiete mit bestimmten Vögeln in einer bestimmten Reihenfolge zerstört.
Es scheint, dass das System nicht lernen könnte, 3 Sterne zu bekommen, ohne zu verstehen, wie man jeden Vogel einsetzt, um ein bestimmtes Gebiet zu zerstören. Wie verwalten und codieren Sie so etwas? Wie stellen Sie sicher, dass das System diese übergeordneten Konzepte erlernen kann?
quelle
Coole Frage!
Anscheinend handelt es sich bei dieser Frage um die natürliche Technik für diese Art von Problem. Ich denke, die natürliche Technik für diese Art von Problem ist das Verstärkungslernen (RL). In RL geht es darum, wie ein Agent in einer Umgebung Maßnahmen ergreifen sollte, um eine möglichst hohe kumulative Belohnung zu erzielen. Der vielleicht bekannteste Algorithmus für RL ist das Q-Lernen . Ich denke, dies ist die erste Frage auf dieser Website zum Thema Lernen zur Stärkung.
Ich denke, was Sie fragen, ist wahr, wenn Sie versuchen, dies als Klassifizierung / Regression zu betrachten, aber diese scheinen nicht das richtige Werkzeug für dieses Problem zu sein. Dies ist natürlich ein RL-Problem, bei dem Abfolgen von Aktionen und Ergebnissen berücksichtigt werden müssen.
quelle
Überprüfen Sie hier, wie andere es tun, oder beteiligen Sie sich selbst: Angry Birds AI Challenge http://ai2012.web.cse.unsw.edu.au/abc.html
quelle
Ich habe das gerade in Meta erwähnt. Es gab eine bahnbrechende Verwendung genetischer Algorithmen von Koza, um das Videospiel Pacman zu lösen. Er konstruierte algorithmische Primitive, die erkennen und handeln konnten. Soweit ich mich erinnere, wurden diese in Lisp-ähnlichen Bäumen kombiniert, um größere Algorithmen zu erstellen. Crossover mit Lisp-Bäumen beinhaltet das Ersetzen oder Austauschen von Teilbäumen, die die Algorithmusausdrücke darstellen. die erfolgsfunktion ist so etwas wie "punkte gefressen" oder "punkte plus geister gefressen" oder "zeit am leben geblieben". In diesem Bereich gibt es noch einige Arbeiten. Es gibt einen Koza-Verweis in diesem Artikel, der folgt. Die Übungszeit kann sehr lang und die "Konvergenz" für diese Art von Problemen sehr allmählich sein.
Pac-Man lernen: Ein evolutionärer, regelbasierter Ansatz von Gallagher und Ryan
quelle