Stockfish - najsilniejszy silnik szachowy na świecie

Stockfish - najsilniejszy silnik szachowy na świecie
Stockfish to najsilniejszy obecnie silnik szachowy na świecie. Jego szacowany obecnie ranking ELO wynosi około 3550. Kod programu powstał na podstawie innego silnika szachowego, Glaurung. Główni twórcy Stockfisha - Marco Costalba, Tord Romstad i Joona Kiiski - zdecydowali się upowszechnić program na licencji wolnego oprogramowania (zezwalającej użytkownikom na modyfikację i redystrybucję zmodyfikowanych wersji oprogramowania). Na platformie testowej Fishtest internauci mogą przesyłać poprawki do kodu źródłowego programu lub współuczestniczyć w testach nowych wersji silnika. Program Stockfish działa na platformach Windows, Linux, Android oraz Mac OS X.

W latach czterdziestych XX wieku skonstruowano pierwsze komputery. Zaczęto się wtedy zastanawiać nad tym, jak przełożyć na język komputerów zasady gry w szachy i opracowano podstawy teoretyczne teorii gier, oparte na algorytmie (skończony ciąg jasno zdefiniowanych czynności, koniecznych do wykonania zadania) min.-max. Brytyjski matematyk Alan Turing, zaprojektował w 1951 roku program szachowy, zdolny do rozegrania partii. Program, ten z powodu braku odpowiedniego sprzętu, pozostał jedynie na papierze. Dynamiczny rozwój technik komputerowych, ścisła współpraca z wybitnymi szachistami nad strategią i taktyką oraz włączenie do programów baz danych debiutów i końcówek, sprawiły, że komputery zaczęły wygrywać z ludźmi, a obecnie grają znacznie lepiej niż najlepsi na świecie szachiści.

Jeżeli chcemy podnosić poziom gry i odnosić sukcesy w turniejach, to powinniśmy korzystać z komputerów, które stały się niezbędnym narzędziem dla szachistów. Bazy szachowe i programy umożliwiają analizę skomplikowanych pozycji oraz przygotowanie otwarcia i strategii gry na konkretnego przeciwnika. Szachiści zabierają teraz ze sobą na turnieje laptopy ze zbiorami partii, zamiast stosów książek i notatek. Dzięki Internetowi możemy na bieżąco obserwować przebieg turniejów szachowych. Komputery i silniki szachowe ułatwiają pracę trenerom w zbieraniu materiałów szkoleniowych i w przygotowaniach do zajęć, stały się niezbędne przy organizacji imprez szachowych i sędziowaniu turniejów, umożliwiają systematyczną łączność pomiędzy trenerem i zawodnikiem.

W 1957 roku Alex Bernstein stworzył pierwszy kompletny program do gry w szachy, a obsługiwał go monstrualnej wielkości lampowy komputer IBM 704 (1). Wykonanie ruchu zajmowało programowi około 8 minut, co  pozwoliło przewidywać rozwój sytuacji na dwa posunięcia do przodu przy siedmiu kombinacjach do wyboru - co daje jasno do zrozumienia, że nie reprezentował najwyższego poziomu.

1. Programista IBM Alex Bernstein przy konsoli komputera IBM 704,
źródło: https://shorturl.at/fgoI8

Najstarszy program, który rzeczywiście grał w szachy, powstał w 1958 roku. Program szachowy NSS działał na  komputerze Johnniac (2). Zastosowano w nim elementy logiki z nowej dziedziny wiedzy - heurystyki, badającej twórcze czynności intelektu. Przez co, zamiast tłumaczenia mechanicznego przeszukiwania wariantów, zaczęto kłaść większy nacisk na system analizowania wyboru najlepszej potencjalnej zagrywki. W 1958 roku program szachowy (NSS) po raz pierwszy pokonał człowieka. Graczem będącym człowiekiem była sekretarka, której gry w szachy uczono na godzinę przed grą z komputerem.

2. Komputer Johnniac,
źródło: https://shorturl.at/acdB3

W 1977 roku w USA zbudowano Belle, autorstwa Kena Thompsona i Joego Condona - pierwszą maszynę wielkiej mocy przeznaczoną wyłącznie do gry w szachy, która analizowała 180 tysięcy pozycji na sekundę, co dawało możliwość obliczenia dziewięciu ruchów naprzód (3). Komputer ten był stale unowocześniany, osiągając po kilku latach poziom gry porównywalny do dzisiejszego mistrza FIDE.

3. Komputer Belle,
źródło: https://shorturl.at/bsJVZ

W roku 1989 IBM rozpoczął prace nad skonstruowaniem superkomputera szachowego. W efekcie wieloletnich prac, z udziałem zarówno wybitnych programistów, jak i szachistów, powstał złożony z 256 procesorów superkomputer szachowy o nazwie Deep Blue. W maju 1997 roku, dwadzieścia lat od skonstruowania pierwszego komputera do gry w szachy, doszło do historycznego meczu komputera Deep Blue z mistrzem świata Garrim Kasparowem, wygranym przez komputer 3½ do 2½ (dwie wygrane Deep Blue, jedna Kasparowa, trzy remisy) (4).

4. Garri Kasparow przegrał mecz z komputerem Deep Blue,
źródło: https://shorturl.at/dtJT0

Obecnie dostępne są zarówno komercyjne, jak i bezpłatne silniki szachowe, które można uruchamiać na laptopach i komputerach domowych, są one w stanie pokonać najlepszych na świecie szachistów. Aby komunikować się z silnikiem, potrzebny jest program typu GUI (ang. Graphical User Interface - graficzny interfejs użytkownika). Jednym z najlepszych jest darmowa Arena, mająca też polski interfejs. 

Mistrzostwa najsilniejszych silników szachowych (TCEC)

TCEC (dawniej Thoresen Chess Engine Championship a obecnie Top Chess Engine Championship) jest to cykliczny (sezonowy) komputerowy turniej szachowy organizowany i prowadzony przez Chessdom (jeden z najlepszych i najciekawszych informacyjnych portali szachowych) we współpracy z Chessdom Areną (światową platformą do gry w szachy przez Internet). Celem jest zapewnienie widzom transmisji na żywo wysokiej jakości szachów w partiach z długim czasem namysłu - rozgrywanych wyłącznie między silnikami szachowymi. Jeden sezon jest podzielony na kilka etapów i trwa około 3–4 miesięcy. Mecz finałowy (100 partii), pomiędzy dwoma najlepszymi silnikami, rozgrywany jest w 50 różnych debiutach, tak aby oba silniki rozpoczynały grę zarówno białymi, jak czarnymi od tej samej pozycji (debiut 1 w partiach 1 i 2, debiut 2 w partiach 3 i 4 itd.). Wyboru debiutów w superfinałach dokonuje holenderski szachista Jeroen Noomen, kolekcjoner komputerów szachowych, jeden z czołowych ekspertów w dziedzinie teorii otwarć szachowych. Tempo gry w finale to obecnie 120 minut + 12 sekund na posunięcie. Lista dotychczasowych zwycięzców i ich przeciwników w superfinałach przedstawiona jest w tabeli 1.

Houdini

Komercyjny program Houdini jest dziełem belgijskiego szachisty, inżyniera i programisty Roberta Houdarta. Jego nazwa pochodzi od nazwiska słynnego iluzjonisty Harry’ego Houdini, który słynął ze sztuczek z ucieczkami w różnych sytuacjach (związany łańcuchami, zamknięty w skrzyni itp.). Jak pisze sam autor, jego silnik gra stylem pozycyjnym, jest wytrwały w trudnych pozycjach, potrafi uparcie bronić się i szukać ucieczki do remisu nawet w najwęższym marginesie możliwości. Z drugiej jednak strony, gdy ma przewagę, używa ostrych metod taktycznych, aby uniemożliwić obronę przeciwnika.

Houdini był kiedyś silnikiem odnoszących największe sukcesy w TCEC (5). Od sezonu 20. został zdyskwalifikowany, a jego wyniki z poprzednich sezonów zostały unieważnione (z wyjątkiem wersji do Houdini 4). Zarzuca się, że Houdini 5Houdini 6 były klonami Stockfisha 8. Doprowadziło to do unieważnienia przez TCEC wyników Houdiniego w mistrzostwach i uniemożliwienia Houdiniemu udziału w zawodach. Potem do rywalizacji o tytuł najsilniejszego silnika dołączyły Komodo i Stockfish.

5. Logo silnika szachowego Houdini (2018),
źródło: https://shorturl.at/zX048

Stockfish

Stockfish to bezpłatny i ogólnie dostępny silnik szachowy o otwartym kodzie źródłowym, który na większości list rankingowych silników szachowych zajmuje pierwsze miejsce (6). Głównymi autorami są Norweg Tord Romstad, Włoch Marco Costalba i Fin Joona Kiiski. Program bazuje na starszym silniku Glaurung opracowanym przez Romstada w 2004 roku.

6. Logo silnika szachowego Stockfish,
źródło: https://t.ly/LOIl30

Dla tego międzynarodowego zespołu tworzenie silników szachowych nie jest źródłem utrzymania, a po prostu hobby i jak mówi Tord Romstad (7), wystarcza im satysfakcja z tego, że ich silnik, dzięki temu, że jest darmowy, może być wykorzystywany przez wielu użytkowników oraz dzięki otwartemu kodowi jest inspiracją do powstawania nowych programów.

7. Tord Kallqvist Romstad, norweski programista, autor programu szachowego Glaurung
i współautor programu Stockfish, źródło: https://t.ly/sblvN

Program występuje w wersjach 32- oraz 64-bitowych i można go z łatwością zainstalować na wielu platformach, m.in. systemach Windows, Mac OS X, Linux, iOS, a także na Androidzie. Udostępniona jest otwarta platforma testowa Fishtest, umożliwiająca internautom testowanie nowych wersji silnika i przesyłanie poprawek do kodu źródłowego programu. Stockfish szybko stał się najsilniejszym silnikiem szachowym typu open source, z częstymi aktualizacjami co kilka miesięcy. Silnik ten wygrał do tej pory m.in. 15 turniejów z serii Top Chess Engine Championships (TCEC).

Sztokfisz

Sztokfisz (z niemieckiego Stockfisch) to także nazwa handlowa produktu przetwórstwa rybnego (8). Są to suszone ryby najczęściej z rodziny dorszowatych, pochodzące z połowów na Morzu Północnym, łowiskach islandzkich i nowofundlandzkich, a w połowie XX w. także na łowiskach północnej części Oceanu Spokojnego. Słowo „sztokfisz” najprawdopodobniej odnosi się do drewnianych stojaków, na których tradycyjnie suszy się ryby, lub do tego, że suszona ryba przypomina patyk.

8. Suszące się na słońcu ryby,
źródło: https://t.ly/1wnWg 

Od czasów wikingów Norwegowie suszą ryby, poddając je działaniu świeżego powietrza znad oceanu. Tradycyjnie Norwegowie spożywają je tylko raz do roku - na święta Bożego Narodzenia. Technologia produkcji polega na usunięciu głowy, rozcięciu wzdłuż i wypatroszeniu ryb, a następnie suszeniu ich na wolnym powietrzu w niskiej temperaturze. Po upływie 3 miesięcy dorsze są zdejmowane ze stojaków i przenoszone do zamkniętych pomieszczeń magazynowych, gdzie podobnie jak wino leżakują i dojrzewają przez kolejne miesiące - a nawet pełny rok. Tak zakonserwowana ryba ma tylko 20% pierwotnej masy, 80% białka i charakteryzuje się zwartym mięsem, łagodnym smakiem i znakomitym aromatem.

AlphaZero i Leela Chess Zero

W styczniu 2014 roku brytyjska firma DeepMind Technologies Limited, specjalizująca się w badaniach nad sztuczną inteligencją, opracowała nowy program nazwie AlphaZero, działający w oparciu o technologię sieci neuronowych i sztucznej inteligencji. W grudniu 2017 roku program AlphaZero rozegrał mecz z silnikiem szachowym - Stockfish 8. Spośród 100 partii AlphaZero wygrał 28 partii (25 białymi oraz 3 czarnymi), a pozostałe 72 partie zremisował (końcowy wynik 64:36). Program AlphaZero nie wykorzystywał, w odróżnieniu od tradycyjnych silników szachowych, baz danych debiutów i tabeli końcówek szachowych. Po prostu uczył się sam grać w szachy, grając ze sobą samym miliony partii. Każdy z programów miał 1 minutę na posunięcie. AlphaZero dysponował znacznie lepszym sprzętem od silnika Stockfish (prawdopodobnie około 2000 procesorów w stosunku do 2). Zwolennicy silnika Stockfish podkreślają, że mecz z programem AlphaZero odbywał się na sprzęcie o bardzo różnej architekturze i mocy obliczeniowej. W meczu grała słabsza wersja silnika Stockfish, nie można było m.in. stosować opracowanych baz debiutów i tabel końcówek, które stanowią integralną część programu. Tempo gry było ustalone na 1 minuta na posunięcie, a w zazwyczaj rozgrywanych partiach Stockfish identyfikuje punkty krytyczne w grze i decyduje, kiedy poświęcić trochę czasu na ruch. W komentarzach pojawiały się nawet stwierdzenia, że mecz ten przypominał wyścig człowieka z koniem, któremu pozwolono biec tylko na dwóch nogach. Przegrana z AlphaZero doprowadziła do powstania innych projektów sieci neuronowych (w szczególności Leela Chess Zero, Leelenstein i Alliestein).

Leela Chess Zero (Lc0) to komputerowy program szachowy, którego autorami są Gary Linscott, Alexander Lyashuk i inni. Program upowszechniony na licencji wolnego oprogramowania. Kod programu powstał na podstawie niekompletnych informacji o AlphaZero, częściowo utajnionym projekcie DeepMind. Na przełomie 2018 i 2019 roku, po zaledwie 10 miesiącach rozwoju, Lc0 stało się drugim co do siły gry programem szachowym na świecie, ustępując jedynie Stockfishowi.

We wrześniu 2020 roku ukazał się Stockfish 12 oraz ogłoszono, że Stockfish wchłonął projekt Stockfish+NNUE (NNUE to skrót od Efficiently Updatable Neural Network, czyli po polsku „wydajnie aktualizowalna sieć neuronowa”). Pierwotna moc tradycyjnego mechanizmu Stockfisha została rozszerzona o zdolności dokonywania oceny przez silnik oparty na sieci neuronowej.

Najnowszą wersję programu Stockfish 16 można bezpłatnie pobrać z oficjalnej strony programu: https://stockfishchess.org/.

Obecnie w głównych turniejach silników szachowych Stockfish zajmuje czołowe miejsca, pokonując głównego konkurenta - silnik szachowy Leela Chess Zero (Lc0). 

dr inż. Jan Sobótka
- nauczyciel akademicki,
licencjonowany instruktor
i sędzia szachowy