Лила Чесс Зеро - Leela Chess Zero

Лила Чесс Зеро
Лила Chess Zero logo.svg
Оригинальный автор (ы) Джан-Карло Паскутто , Гэри Линскотт
Разработчики) Гэри Линскотт, Александр Ляшук, Фолкерт Хейзинга и другие
Первый выпуск 9 января 2018 г . ; 3 года назад ( 2018-01-09 )
Стабильный выпуск
v0.28 / 25 августа 2021 г . ; 53 дней назад ( 2021-08-25 )
Репозиторий
Написано в C ++
Операционная система Windows, Mac, Linux, Ubuntu, Android
Тип Шахматный двигатель
Лицензия GPL-3.0 или новее
Веб-сайт lczero .org

Лила шахматы Ноль (сокращенно LcZero , LC0 ) является свободным, открытым исходным кодом , и нейронную сеть основанное шахматный движок и распределенных вычислительных проектов. Разработкой руководил программист Гэри Линскотт , который также является разработчиком шахматного движка Stockfish . Leela шахматы Нулевой была заимствована из Leela Нулевой Go двигатель, который , в свою очередь , был основан на Google «s AlphaGo Нулевой проекта. Одна из целей Leela Chess Zero состояла в том, чтобы проверить методы, описанные в статье AlphaZero, применительно к игре в шахматы.

Подобно Лиле Зеро и AlphaGo Zero, Лила Chess Zero начинает игру без каких-либо внутренних специальных знаний, кроме основных правил игры. Затем Лила Chess Zero учится играть в шахматы путем обучения с подкреплением в результате многократной игры с самим собой, используя распределенную вычислительную сеть, координируемую на веб-сайте Leela Chess Zero.

По состоянию на 2020 год Leela Chess Zero сыграла против себя более 300 миллионов партий и способна играть на уровне, сопоставимом с Stockfish , ведущей традиционной шахматной программой.

История

О проекте Leela Chess Zero впервые было объявлено на TalkChess.com 9 января 2018 года. Это показало, что Leela Chess Zero представляет собой самообучающийся шахматный движок с открытым исходным кодом, который впоследствии будет называться, с целью создания сильных шахмат. двигатель. В течение первых нескольких месяцев обучения Leela Chess Zero уже достигла уровня гроссмейстера , превзойдя по силе ранние версии Rybka , Stockfish и Komodo , несмотря на то, что при использовании MCTS оценивала на порядки меньше позиций .

В декабре 2018 года команда AlphaZero опубликовала новую статью в журнале Science, раскрывающую ранее нераскрытые детали архитектуры и параметров обучения, используемых для AlphaZero. Эти изменения вскоре были включены в Leela Chess Zero и повысили ее силу и эффективность тренировок.

Работа над Leela Chess Zero послужила основой для аналогичного проекта AobaZero для сёги .

Движок был переписан и тщательно переработан с момента его создания, и теперь он работает на нескольких серверных модулях , что позволяет ему эффективно использовать различные типы оборудования, как ЦП, так и ГП.

Механизм поддерживает вариант случайных шахмат Фишера , и сеть обучается для проверки жизнеспособности такой сети с мая 2020 года.

Программа и использование

Метод, используемый его разработчиками, чтобы заставить Лилу Chess Zero самообучаться и играть в шахматы на уровне, превышающем человеческий, - это обучение с подкреплением . Это алгоритм машинного обучения, зеркальный от AlphaZero, используемый двоичным кодом обучения Leela Chess Zero для максимизации вознаграждения за счет самостоятельной игры. В качестве проекта распределенных вычислений с открытым исходным кодом пользователи-добровольцы запускают Leela Chess Zero, чтобы играть в сотни миллионов игр, которые передаются алгоритму подкрепления. Чтобы внести свой вклад в развитие движка Leela Chess Zero, необходимо загрузить последнюю версию движка, не являющуюся кандидатом на выпуск (без rc), а также клиент. Клиент необходим для подключения к текущему серверу Leela Chess Zero, где хранится вся информация из самостоятельных шахматных партий, для получения последней сети, создания игр для самостоятельной игры и загрузки данных тренировки обратно в сервер.

Чтобы играть против движка Leela Chess Zero на машине, необходимы 2 компонента: бинарный движок и сеть (бинарный движок отличается от клиента тем, что клиент используется в качестве обучающей платформы для движка) . Сеть содержит оценочную функцию Leela Chess Zero, которая необходима для оценки позиций. Старые сети также можно загрузить и использовать, поместив эти сети в папку с двоичным файлом Lc0.

Самостоятельная игра Эло

Самостоятельная игра Elo используется для измерения относительной силы сети для поиска аномалий и общих изменений в силе сети, а также может использоваться в качестве диагностического инструмента, когда Lc0 претерпевает значительные изменения. Посредством игр с тестовыми матчами, в которые играют с минимальными колебаниями на основе температуры, клиенты движка Lc0 проверяют самую последнюю версию на сравнении с другими последними версиями той же сети, которая затем отправляется на обучающий сервер для создания общей оценки Elo.

Стандартные формулы Эло используются для расчета относительной силы Эло между двумя игроками. В более поздних расчетах Elo для самостоятельной игры используются результаты матчей для нескольких сетевых версий, чтобы вычислить более точное значение Elo.

Подход самостоятельной игры имеет несколько последствий для измерения Lc0 Elo:

  • Начальная кумулятивная инфляция Эло в тренировочных заездах сильно различается из-за непериодических достижений в самосовершенствовании и состязательной игре.
  • Измерение Elo по сравнению с предыдущими сетями не позволяет измерить общую силу, поскольку сети обучены предвидеть и опережать прогнозы, сделанные предыдущими сетями Lc0, а не противниками за пределами области обучения. Это тип переобучения, который наиболее резко измеряется при тестировании небольших сетей.
  • Не существует прямой корреляции один-к-одному между Эло для самостоятельной игры и силой против движков Альфа-Бета, а также нет известной корреляции с силой против людей.
  • Входные обучающие данные оказывают значительное влияние на то, как сеть будет работать на следующей итерации.
  • Кумулятивное Эло для самостоятельной игры не имеет универсального преобразования в обычное человеческое Эло из-за проблем с инфляцией, вызванных состязательной игрой, и зависимости меры от контроля времени. Это верно даже тогда, когда двигатель работает при стандартном наборе начальных условий.

Накопленную инфляцию Эло для самостоятельной игры можно сравнить с другими прогонами, чтобы оценить отсутствие универсальности в измерении силы с помощью чистой совокупной Эло для самостоятельной игры. В Фишеру шахматы запустить тест 71.4 (названные 714xxx сети), ранги на почти 4000 кумулятивный самостоятельной игры Elo 76 сетей в его перспективе (714076). У T60 (6xxxx) с пробегом 63000 сеток совокупный Elo для самостоятельной игры составляет около 2900. Сопоставление 714076 с сеткой 63000 показывает, что 63000 явно побеждает 714076 в большинстве личных встреч, если не во всех «честных» контролях времени. 4000 Эло >> 2900 Эло, но сеть с 2900 Эло явно превосходит сеть 4000 Эло. Одного этого достаточно, чтобы поверить в утверждение, что Кумулятивная игра с самим собой Эло не является объективной мерой силы и не является мерой, позволяющей линейно сравнивать силу сети Lc0 с силой Человека.

Настройка движка для воспроизведения одного узла с `` --minibatch-size = 1 '' и `` go nodes 1 '' для каждого сыгранного хода создает детерминированную игру, и Self-Play Elo при таких настройках всегда будет давать одинаковые результат между двумя одинаковыми сетями на одной и той же начальной позиции - всегда выигрыш, всегда проигрыш или всегда ничья. Самостоятельная игра Эло не является надежным средством определения силы в этих детерминированных обстоятельствах.

Спин-оффы

В 15 сезоне чемпионата Top Chess Engine Championship движок AllieStein соревновался вместе с Лилой. AllieStein - это комбинация двух разных спин-оффов от Leela: Allie, которая использует ту же сеть оценки, что и Leela, но имеет уникальный алгоритм поиска для изучения различных линий игры, и Stein, сеть оценки, которая была обучена с использованием контролируемого обучения на основе существующие игровые данные с использованием других движков (в отличие от обучения без учителя, которое использует Лила). Хотя ни один из этих проектов не будет допущен к TCEC по отдельности из-за их сходства с Leela, комбинация алгоритма поиска Allie с сетью Stein, называемая AllieStein, достаточно уникальна, чтобы гарантировать, что она будет конкурировать с основным Lc0. (Правила TCEC требуют, чтобы движок на основе нейронной сети имел по крайней мере 2 уникальных компонента из 3 основных функций: код, оценивающий сеть, саму сеть и алгоритм поиска. В то время как AllieStein использует тот же код для оценки своей сети как Lc0, поскольку два других компонента свежие, AllieStein считается отдельным движком.)

В начале 2021 года блог LcZero анонсировал Ceres, новый шахматный движок, использующий сети LcZero. Он реализует поиск по дереву Монте-Карло, а также множество новых идей по улучшению алгоритмов. Первоначальное тестирование Elo показало, что Ceres сильнее Lc0 с той же сетью.

Результаты конкурса

В апреле 2018 года Leela Chess Zero стала первым движком нейронной сети, который вошел в Top Chess Engine Championship (TCEC) в течение 12 сезона в низшем дивизионе, дивизионе 4. Лила не выступила хорошо: в 28 играх она выиграла одну, сыграла вничью. два, а остаток потеряли; его единственная победа пришлась на позицию, в которой его противник, Скорпион 2,82, разбился за три хода. Однако ситуация быстро улучшилась. В июле 2018 года Лила заняла седьмое место из восьми на чемпионате мира по компьютерным шахматам 2018 года . В августе 2018 года он выиграл четвертый дивизион 13-го сезона TCEC с рекордом в 14 побед, 12 ничьих и 2 поражения. В 3-м дивизионе Лила набрала 16/28 очков, заняв третье место после Ethereal, набравшего 22,5 / 28 очков, и Арасана на тай-брейке.

К сентябрю 2018 года Лила стала конкурентоспособной с самыми мощными двигателями в мире. На чемпионате по компьютерным шахматам Chess.com 2018 (СССС) Лила заняла пятое место из 24 участников. Восемь лучших двигателей прошли во второй раунд, где Лила заняла четвертое место. Затем Лила выиграла матч из 30 игр против Комодо и заняла третье место в турнире. Одновременно Лила участвовала в кубке TCEC, новом мероприятии, в котором двигатели из разных подразделений TCEC могут играть друг против друга. Лила победила двигатели высшего дивизиона Laser, Ethereal и Fire, прежде чем, наконец, была выбита Stockfish в полуфинале.

В октябре и ноябре 2018 года Лила участвовала в турнире по блиц-битве Chess.com Computer Chess Championship. Лила заняла третье место после Стокфиша и Комодо.

В декабре 2018 года Лила участвовала в 14 сезоне чемпионата Top Chess Engine Championship . Лила доминировала в 3-м, 2-м и 1-м дивизионах, легко заняв первое место во всех из них. В высшем дивизионе доминировал Stockfish , а за второе место боролись Гудини , Комодо и Лила. Все сводилось к игре финального раунда, где Лиле нужно было удержать Stockfish до ничьей черными, чтобы финишировать вторым, опередив Комодо. Он успешно справился с этим и поэтому оспорил суперфинал против Stockfish. Хотя многие ожидали, что Stockfish легко выиграет, Лила превзошла все ожидания и одержала несколько впечатляющих побед, в конечном итоге проиграв суперфинал с наименьшим отрывом в финальном счете 49,5-50,5.

В феврале 2019 года Лила одержала первую крупную победу в турнире, победив Гудини в финале второго кубка TCEC. Лила не проиграла ни одной партии за весь турнир. В апреле 2019 года Лила выиграла Chess.com Computer Chess Championship 7: Blitz Bonanza, став первым проектом нейронной сети, получившим титул.

В мае 2019 года Лила защитила свой титул кубка TCEC, на этот раз победив Stockfish в финале 5.5-4.5 (+2 = 7-1) после того, как Stockfish провалил ничью из 7 игроков за столом . Лила также выиграла Суперфинал 15 сезона чемпионата Top Chess Engine Championship 53,5-46,5 (+14-7 = 79) против Stockfish, в том числе выиграла как белыми, так и черными в одном и том же заранее определенном дебюте в играх 61 и 62.

В 16 сезоне TCEC Лила заняла 3-е место в высшем дивизионе, пропустив квалификацию в суперфинале до Stockfish и нового движка нейронной сети AllieStein. Лила не понесла никаких потерь в Премьер-дивизионе, единственном двигателе, который это сделал, и победила Стокфиша в одной из шести сыгранных игр. Однако Лиле удалось одержать только 9 побед, в то время как AllieStein и Stockfish одержали по 14 побед. Эта неспособность победить более слабые двигатели привела к тому, что Лила финишировала 3-й, на пол-очка позади AllieStein и на одно очко позади Stockfish. В четвертом кубке TCEC Лила была посеяна первой в качестве действующего чемпиона, что поместило ее на противоположную половину сетки, как AllieStein и Stockfish. Лила смогла выйти в финал, где встретилась со Stockfish. После семи ничьих Stockfish выиграл восьмую игру и выиграл матч.

В 17 сезоне TCEC , проходившем в январе-апреле 2020 года, Лила вернула себе чемпионство, победив Stockfish 52,5-47,5, одержав примечательные 6 побед в последних 10 играх, включая победу как белыми, так и черными в одном и том же заранее определенном дебюте в играх 95. и 96. Он снова квалифицировался в суперфинал в 18 сезоне , но на этот раз потерпел поражение от Stockfish 53.5-46.5. В финале TCEC Cup 6 Лила проиграла AllieStein, заняв 2-е место.

В 19 сезоне TCEC Лила снова вышла в суперфинал. На этот раз он играл против новой версии Stockfish с поддержкой NNUE , функции оценки на основе нейронной сети, используемой в основном для конечных узлов дерева поиска. Он убедительно победил Лилу с финальным счетом 54,5-45,5 (+ 18-9 = 73).

Сводка результатов

Чемпионат Top Chess Engine Championship (TCEC)
Сезон 4-й дивизион Дивизион 3 Дивизион 2 Дивизион 1 Дивизион P Суперфинал
12 (2018) 8-е - - - - -
13 (2018) 1-й 3-й - - - -
14 (2018) - 1-й 1-й 1-й 2-й 2-й
15 (2019) - - - - 2-й 1-й
16 (2019) - - - - 3-й -
17 (2020) - - - - 1-й 1-й
18 (2020) - - - - 2-й 2-й
19 (2020) - - - - 2-й 2-й
20 (2020) - - - - 1-й 2-й
21 (2021 год) - - - - 2-й 2-й


Кубок чемпионата Top Chess Engine (Кубок TCEC)
Мероприятие Результат Противник Счет
Кубок 1 (2018) 3-й - -
Кубок 2 (2019) 1-й Гудини 4,5–3,5
Кубок 3 (2019) 1-й Stockfish 5.5-4.5
Кубок 4 (2019) 2-й Stockfish 3,5-4,5
Кубок 5 (2020) 2-й Stockfish 1,5–2,5
Кубок 6 (2020) 2-й AllieStein 1,5–2,5
Кубок 7 (2020) 2-й Stockfish 1,5–2,5
Кубок 8 (2021) 2-й Stockfish 3,5-4,5


Chess.com Чемпионат по компьютерным шахматам (CCC)
Мероприятие Год Контроль времени Результат Ссылка
CCC 1: Rapid Rumble (Ускоренная битва) 2018 г. 15 + 5 3-й
CCC 2: Блиц-битва 2018 г. 5 + 2 3-й
CCC 3: Быстрый Redux 2019 г. 30 + 5 2-й
CCC 4: Bullet Brawl (драка с пулями) 2019 г. 1 + 2 2-й
CCC 5: Эскалация 2019 г. 10 + 5 2-й
CCC 6: Зимняя классика 2019 г. 10 + 10 2-й
CCC 7: Blitz Bonanza 2019 г. 5 + 2 1-й
CCC 8: Глубокое погружение 2019 г. 15 + 5 2-й
CCC 9: Перчатка 2019 г. 5 + 2, 10 + 5 3-й
CCC 10: двойные цифры 2019 г. 10 + 3 3-й
CCC 11 2019 г. 30 + 5 1-й
CCC 12: Bullet Madness! 2020 г. 1 + 1 1-й
CCC 13: Формы 2020 г. 3 + 2, 5 + 5, 10 + 5, 15 + 5 1-й
CCC 14 2020 г. 15 + 5 1-й

Известные игры

использованная литература

внешние ссылки