Шахматы - это стратегическая игра, в которую играют два игрока, и в этой статье мы попытаемся разработать Chess Engine (ACE).

Примечание: если вы не знакомы с шахматами и хотите узнать больше об игре, попробуйте этот сайт.

ACE будет компьютерной программой, которая потенциально может сместить Магнуса Карлсена.

Игра в шахматы - это задача, а Процент выигранных игр будет нашим показателем эффективности. Как научить ACE играть в шахматы?

Мы могли бы либо запрограммировать его явно ИЛИ позволить ему учиться самостоятельно (ML)

Рассмотрим подробно оба подхода.

Явное программирование:

Программирование правил для шахматного движка - задача, близкая к невозможной. Общее количество ходов в шахматах оценивается примерно в 10⁰¹²⁰ (Wiki).

Узнай сам:

Мы можем заставить ACE учиться самостоятельно, используя три различных метода, как указано ниже:

A. Научите ACE некоторым основным правилам шахмат и наймите репетитора, чтобы он поиграл с ними.

B. Предоставьте ACE записанные ходы тысяч реальных партий, сыгранных ранжированными шахматистами ФИДЕ.

C. Научите ACE некоторым основным правилам игры в шахматы и позвольте ему сыграть против другой версии игры.

Давайте подробно рассмотрим плюсы и минусы каждого варианта обучения.

A. Найм репетитора:

Благодаря сложности, превышающей ходы гугол, ACE никогда не победит Магнуса или даже игрока с начальным рейтингом, просто научившись играть с наставником. Конечно, ACE будет определять, как квалифицированный человек играет в шахматы, и на этом обучение ACE останавливается. Наем репетитора никогда не сработает для ACE.

Б. Учитесь на записанных человеческих играх:

Поскольку ходы игры в шахматы записываются и анализируются многими фанатами по всему миру, мы могли бы попробовать этот подход. Существует три сценария с этим набором данных, для которых требуются три разных типа подходов к машинному обучению:

B.1. Обучение с учителем:

Поскольку все ходы помечены, задача ACE - выбрать лучший ход из набора возможных разрешенных ходов. Нашими потенциальными кандидатами являются такие алгоритмы классификации, как случайные леса и деревья решений с ускорением.

B.2. Полу-контролируемое обучение:

Используйте контролируемое обучение, чтобы выучить названия ходов, а затем спрогнозировать рейтинг немаркированных ходов. Наконец, мы прогнозируем следующий ход на основе контролируемого обучения. Мы применили здесь метод вызова самообучения полу-контролируемого обучения.

B.3. Обучение без учителя:

Найдите похожие ходы и оцените их от лучшего к худшему. Конкретная проблема присвоения ярлыков отдельным ходам сложна, потому что даже когда игрок выигрывает, высока вероятность того, что мы сыграем какой-то плохой набор ходов. Алгоритмы кластеризации, такие как кластеризация k-средних и SVM, помогают нам добиться того же.

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

C. Учитесь, играя против самого себя:

В этом методе ACE может выбрать любое количество ходов и сыграть против любой своей версии. Этот метод называется Обучение с подкреплением. Несмотря на большие объемы вычислений, этот метод предлагает гибкость, которую не предлагает ни один из двух других способов. Программа сама генерирует данные. Для ограниченных сред, таких как игры с надлежащим набором правил, обучение с подкреплением намного превосходит все другие различные типы алгоритмов машинного обучения. Alpha Go Zero полностью обучалась с помощью обучения с подкреплением. Он выиграл у игрока с самым высоким рейтингом Alpha Go, который является еще одной моделью, обученной сочетанием игр против людей и самой себя.

TL;DR

Любая стратегическая игра включает в себя множество сложных ходов, и если мы хотим разработать компьютерные программы, которые будут играть, мы должны позволить им учиться самостоятельно. Имея более 10 шагов, Chess является подходящим кандидатом для алгоритма машинного обучения, который сможет соревноваться с людьми. Обучение алгоритму на наборах данных, использующих контролируемое, неконтролируемое или даже полу-контролируемое обучение, было бы наивным подходом, который никогда не приведет к результату победы над игроками-людьми. Наилучший метод обучения алгоритму машинного обучения - игра против самого себя, также известный как обучение с подкреплением.