Шахматы - это стратегическая игра, в которую играют два игрока, и в этой статье мы попытаемся разработать 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 является подходящим кандидатом для алгоритма машинного обучения, который сможет соревноваться с людьми. Обучение алгоритму на наборах данных, использующих контролируемое, неконтролируемое или даже полу-контролируемое обучение, было бы наивным подходом, который никогда не приведет к результату победы над игроками-людьми. Наилучший метод обучения алгоритму машинного обучения - игра против самого себя, также известный как обучение с подкреплением.