Что касается AlphaZero против Stockfish матча, этот вопрос уже освещался здесь по SmallChess .
AlphaZero в сторону (которая использует специализированную Монте - Карло 1 рутина в исследовании линий игры), который сделан быть недетерминирована по построению для обычных эвристики на основе движков, такие как Stockfish и другие (хотя есть и другие двигатели, имеющие процедуры MC-основанные, AFAIK Рыбка используется , чтобы иметь такую возможность), источник случайности, как правило, является лишь следствием технических аспектов в реализации, а не преднамеренной случайностью, вводимой алгоритмически в процесс принятия решений движком Говоря абстрактно, одной из причин этого является тот факт, что двигатели работают не совсем последовательно (выполнение одной задачи за другой). Вместо этого, чтобы сделать движки более эффективными, они выполняют параллельные поиски в различных ветвях дерева возможных ходов. Они делают это с помощью так называемой многопоточности (или -обработки, но это немного отличается). Таким образом, несколько потоков процессоров одновременновыполнение операций для поиска в дереве (и кеширования оценок посещенных позиций), поэтому представьте, что каждому потоку назначено поддерево. Проблема с этим типом реализации заключается в том, что общее выполнение потоков становится в значительной степени зависимым от всевозможных условий (время ожидания, перестановки ОЗУ, ...), поэтому, в конце концов, основной вариант может быть выбран без разрешения всех других темы, чтобы закончить их поиск.
Это действительно часто случается, потому что механизм настроен на принятие решения в течение определенного времени, поэтому управление временем меняет поведение. Вы также можете отменить это утверждение, сказав: знание алгоритма и реализация подпрограмм детерминированного потока не достаточны для надежного прогнозирования состояния программы после любого времени t. Конечно, если каждый всегда позволяет всем потокам завершить поиск, и во время этого выполнения не было проблем с параллелизмом (например, поток, пытающийся получить доступ к определенному кешу, который недоступен), тогда поведение действительно будет полностью воспроизводимым. учитывая все остальное тоже самое 2 .
1 : Вместе с тем, что благодаря дополнительному обучению (например, самостоятельному воспроизведению) ее нейронная сеть продолжает развиваться (повторно настраиваемые параметры), или, если хотите, функция оценки не имеет постоянного, фиксированного определения (в отличие от движков, основанных на эвристике). ).
2 : Даже тогда, как вы сказали, на начальном уровне, с начальной книгой, иногда механизмом намеренно принимаются случайные решения о том, какой вариант выбрать. Точно так же за пределами начальной фазы могут быть моменты, когда множественные варианты имеют близкие к равным оценки (в пределах разрешения, выбранного для Eval), а затем, в зависимости от дизайна, он может в конечном итоге выбрать один случайным образом. Наконец, на уровне настроек двигателя вы также должны быть осторожны, например, глубина поиска и время обдумывания, выбранное для каждого двигателя (и могут ли они дополнительно рассчитывать время обдумывания друг друга).