Jeśli chodzi o mecz AlphaZero vs Sztokfisz, to pytanie zostało już omówione tutaj przez SmallChess .
Odkładając na bok AlphaZero (który wykorzystuje specjalną rutynę Monte Carlo 1 do badania linii gry), która jest konstrukcyjnie niedeterministyczna dla zwykłych silników szachowych opartych na heurystyce, takich jak Sztokfisz i inne (choć istnieją inne silniki, które mają procedury oparte na MC, AFAIK Rybka miała taką funkcję), źródło losowości jest zazwyczaj jedynie konsekwencją technicznych aspektów wdrożenia, a nie celowej losowości wprowadzanej algorytmicznie w procesie decyzyjnym silnika. Mówiąc abstrakcyjnie, jednym z powodów tego jest fakt, że silniki nie działają w sposób czysto sekwencyjny (wykonywanie jednego zadania po drugim). Zamiast tego, aby uczynić silniki bardziej wydajnymi, przeprowadzają równoległe wyszukiwanie w różnych gałęziach drzewa możliwych ruchów. Robią to poprzez tak zwane wielowątkowość (lub -processing, ale to trochę inaczej). Wiele wątków procesorów jest jednocześniewykonywanie operacji w celu przeszukania drzewa (i buforowania ocen odwiedzanych pozycji), więc wyobraź sobie, że do każdego wątku przypisano poddrzewo. Problem z tego rodzaju implementacją polega na tym, że ogólne wykonanie wątków staje się wysoce zależne od różnego rodzaju warunków (czasów oczekiwania, zamiany pamięci RAM, ...), więc ostatecznie można wybrać główną odmianę bez zezwolenia na wszystkie inne wątki, aby zakończyć wyszukiwanie.
Dzieje się tak często, ponieważ silnik jest ustawiony na podjęcie decyzji w określonym czasie, więc zarządzanie czasem zmienia zachowanie. Możesz także cofnąć to stwierdzenie, mówiąc: znajomość algorytmu i implementacja deterministycznych procedur wątkowania nie są wystarczające, aby wiarygodnie przewidzieć stan programu po dowolnym czasie t. Oczywiście, jeśli zawsze zezwala się wszystkim wątkom na zakończenie wyszukiwania, a podczas tego wykonywania nie wystąpiły problemy z współbieżnością (na przykład wątek próbujący uzyskać dostęp do określonej pamięci podręcznej, która nie jest dostępna), wówczas zachowanie będzie w pełni odtwarzalne biorąc pod uwagę, że wszystko inne jest takie samo 2 .
1 : Wraz z faktem, że poprzez dodatkowe szkolenie (na przykład samodzielną grę) jego sieć neuronowa ewoluuje (ponownie dostosowuje parametry), lub jeśli chcesz, jej funkcja oceny nie ma stałej, stałej definicji (w przeciwieństwie do silników opartych na heurystyce ).
2 : Nawet wtedy, jak powiedziałeś, na poziomie początkowym, z książką otwierającą, silnik czasami podejmuje celowe losowe decyzje, które warianty wybrać. Podobnie, poza fazą otwarcia, mogą zdarzyć się chwile, w których wiele odmian ma prawie równe oceny (w ramach rozdzielczości wybranej dla Eval), a następnie w oparciu o projekt, może skończyć się wyborem jednej losowo. Na koniec, na poziomie ustawień silnika należy również zachować ostrożność, na przykład głębokość wyszukiwania i czasy rozważań wybrane dla każdego silnika (i to, czy mogą one dalej obliczyć podczas swoich czasów zastanowienia).