Inspiration

We were interested in ML and tensorflow, and enjoyed playing checkers. So we decided to build an AI that could possibly beat us at checkers.

What it does

It uses a Q-learning algorithm to learn what the optimal move is given the current game state. This involves a neural network mapping from game state to expected reward from that state. We then sample all game states for each possible move we can take in the current state, apply this network to each of these potential states, and take the move corresponding to the state with the highest future reward.

How we built it

We ported one of the team member's implemenations of checkers from Java, then used tensorflow to build a reinforcment learning system to train our Q-network.

Challenges we ran into

We ran into several difficulties with adapting the checkers state data to a form that could be input to the neural network.

We were also unsure how to do Q-learning with a variable-sized and inconsistent action space, but we then figured out we could simply Q-learn based on game state and use that to choose a move to play.

Accomplishments that we're proud of

Our checkers interface ended up meshing very well with the requirements for the neural network in th end.

What we learned

A lot about Q-learning and general ML!

What's next for cheQers

Training the network more thourougly; applying known ML "tricks" to improve the Q-learning network; tweaking hyperparemeters.

Built With

Share this project:

Updates