Skip to content

Latest commit

 

History

History
43 lines (34 loc) · 3.82 KB

readme_ru.md

File metadata and controls

43 lines (34 loc) · 3.82 KB

Counter

Сборка

Чтобы самостоятельно собрать проект, скачайте исходные файлы с github, откройте консоль в папке с проектом и выполните команду:

$ go build ./cmd/counter

Чтобы использовать инструкции процессора avx, для быстрого расчета оценочной функции (ОФ) на нейронной сети, при сборке укажите тег avx:

$ go build -tags avx ./cmd/counter

При запуске движка можно указать какая оценочная функция будет использоваться. Значение по умолчанию может измениться. Чтобы использовать нейросеть укажите следующий флаг:

$ ./counter -eval nnue

Структура проекта

Проект состоит из множества пакетов с гибкой архитектурой. Можно реализовать свою версию перебора и/или оценочной функции. Основные пакеты:

  • cmd/counter - шахматный движок, основной пакет проекта
  • pkg/common - основные типы данных (ход, позиция), генератор ходов
  • pkg/eval - содержит различные ОФ (fast-быстрая ОФ, linear-линейная, nnue-нейросеть и другие)
  • pkg/engine - отвечает за перебор дерева
  • pkg/uci - реализует UCI протокол

Машинное обучение оценочной функции

Counter содержит 2 вида ОФ: HCE (hand crafted eval) и NNUE (Efficiently Updatable Neural Network).

Для настройки весов первой и обучения второй понадобится обучающая выборка. Для этого будем играть партии движка самим с собой. У нас же уже есть предыдущая версия движка 😄. Ну а если нет, можно взять и другой движок. Для обучения понадобятся десятки миллионов позиций, а это сотни тысяч игр. Чтобы игры не повторялись, нужны разные дебюты, тоже желательно сотни тысяч, что очень много. Поэтому вместо дебютов можно делать несколько случайных первых ходов.

  • cmd/opengen - создает базу дебютов делая несколько случайных ходов из начальной позиции. Пример запуска: scripts/opengen.sh
  • scripts/play.sh - пример скрипта как с помощью утилиты cutechess-cli сыграть много партий
  • cmd/fengen - позволяет по сыгранным партиям создать датасет для обучения. Пример запуска: scripts/fengen.sh
  • cmd/trainhce - настраивает коэф-ты HCE. Пример запуска: scripts/trainhce.sh
  • cmd/train - обучает нейросеть. Пример запуска: scripts/train.sh

Если после обучения, новая ОФ показывает прибавку в силе, то можно создать новую обучающующую выборку с использованием улучшенной ОФ и провести процесс обучения заново.

Ссылки