Sztuczna inteligencja Alpha Zero po 4 godzinach samodzielnej nauki w dniu 2017-12-04 zdecydowanie pokonała zwycięzcę ubiegłorocznych Mistrzostw TCEC silnik Stockfish 8 w 100 partiowym meczu!
W internecie można znaleźć wiele informacji na temat sztucznej inteligencji (SI, ang. Artificial intelligence – AI).
Badania nad sztuczną inteligencją dokonały szybkiego postępu w wielu różnych dziedzinach, od rozpoznawania mowy i klasyfikacji obrazów po genomikę i odkrywanie leków. W wielu przypadkach są to specjalistyczne systemy, które wykorzystują olbrzymie zasoby ludzkiej wiedzy i danych.
Jednak w przypadku niektórych problemów ta ludzka wiedza może być zbyt kosztowna, zbyt niewiarygodna lub po prostu niedostępna. Dlatego od dawna ambicją badań nad sztuczną inteligencją jest ominięcie tego kroku, tworzenie algorytmów, które osiągają nadludzką wydajność w najtrudniejszych domenach bez ludzkiego wkładu.
Niedawno (marzec 2016) zrobiło się głośno przy okazji wygranej AlphaGo (używał 1.920 CPU i 280 GPU) w starochińskiej grze planszowej Go z nalepszym zawodnikiem na świecie Lee Sedol w 5-partiowym meczu w stosunku 4:1. Ten mecz został uznany przez czasopismo naukowe Science za jedno z przełomowych wydarzeń roku 2016 w badaniach naukowych.
Obecnie podobnie dzieje się za sprawą szachów. Poniżej staram się przybliżyć temat bazując na różnych doniesieniach internetowych.
AlphaZero (AZ), program opracowany przez DeepMind, jest bardziej uogólnioną wersją algorytmu AlphaGo Zero (AGZ), ulepszonego poprzednika AlphaGo, i jest w stanie grać w shogi, w szachy jak i w Go.
Google ujawnił niektóre szczegóły, dlatego wiadomo, że pracują one na sprzęcie (w zasadzie jest wymagany) o ogromnej mocy obliczeniowej wspieranym przez TPU (tensor processing unit) – specjalizowane układy scalone (akcelerator sztucznej inteligencji), opracowane przez Google specjalnie do uczenia maszynowego i dostosowane do TensorFlow (biblioteka oprogramowania typu open source do programowania przepływu danych w wielu zadaniach, używana również w aplikacjach uczenia maszynowego, takich jak sieci neuronowe). Firma Google ogłosiła w 2016, że od ponad roku używa urządzeń TPU w swoich centrach danych i stwierdziła, że zapewniają lepszą zoptymalizowaną wydajność na wat dla uczenia maszynowego.
W maju 2017 roku Google ogłosił drugą generację, a także dostępność TPU w centrach obliczeniowych Google. Urządzenia TPU drugiej generacji dostarczają do 180 teraflopów wydajności, a gdy są zorganizowane w klastry z 64 TPU, zapewniają do 11,5 petaflopsa.
AlphaZero pokonał Stockfish po zaledwie 4 godzinach samodzielnego grania, wykorzystując 5000 modułów TPU pierwszej generacji (do generowania gier) i 64 drugiej generacji (do treningu sieci neuronowych), wszystko to równolegle, bez dostępu do książek debiutów czy tabeli końcówek.
Następnie wyszkolony algorytm grał na jednej maszynie z czterema TPU (4 TPUs v2, single machine). Koszt sprzętu dla pojedynczego systemu, w tym komponentów niestandardowych, został oceniony na około 25 milionów USD.
Różnice pomiędzy Alpha Zero (AZ) oraz AlphaGo Zero (AGZ):
- AZ ma sztywno zakodowane zasady ustawiania hiperparametrów wyszukiwania.
- Sieć neuronowa jest teraz stale aktualizowana.
- Go (w przeciwieństwie do szachów) jest symetryczna (pewne odbicia i obroty); AGZ został zaprogramowany, aby wykorzystać te symetrie. AZ nie jest.
- Szachy (w przeciwieństwie do Go) mogą zakończyć się remisem; dlatego też AZ bierze pod uwagę możliwość remisu.
Porównując przeszukiwanie Drzewa Gry (Monte Carlo Tree Search – MCTS), AlphaZero wyszukuje tylko 80 000 pozycji na sekundę w szachach i 40 000 w shogi (japońskie szachy), w porównaniu do 70 milionów dla Stockfish (podobne osiągi są uzyskiwane na sprzęcie wykorzystywanym w 10 edycji Mistrzostw TCEC) i 35 milionów dla Elmo. AlphaZero niższą ilość ocenionych pozycji, rekompensuje użyciem głębokiej sieci neuronowej, aby bardziej selektywnie skupić się na najbardziej obiecującym wariancie.
We wszystkich partiach meczu AlphaZero przeciwko Stockfish, każdy program otrzymał 1 minutę na posunięcie. AlphaZero otrzymał lepszy sprzęt w stosunku do Stockfish (prawdopodobnie około 2000 procesorów w stosunku do 2). Spośród 100 partii granych od normalnej pozycji początkowej AlphaZero wygrał 28 partii (25 białymi oraz 3 czarnymi) a pozostałe 72 partie zremisował (wynik 64:36).
Były też mecze tematyczne. W 12 seriach 100-partiowych meczów przeciwko Stockfish rozpoczynając w pozycjach 12 najpopularniejszych debiutów, AlphaZero wygrał 290, zremisował 886 i przegrał 24.
Wyniki meczów jednak nie wskazują, że AlphaZero jest lepszym silnikiem szachowym, gdyż
- algorytm AlphaZero otrzymał więcej mocy obliczeniowej – bardzo trudno jest to porównać ale po szczątkowych informacjach można sądzić że nawet do 1000 razy
- dla AlphaZero – 4 TPUs v2, single machine, o wydajności 180 TFLOPs, to odpowiednik około 2000 procesorów [niektórzy mówią o rdzeniach]
- dla Stockfish do 2 procesorów [w sumie 64 rdzenie 1GB hash, o wydajności około 100 GFLOPs – może to być 32-rdzeniowy procesor E5-2699 V5 wykorzystywany przez Google przy obsłudze usług chmurowych]
Ponadto są wysuwane inne zastrzeżenia jak to, że
- wykorzystano ubiegłoroczną wersję Stockfish (zdecydowanie słabszą), czy
- brak biblioteki debiutów i tabeli końcówek (Stockfish jest zoptymalizowany pod tym kątem ale miał wyłączoną możliwość korzystania z biblioteki, natomiast AlphaZero przygotował swoją bibliotekę dobrych debiutów trenując 4h) oraz
- nienaturalne sztywne tempo gry 1m/pos (Stockfish nie mógł stosować swojej heurystyki zarządządzania czasem).
Trudno jest porównać oba algorytmy pracujące na sprzęcie o różnej architekturze i różnej mocy obliczeniowej. Należy wierzyć, że w przyszłości zostaną stworzone warunki zbliżone dla optymalnej pracy obu programów i zostanie zorganizowany mecz lub turniej na równych warunkach (AlphaZero zawsze może wystartować w TCEC, np w 11 edycji). Wkrótce silniki szachowe będą zapewne wykorzystywać również niektóre idee zastosowane w AlphaZero co może znacząco podnieść ich siłę gry.
Google udostępniło tylko 10 partii (tylko wygrane), które można obejrzeć poniżej.
Trzeba jednak przyznać, ze partie są ciekawe a styl gry AlphaZero zbliżony do człowieka.
=====
===
Aktualizacja 2021-12-09
Jednak doszło do meczu rewanżowego pomiędzy programami szachowymi Alpha Zero i Stockfish!
Wynik znowu zdecydowanie korzystniejszy dla Alpha Zero: +155=839-6 (w sumie 575,5:425,5)!
Poniższe informacje starają się przybliżyć drugi pojedynek i są uzupełnieniem wcześniejszego wpisu „Czy szachy zostały rozwiązane?” z 09.12.2017. Bazują one na publikacjach przedstawionych na witrynach takich jak Wikipedia, Chess Programming Wiki, chess.com, i wielu innych.
Jak wspomniano w poprzednim wpisie z grudnia 2017, program AlphaZero, korzystający z pojedynczej maszyny z 4 TPU pierwszej generacji, wygrał mecz składający się ze 100 partii z silnikiem szachowym Stockfish 8, korzystającym z 64 wątków i tabeli transpozycji 1GB, w stosunku +28=72-0, z czego opublikowano 10 partii. Pomimo możliwej znacznej przewagi sprzętowej AlphaZero i krytykowanych warunków gry, jest to ogromne osiągnięcie.
W ostatecznej wersji artykułu, poddanej niezależnej recenzji naukowej (peer review), opublikowanym w czasopiśmie naukowym Science w grudniu 2018 roku wraz z materiałami uzupełniającymi, poinformowano o meczu składającym się z 1000 partii, z których opublikowano około 200. W sumie AlphaZero wygrywa 155 partii i przegrywa 6 przeciwko najnowszej wersji Stockfisha (dostępnej w czasie meczu, czyli Stockfish 8, wersja rozwojowa z 13 stycznia 2018, zbliżona do Stockfish 9, Brainfish z książką Cerebellum).
Stockfish został skonfigurowany zgodnie ze swoimi ustawieniami w superfinale sezonu TCEC 9 z 2016 roku: 44 wątki na 44 rdzeniach (dwa procesory Intel Xeon Broadwell x86-64 2,2 GHz z 22 rdzeniami, pracującymi pod systemem Linux), tabela transpozycji 32 GB i 6-bierkowa baza końcówek Syzygy. Tempo gry wynosiło 3 godziny na partię plus 15 sekund na posunięcie. AlphaZero zastosowało prostą strategię kontroli czasu: myślenie przez 1/20 pozostałego czasu. Każdy MCTS (Monte-Carlo Tree Search) został wykonany na jednej maszynie z 4 TPU pierwszej generacji.
AlphaZero i Stockfish (z wyjątkiem Brainfish) nie użyły książek debiutowych, rozegrano 12 typowych ludzkich pozycji, a także pozycje z superfinału sezonu 9 TCEC 2016, pierwotnie wybrane przez Jeroena Noomena. Aby zapewnić różnorodność przeciwko przeciwnikom (Brainfish), AlphaZero zastosowało pewien stopień losowości w swoich ruchach debiutowych. Pozwoliło to uniknąć dublowania partii, ale również spowodowało to więcej przegranych AlphaZero.
Warunki były zdecydowanie bardziej wyrównane, chociaż nadal pozostaje kwestia ogromnej różnicy w zainwestowanych funduszach w sprzęt dla obu programów.