Project developed for a university exam in 2019
The aim of this project is to train and test differents sub-symbolic systems capable to play the mastermind board game. To do this, this repository contains:
- Players that implement different mathematical strategies to play the game and build the training database
- Neural networks implemented using Tensorflow Estimators
- Jupyter notebooks to manage the databases
- Jupyter notebooks to analyze the neural networks performances
- This is my first ML project and the first "big" project in a more general sense
- I haven't changed anything from the exam submission, and I haven't plan to improve this package
- Keypoints
- Mastermind players to build the ML dataset:
- knuth - best algorithm, from Knuth paper
- knuth_fast - my idea to speed-up knuth algorithm
- hopeful - simple but fast algorithm
- All the dataset are available on mega
- After unzip, those are the file:
❯ tree -s -h --du . ├── [ 99M] hopeful │ ├── [ 69M] hopeful.csv │ └── [ 30M] hopeful_cuts.csv ├── [133K] knuth │ ├── [ 89K] knuth_optimal.csv │ └── [ 40K] knuth_optimal_cuts.csv └── [ 19M] knuth_fast ├── [5.8M] knuth_cuts.csv └── [ 13M] knuth_fast.csv 118M used in 3 directories, 6 files
- Machine learning models
- The model is a Bi-LSTM with attention system
- The model is written in Tensorflow using the tf_estimator (TF2 was not released when I did the exam).
- For the best solution, 4 models were trained and used in cascade (see the slides)
- Slides are available for a deeper explanation of the project.
- Although in Italian, they use a lot of images
- Mastermind players to build the ML dataset: