Uczenie maszynowe nie jest dziedziną nauki bardzo odległą od teorii gier. Teoria gier zajmuje się szukaniem strategii działania w sytuacji gdy dwa lub więcej obiektów działają w jednym środowisku i występuje między tymi obiektami konflikt interesów. Natomiast uczenie maszynowe, a w szczególności uczenie maszynowe ze wzmocnieniem, pokazuje nam jak na podstawie obserwacji tego środowiska (dane) zmaksymalizować metrykę (nasz interes). I mimo iż czasem wydaje nam się, że jesteśmy w tej grze sami, to często gramy po prostu przeciwko naturze, która jest chaosem. Okej, mamy już więc luźno spięte uczenie maszynowe i teorię gier. Gdzie w tym wszystkim jest StarCraft?
Uczenie ze wzmocnieniem
Okazuje się, rozwiązywanie problemów typu uczenie nadzorowane bazujące na ramkach danych, dla niektórych osób jest zbyt nudne. Sytuacja w tych problemach jest jasna, a problem jest dobrze zdefiniowany. Wystarczy tylko wybrać jakiś model i tyle. Ciekawsze natomiast wydają się tematy, które nie mają jasno zdefiniowanego sukcesu. Albo inaczej — sukces jest bardzo dobrze zdefiniowany (wygraj), ale ilość sposobów jak go osiągnąć jest praktycznie nieograniczona. Trudno więc łatwo ocenić, które konkretnie działanie jest tym dobrym, a które tym złym.
Żeby trochę obejść ten problem, zastosowano pewną sztuczkę. Nie będziemy zbyt dokładnie określać poszczególnych kroków, będziemy natomiast premiować za działania, które wydają się dobre, a karać za te, które wydają się złe. Dodatkowo będziemy premiować dużą nagrodą jeśli uda się osiągnąć cel. Taka definicja rozwiązywania problemu to uczenie ze wzmocnieniem.
StarCraft
I w taki właśnie sposób trenowany był model, który ostatecznie wygrał w grę planszową Go. Jednakże granie w Go, to także był relatywnie prosty problem — typy ruchów były bardzo ograniczone (połóż kamień), a model miał przez cały czas dostęp do widoku całej planszy do gry. A co gdyby część informacji była ukryta?
StarCraft to komputerowa gra strategiczna, gdzie informacja o poczynaniach przeciwnika jest faktycznie ukryta. Gracz, jak i przeciwnik mają do dyspozycji gamę kilkunastu jednostek bojowych o różnych cechach. Mogą także realizować różnorakie strategie typu zwiad i nękanie. Albo ukrywanie się i akumulacja zasobów. Może to być też akumulacja armii i zastawianie pułapek. Mogą również dowolnie miksować te podejścia. Z punktu widzenia możliwości potencjalnych działań złożoność tutaj jest ogromna. Zresztą, wystarczy spojrzeć na przykładową kompilację momentów z tej gry:
Sam nie do końca rozumiem, co tam się dzieje w niektórych momentach. Czyż nie brzmi to jak fajny problem do rozwiązania przy pomocy uczenia maszynowego?
PySC2
Do takiego wniosku musieli dojść inżynierowie z DeepMind, bo udało im się dogadać z autorami gry StarCraft — firmą Blizzard i wspólnie przygotowali środowisko do tworzenia sztucznej inteligencji grającej właśnie w tę grę. Środowisko to nazywa się PySC2 i jest rozwijane jako projekt open source bazujący na Pythonie. Czy potrzebujemy czegoś więcej?
Okazuje się, że tak. Ale to również zostało uwzględnione w tym projekcie. Pierwszy element, którego mogłoby nam brakować to dane. Dostajemy tutaj całą masę replayów gier ligowych z kilku ostatnich lat. Są tam wymiatacze, ale też gracze niedzielni. Mamy więc całe spektrum pomysłów.
Drugim elementem, którego nam może brakować to środowisko do symulacji. W uczeniu ze wzmocnieniem nasz proces wygląda bowiem następująco: agent (czyli model) obserwuje świat. Po obserwacji podejmuje decyzję. Działa na podstawie tej decyzji. Obserwuje, jak świat zareagował (czyli wraca na początek tej pętli). Wszystko to się powtarza, aż agent wygra lub przegra. W naszym przypadku będziemy po prostu potrzebowali gry, w którą nasz model będzie mógł grać. I ją również dostajemy w zestawie. W systemie Windows możemy mieć nawet podgląd z poziomu gry jak nasz agent AI sobie radzi. Na Linuksach musimy się natomiast zadowolić prostrzą wizualizacją poczynań naszego agenta:
StarCraft — Podsumowanie
Projekt PySC2 powstał jako próba udowodnienia, że z odpowiednią ilością danych i mocy obliczeniowej możemy próbować wytrenować sztuczną inteligencję, zdolną pokonać człowieka w typowo człowieczych zadaniach. No bo klasyczne boty grające w StarCrafta zupełnie sobie w niego nie radziły i nie stanowiły nawet sensownych sparring partnerów dla topowych ligowych zawodników. I zdaje się, że powoli najnowsze AI wytrenowane przy pomocy tego systemu zbliżają się do pokonania najlepszych światowych graczy. Najfajniejsze jest to, że Ty też możesz wytrenować swoje super AI i powalczyć z najlepszymi. Daj znać, jak Ci poszło!