In May 1997, IBM’s Deep Blue became the first computer system to beat a reigning world champion in a chess tournament. In March 2016, Google’s AlphaGo surprised the world by beating world-ranked Go player Lee Sedol in a tournament.
The success of AlphaGo is notable because Go is significantly more complex than chess, and people thought it might be another decade before the game was solved. The number of legal game positions in chess is around 1043, but the number of legal game positions on a 19x19 Go board is more like 10170; that is 127 orders of magnitude difference. (Note: This is not a direct measure of the complexity needed to solve each game, but that is more subjective so I will leave it as an exercise for the reader.)
Today the AlphaGo team announced they had been dominating the online Go world anonymously under the pseudonyms Master (P) and Magister (P). This latest success and their far more public victory in March 2016 stand as testaments to the power and versatility of deep learning techniques, which AlphaGo uses in a couple different ways.
These days, machine learning hobbists are able to use canned deep learning libraries, like TensorFlow, to play and beat all kinds of games. For instance, Kevin Hughes seems to have solved MarioKart 64 over Christmas (link below).
It is a brave new world (apparently). After all, Go is the most complex game in the world, and software is now better at it than humans.
At this point, anyone who plays Dwarf Fortess is having a good chuckle. Comparing Go to Dwarf Fortess is like comparing chess to fusion reactor design. Humans win Go games all the time, but playing Dwarf Fortress is more of an experimental exercise in probing the limits of what is possible. The community motto is “Losing is Fun”.
Show me something new. Use Deep Learning to solve a game that humans can’t: beat Dwarf Fortess.
Adendum: “Beating” Dwarf Fortess
There is no “You Win” screen in Dwarf Fortress. Part of the fun of the game is that each player creates their own metric for success. I typically try to create a fortress that survives as long as possible. But, by itself, that would not be enough. A fitness metric would have to be designed to force the AI to deal with the full complexity of the game. The Reddit /r/dwarffortress community suggested some good metrics:
- Time the Fortess Survives
- Dwarf Population
- Dwarf Happiness
- Value of the Fortress
- Value of Items Traded
- Number of Enemies Killed
- Area Mined
- Skill Mastery
- Number of Idlers
Alternatively, perhaps the only valid fitness metrics are the ones that players use themselves. Here is a (short) list of player goals that I have heard over the years, in decreasing order of sanity:
- (Amount of stockpiled beer) × (Years without a suicide)
- (Pet cats + Vampires free in fort) × Years
- Number of years survived after Hell breech
- Domesticate a Megabeast
- Colonize Hell
- Build a weapon big enough to destroy the world
- Build a Turing Machine in-game and use that to run your AI