At the beginning of 2016, most serious Go players would have told you that a machine would never beat a Go world champion. Then, Google's AlphaGo AI beat the world's strongest player, Ke Jie 3-0. Six months later, Alpha Go Zero destroyed AlphaGo, defeating it 89 games to 11. AlphaGo was an incredible accomplishment for deep learning systems, and it's a fascinating story.
Deep Learning and the Game of Go opens up the world of deep learning and AI by teaching you to build your own Go-playing machine. You'll explore key deep learning ideas like neural networks and reinforcement learning and maybe even step up your Go game a notch or two. AI experts and Go enthusiasts Max Pumperla and Kevin Ferguson take you every step of the way as you build your Go bot and train it from eternal loser to hardened Go player.
"The book is fascinating. I have always wondered how to apply machine learning to games, especially Go."
~ Sean Lindsay
"It is about time for a new book on game AI, exploiting the most recent achievements in machine learning and AI."
~ Ursin Stauss
"The book serves as an excellent introduction to Deep Learning using the popular game of GO."
~ Jasba Simpson
Part 1: AI and Go
1. Toward deep learning: a machine learning introduction
1.1. What is machine learning?
1.1.1. How does machine learning relate to AI?
1.1.2. What you can and cannot do with machine learning
1.2. Machine learning by example
1.2.1. Using machine learning in software applications
1.2.2. Supervised learning
1.2.3. Unsupervised learning
1.2.4. Reinforcement learning
1.3. Deep learning
1.4. What you will learn in this book
2. Go as a machine learning problem
2.1. Why games?
2.2. A lightning introduction to the game of Go
2.2.1. The board
2.2.2. Placing and capturing stones
2.2.3. Ending the game and counting
2.4. Where to learn more
2.5. What can we teach a machine?
2.5.1. Selecting moves in the opening
2.5.2. Searching game states
2.5.3. Reducing the number of moves to consider
2.5.4. Evaluating game states
2.6. How to measure our Go AI’s strength
2.6.1. Traditional Go ranks
2.6.2. Benchmarking our Go AI
3. Implementing our first Go bot
3.1. Representing a game of Go in Python
3.1.1. Implementing the Go Board
3.1.2. Connected groups of stones in Go: Strings
3.1.3. Placing and capturing stones on a go board
3.2. Go game state and checking for illegal moves
3.3. Ending a game
3.4. Your first bot: the weakest Go AI imaginable
3.5. Speeding up gameplay with Zobrist hashing
3.6. Playing against your bot
Part 2: Way to go
4. Playing games with tree search
4.1. What games does tree search apply to?
4.2. Anticipating your opponent with minimax search
4.3. Solving tic-tac-toe: a minimax example
4.4. Reducing search space with pruning
4.4.1. Reducing search depth with position evaluation
4.4.2. Reducing search width with alpha-beta pruning
4.5. Evaluating game states with Monte Carlo tree search
4.5.1. Implementing Monte Carlo tree search in Python
4.5.2. How to select which branch to explore
4.5.3. Practical considerations for applying Monte Carlo tree search to Go
5. Getting started with neural networks
5.1. A simple use case: Classifying handwritten digits
5.1.1. The MNIST data set of handwritten digits
5.1.2. MNIST data preprocessing
5.2. The basics of neural networks
5.2.1. Logistic regression as simple artificial neural network
5.2.2. Networks with more than one output dimension
5.3. Feed-forward networks
5.4. How good are our predictions? Loss functions and optimization
5.4.1. What is a loss function?
5.4.2. Mean-squared error
5.4.3. Finding minima in loss functions
5.4.4. Gradient descent to find minima
5.4.5. Stochastic gradient descent for loss functions
5.4.6. Propagate gradients back through our network
5.5. Training a neural network step-by-step in Python
5.5.1. Neural network layers in Python
5.5.2. Activation layers in neural networks
5.5.3. Dense layers in Python as building block for feed-forward networks
5.5.4. Sequential neural networks with Python
5.5.5. Applying our network handwritten digit classification
6. Enter deep learning
7. Learning from data: deep learning bots
8. Enter deep reinforcement learning
9. Reinforcement learning with the policy gradient algorithm
10. Reinforcement learning with value methods
11. Reinforcement with actor-critic methods
Part 3: Bringing it all together
12. AlphaGo: Combining approaches
13. Bots in the wild: deployment and scale-out
Appendix A: Mathematical foundations with Python
Appendix B: The backpropagation algorithm
Appendix C: Sample games and resources
Appendix D: Go servers and data
About the TechnologyGo is an ancient strategy game. It's much simpler to learn than chess and at the same time infinitely harder to master because players have many more potential moves with each turn. (Chess has 20 possible opening moves. Go has 361!) It's nearly impossible to build a competent Go-playing machine using conventional programming techniques, let alone have it win. By applying advanced AI techniques, in particular deep learning and reinforcement learning, you can train your Go-bot in the rules and tactics of the game. Because deep learning systems get better the more they're used, you'll see it grow from perpetual loser to unbeatable strategist!
About the book
Deep Learning and the Game of Go teaches you how to apply the power of deep learning to complex human-flavored reasoning tasks by building a Go-playing AI. After exposing you to the foundations of machine and deep learning, you'll use Python to build a bot and then teach it the rules of the game. Everything you need to know about Go is covered, from how the game works, to checking for illegal moves, learning from losses, and implementing winning strategies.
With the rules down, you'll turn your bot into a master with the help of Keras and deep reinforcement learning. You'll see, in real-time, your bot become a better player as you apply new learning techniques and more complex strategies. You'll be amazed as your fledgeling AI arms itself with the skills it needs to win. Before long, you'll have a Go playing AI sure to beat you every time!
- Getting started with neural networks
- Building your Go AI
- Improving how your Go-bot plays and reacts
- Reinforcement learning with actor-critic and value methods