Po zagraniu zbyt dużej ilości Angry Birds zacząłem obserwować własne strategie. Okazuje się, że opracowałem bardzo specyficzne podejście do uzyskania 3 gwiazdek na każdym poziomie.
To sprawiło, że zastanawiałem się nad wyzwaniami związanymi z opracowaniem systemu uczenia maszynowego, który byłby w stanie grać w Angry Birds. Interakcja z grą i wypuszczanie ptaków jest banalna. Ale jedno pytanie, które zadałem, dotyczy „elementów składowych” systemu.
Wydaje się, że systemy uczenia maszynowego działają w oparciu o proste pojęcia lub zrozumienie problemu. Jest to często kodowane jako funkcje jako dane wejściowe. Wygląda więc na to, że system musi być w stanie zrozumieć niektóre koncepcje wysokiego poziomu, aby wygenerować strategię.
Czy to prawda? Jakie są wyzwania lub trudne części związane z opracowaniem takiego systemu?
EDYCJA 1:
Oto wyjaśnienie. Zdobycie 3 gwiazdek to trudny problem, ponieważ musisz zmaksymalizować liczbę punktów. Można to zrobić na dwa niewyłączne sposoby: 1) Minimalizując liczbę wykorzystanych ptaków (dostajesz 10 000 punktów za każdy nieużywany ptak). 2) Maksymalnie zniszczył szkło, drewno i inne przedmioty. Każdy zniszczony obiekt daje punkty. Za pomocą jednego ptaka można zniszczyć obiekty o wartości ponad 10 000 punktów.
Oto trochę więcej wyjaśnień na temat „koncepcji wysokiego poziomu”. Aby zmaksymalizować punkty opisane powyżej, musisz użyć specjalnych mocy każdego ptaka. Oznacza to więc wystrzeliwanie różnych ptaków o różnych trajektoriach, w zależności od układu mapy. Podczas gry opracowuję strategię, która niszczy określone obszary pewnymi ptakami w określonej kolejności.
Wygląda na to, że bez zrozumienia, jak wykorzystać każdego ptaka do zniszczenia określonego obszaru, system nie mógł nauczyć się zdobywać 3 gwiazdek. Jak więc zarządzasz i kodujesz coś takiego? Jak zapewnić, że system może nauczyć się tych pojęć wysokiego poziomu?
Fajne pytanie!
Wygląda na to, że pytanie dotyczy naturalnej techniki tego rodzaju problemu. Myślę, że naturalną techniką tego typu problemów jest uczenie się przez wzmacnianie (RL). RL mówi o tym, jak agent powinien podejmować działania w środowisku, aby zmaksymalizować pewne pojęcie skumulowanej nagrody. Być może najbardziej znanym algorytmem dla RL jest Q-learning . Myślę, że to pierwsze pytanie na tej stronie o uczeniu się przez wzmacnianie.
Myślę, że to, o co pytasz, jest prawdą, jeśli próbujesz traktować to jako klasyfikację / regresję, ale nie wydają się one odpowiednim narzędziem dla tego problemu. Jest to oczywiście problem RL, w którym należy wziąć pod uwagę sekwencje działań i wyników.
źródło
Sprawdź tutaj, jak robią to inni lub weź udział: Angry Birds AI Challenge http://ai2012.web.cse.unsw.edu.au/abc.html
źródło
właśnie wspomniałem o tym w meta. Koza zastosowała pionierskie algorytmy genetyczne do rozwiązania gry Pacman. skonstruował algorytmiczne prymitywy, które potrafiły wyczuwać i działać. o ile pamiętam, zostały one połączone w drzewa podobne do Lisp, aby stworzyć większe algorytmy. krzyżowanie z drzewami Lisp obejmuje podstawianie lub wymianę poddrzewa reprezentującego wyrażenia algorytmu. funkcją sukcesu jest coś takiego jak „zjedzone kropki” lub „kropki plus zjedzone duchy” lub „czas pozostał przy życiu”. wciąż jest trochę pracy w tym obszarze. w dalszej części tego artykułu znajduje się odnośnik do koza. czas szkolenia może być bardzo długi, a „zbieżność” bardzo stopniowa w przypadku tego rodzaju problemów.
Nauka gry w Pac-Man: Ewolucyjne podejście oparte na regułach autorstwa Gallaghera i Ryana
źródło