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?