TurkucPodjadek
2018-11-15 22:32

Korzystając z okazji, że mamy już 5-ty remis w ludzkim meczu szachowym, może trochę opowiem jak to wygląda wśród terminatorów szachowych.

W meczach pomiędzy najsilniejszymi silnikami szachowymi przeważają oczywiście remisy - dość wspomnieć, np. w ostatnim TCEC cup mistrza wyłoniło jedno zwycięstwo w 8 partiach (reszta to remisy) w meczu Stockfish-Houdini. A ostatni klasyczny superfinal, też TCEC, pomiędzy Komodo a Stockfish, o o ile się nie mylę, remis ratio był 22% (100 partii), czyli 78 CHOLERNIE-BARDZO DŁUGICH partii skończyło się remisem.

Ktoś mógłby spytać, czy te remisy, to nie jest zbytnia przesada, czy te silniki nie są jakoś "zaprogramowane", by sobie po prostu remisować, a ich siła jest iluzoryczna. Po odpowiedź na to pytanie, cofnijmy się w czasie do lat 2005-2010, kiedy to triumfy święcił program o nazwie Rybka (niepolski, wbrew nazwie). Ów program, w swoich czasach, siał grozę zarówno wśród ludzi jak i silników szachowych. Kilka podejść do niego zrobili ludzcy GM, często z handicapem - już wtedy, po erze Deep Blue, było jasne, że o to jest silnik szachowy, którego siła jest tak niewyobrażalna, że no bardziej się nie da i ludzie niech lepiej się nie wychylają. Potem się okazało, że autorzy Rybki (notabene programiści i bardzo silni szachiści) trochę sobie poszli na skróty i skopiowali trochę kodu z opensourcowego silnika crafty, się tym oczywiście nie chwaląc, zatem jak ten przekręt w końcu wyszedł na jaw, to Rybke zdyskwalifikowano i skazano na banicje za te zniewagę i odebrano jej kilka tytułów. W czasach świetności tego, nie rozwijanego już dziś silnika, też byli gracze wśród ludzi z rankingami 2800+, zupełnie jak dziś.
A jednak na niektórych forach szachowych, były jakieś osobniki, którym nie dawało spokoju, czy po dziś dzień Rybka też jest taka mocna i straszna. Nic z tych rzeczy - jeden z graczy opublikował niedawno wyniki swojego "turnieju", w którym w pojedynku ze Stockfishem (na 1 rdzeniu, co by stockfisha nie faworyzować), Rybka poległa... 500:0, znaczy się silnik-postrach sprzed 10 lat nie był w stanie ZREMISOWAĆ ani jednej partii z obecnym "mistrzem" wśród silników szachowych. Nawiasem mówiąc, siłę stockfisha, parę lat temu, a więc bardzo starej wersji, sprawdził jeden z lepszych GMów - Hikaru Nakamura. Aby ludzki GM nie czuł się samotnie, dostał w tym meczu do pomocy... Rybkę, znaczy w trakcie gry z ówczesnym Stockfishem mógł konsultować swoje ruchy z "dziadkiem", lecz i to mu nie pomogło i mecz oczywiście ta "dwójka" przegrała.
Zatem, odpowiadając na pytanie - remisy wśród najmocniejszych silników, to niestety wypadkowa siły ich gry. Po prostu jadą w przód 30-50 ruchów (na klasycznym czasie) i używają podobnych algorytmów, stąd, jeden drugiego "prześwietla" dosyć dobrze.

Często jest tak, że wygrana partia jednego silnego silnika nad drugim jest efektem... buga. Stockfish miał/ma mnóstwo PR na githubie, które są konsekwencją niektórych jego "porażek" - w sensie po dłuższej analizie, ktoś stwierdza, że... brakowało jakiegoś ekstra ifa na specyficzną sytuację, którą miliony testów i partii wcześniej nie wykryło. Poprawka jest mergowana i o to, silnik już nie przegrywa pozycji, tylko remisuje - mamy sukces. W przypadku stockfisha, developerzy mają do dyspozycji stronę http://tests.stockfishchess.org/tests, gdzie mogą sprawdzić czy ich "patch" nie spowoduje, że nagle, stockfish nie przegra w teście X, pozycji Y w posunięciu 55-tym. :)

Oczywiście "debug" takiego błędu mocnego silnika jest dosyć... skomplikowany, bo ów "błąd" następuje się sporo ruchów wstecz, aniżeli jego finalne konsekwencje. I następny problem - kogo tutaj zapytać w odpowiednim momencie "czy to tu był błąd czy jeszcze nie?", skoro te programy mają siłę gry daleko wykraczająca ponad ludzkich mistrzów? I tak to się żyje w tych szachach dzisiejszych....

// update 16.11.2018
Mamy 6-tą partię, na mój gust powinna zakończyć się remisem, jednak ciekawsza sprawa rozgrywa się poza szachownicą, ponieważ dwa supersilniki szachowe, dedykowane do oceny pozycji, obecnie się diametralnie różnią w kwestii spojrzenia na nią. Stockfish, aktualny mistrz, przedstawiciel "klasycznych" silników (minimax, alfa-beta pruning) przedstawia ocenę -1.8, co według niego oznacza przewagę czarnych, ale nie decydującą o zwycięstwie (musiałoby być -2.5 lub mniej). Z kolei LC0, które korzysta z infrastruktury Google i jest rewelacją ostatniego roku i korzysta z sieci neuronowych, ocenia pozycję bardzo radykalnie: czarne wygrywają, normalnie bułeczka z masłem dla nich (patrz screen)

Oczywiście, obydwa silniki mogą mieć błąd w swojej ewaluacji, jednakże stockfish to sprawdzona "marka", niemal wyrocznia, natomiast LC0 jest jak jeździec bez głowy - gra bardzo agresywnie, szybko i raz za czas, jest w stanie nawet pokonać stockfisha, ale zdecydowaną większość pojedynków 1v1 przegrywa przez swoje... nazwałbym to "nieokrzesanie". Używanie sieci neuronowej powoduje, że Leela nie imponuje ilością sprawdzanych kombinacji, bo nie musi, ale prawdopodobnie "kojarzy" w jakichś sposób pozycje i na podstawie tego podejścia dobiera ruchy. No jest to bez wątpienia przyszłościowy silnik, tym niemniej, warto mieć na uwadze, że może przesadzać.

Dla człowieka z kolei sprawa jest dość prosta na tym etapie: aby myśleć o zwycięstwie, czarne nie mogą stracić ostatniego pionka. W partii na pewno nastąpi moment, że ten pionek będzie musiał "przejść" przez atakowane pole, by móc marzyć o promocji, wtedy białe będą mogły poświęcić gońca i zremisować. Stockfish prawdopodobnie "widzi" tę sytuację w swoim milionie kombinacji, które potrafi "sprawdzić", dlatego nie decyduje się wydawać radykalnych ocen (Tak ja myślę). Czas pokaże który miał rację, tym niemniej delektujmy się meczem jak i potyczką pomiędzy algorytmami.

//edit - jak edytowałem posta to carlsen zrobił babola i teraz stockfish... wykrył mata w 63 ruchach, dla człowieka sprawa nie do ogarnięcia, zobaczymy czy Fabi to wykorzysta...
update: też zagrał niedokładnie... więc nie będzie mata 50 ruchów później ;-)

radlero

jakby to powiedziala matka jessiki... "wolem warcaby"

czysteskarpety

kiedyś sam pykałem, ale bądźmy szczerzy bez regularnych partii z lepszymi przeciwnikami to cudu nie ma, ale sama gra przyjemna i warto znać

Desu

Nie interesuje się szachami, ale ciekawe te Twoje wpisy :) Dzisiaj przechodząc po biurze usłyszałem coś w stylu, że badali aktywność mózgu szachistów podczas gry, u tych na wysokim szczeblu vs u nowicjuszy i u tych pierwszych częściej aktywne są obszary odpowiedzialne za pamięć, a u tych drugich za "myślenie". Jesteś w stanie coś o tym powiedzieć?

TurkucPodjadek

@Desu: raczej jest w tym trochę prawdy, bo im silniejszy szachista, tym bardziej musi być obyty w kwestii tzw. otwarć szachowych - czyli pierwszych 10-20 posunięć. Znając otwarcia szachowe (niektóre - nawet większości popularnych nie da się znać, bo tego jest za dużo), nie tracisz czasu na myślenie w tej fazie gry, bo to już zostało przez lata "przemyślane" i "sprawdzone". Chyba, że chcesz kogoś "zaskoczyć". Do tego, wraz z umiejętnościami szachowymi, zna się coraz więcej schematów i wie, że np. jakaś końcówka jest z góry remisowa (nawet mimo braku zbilansowania materiału) i nie ma potrzeby jej grać kolejną 1-2 godziny, aby to "sprawdzić". Także tak, mocni szachiści dużo otwarć, schematów, niektórych specyficznych pozycji mają rzeczywiście w pamięci, w stosunku do słabszych pewnie nie zastanawiają się nad pewnymi oczywistościami, ale myśleć, to na pewno też myślą (np. Carlsen zaskoczony chyba w 2 czy 3 partii tego meczu spędził na początku gry 40 minut na jednym ruchem)

Hummin

@TurkucPodjadek Coś się zmieniło w reprezentacji ocen przez silniki? Jak 10 lat temu używałem rybki to -1.5 oznaczało bez problemu wygraną (około 1.5 pionka więcej), dla przykładu -0.7 najczęściej oznaczało, że biały musi się bezbłednie bronić żeby ustać.

enedil

Czyli co, TDD poprzez uruchamianie silnika w walkach z innymi?

TurkucPodjadek

@Hummin: a to jest jakiś standard? Wydaje mi się, że nie. -1.5 może oznaczać wiele rzeczy, -3 też, zależnie od silnika - to nie jest unstandaryzowane specjalnie, bo jest zależne od jego algorytmów (o ile te, w danej sytuacji, się nie mylą). Moja luźna obserwacja -2.5 wynika z tego, że Stockfish miał partię m.in. z Houdini i Komodo, gdzie oceniał 2 pkt dla siebie, a partia kończyła się finalnie remisem. Także to jest zbyt subiektywna miara, -1.8 we wczorajszym meczu było raczej remisem, ale czarne miały przewagę materiału.