Checkmating One, by Using Many: Combining Mixture of Experts with MCTS to Improve in Chess

Felix Helfenstein, Johannes Czech, Jannis Blüml, Max Eisel, Kristian Kersting
1/30/2024
cs.LG

No confident code implementation found for this paper.

Abstract

In games like chess, strategy evolves dramatically across distinct phases - the opening, middlegame, and endgame each demand different forms of reasoning and decision-making. Yet, many modern chess engines rely on a single neural network to play the entire game uniformly, often missing opportunities to specialize. In this work, we introduce M2CTS, a modular framework that combines Mixture of Experts with Monte Carlo Tree Search to adapt strategy dynamically based on game phase. We explore three different methods for training the neural networks: Separated Learning, Staged Learning, and Weighted Learning. By routing decisions through specialized neural networks trained for each phase, M2CTS improves both computational efficiency and playing strength. In experiments on chess, M2CTS achieves up to +122 Elo over standard single-model baselines and shows promising generalization to multi-agent domains such as Pommerman. These results highlight how modular, phase-aware systems can better align with the structured nature of games and move us closer to human-like behavior in dividing a problem into many smaller units.

View on arXivView PDF

Code Implementations

No confident code match yet

We couldn't find an author-owned or strongly-evidenced community implementation for this paper. Any repos shown below are weak matches — verify before relying on them.

No code implementations found yet.

Know of an implementation? Let us know in the comments below!

Similar Papers

Cite this paper

@article{helfenstein2024checkmating,
  title  = {Checkmating One, by Using Many: Combining Mixture of Experts with MCTS to Improve in Chess},
  author = {Felix Helfenstein and Johannes Czech and Jannis Blüml and Max Eisel and Kristian Kersting},
  year   = {2024},
  eprint = {2401.16852},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2401.16852v3}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2401.16852.svg)](https://codeofpaper.com/paper/2401.16852)

Discussion