AlphaGo beats Lee Sedol. Lessons from 1997

Go was praised as the last frontier for AI. Computer programs were not good enough to tackle the complexity of the game because they lacked the intuition and creativity shown by human professional Go players — that studied the game all their life. This lead to the idea that Go players, as opposed to chess players, were protected from the silicon invasion.

But now it is GAME OVER. Google’s AlphaGo demonstrated that silicon is now able to win against the best Go players. Is this a Shock? Why would anyone think so?

While the line of players queuing up to lose to AlphaGo is growing, the important think about AlphaGo is not to play against it, but to use it as a machine for improving. The line of Professional Go players wanting to buy a copy of AlphaGo is growing bigger.

Like in chess, where the Stockfish and Rybkas of the game changed the training process of the players, the same will happen in Go. Professionals already use computer databases of Go games. Now they will embrace the computer style of play to become stronger players. Others, like in chess, will do the opposite and try to do what the computers lack. Creative play, even if objectively inferior against other humans, might give some players the pleasure of taking the fight to places where the machine has not been before and might have a blind spot.

After 1997 defeat to Kasparov, the world of chess was also in shock. The end of the human domination. #AI was here to control us. In the end no one worried much and even had a little bit of fun when in 2006 Kramnik played Deep Fritz and left a mate in one on the board for the computer to win. That’s the reality of AI engines. We have fun and make mistakes like Kramnik. They are just machines and can’t loose like that.

The problem of having strong silicon players available is that cheating will now become an issue they will need to deal with. Cheating in chess is a problem and strong measures have been put in place to try to solve the issue. Will we have a Go Toiletgate? Go play will certainly have to adapt.

Another final point about the match. Lee Sedol is one of the Go monsters and there’s nothing to be sorry for this match. He won one game against the computer, and not many players will be able to say the same from now on. Anyone that comes next in the line to play AlphaGo, is just going to face a stronger engine and will have diminished chances to win. Meanwhile Sedol deserved his place in history.

The game of Go, like the game of chess, sees changes in the style of play from time to time, namely when some genius grandmaster comes and starts applying a new style. AlphaGo greatest legacy will be how humans will start playing Go in the future. Maximising winning chances instead of maximising winning margin will be on everyones mind and those seemingly spurious moves will be analyses until understood fully. The game of Go will not be the same in the future and for that AlphaGo alone is the most important stone in the board of the XXI century.

What’s next for #AI? Well, the game Arimaa — that was invented after Kasparov’s defeat to Deep Blue, and can be played with a traditional chess set — was specially constructed to be difficult for computers to master, was beaten in 2015 (And honestly, what were they thinking with that childish set pieces of the comercial Arimaa, cats, dogs and rabbits?). My suggestion is that the next challenge to #AI has to be in games were information is not complete as Vitorino Ramos puts it:

Will #AI move in that direction? Backgammon is a game were the roll of the dice can change the results. Poker depends also on chance and human strategies (bluff) that are difficult for the computer to understand. Talking about adaptability, can #AI move in a direction where the same program learns the rules of all these different games and starts playing them well without human tweaking of the underlying computational paradigm? That would be truly revolutionary.

As for me, I tried Go but I’m just a stone thrower. I’ll stick to that inferior game of Chess, play some gambits, and loose in many creative ways.

The languages in developing a new algorithm

You have an idea for a new algorithm! Great, what to do next?

You prototype it in Python because of the expressiveness and the dynamic typing is a really cool thing to have while messing around. Performance wise it isn’t anything to show off and you think that you really need something faster.

You choose Go to rewrite the algorithm to take advantage of gorotutines, channels, etc… and you change your app so it can run in your multi-core computer.

Your algorithm is getting to shape, is fast but not the fastest and in your pursuit to make it faster than light, you end up rewriting it in plain old good C just to see how much you can squeeze of those clock cycles.

It is now fast, great and is attracting attention from the industry. You end up writing the algorithm in Java, that gold standard of the industry, and make big money selling it.

But it was developed in academia so you have to publish it in journals and conferences. After all this is your master piece! You rewrite your algorithm in Clojure, just to look smart, you publish several papers on it, and get a tenure on a famous university… doing the occasional consulting sting and getting rich (you hope).

After some time in academia you get a grad student that wants to work with your algorithm. He is excited about the work, but he doesn’t know how to program. You then decide to rewrite your algorithm once again in Python (you lost your original code years ago) to make it easy on your student to learn.

Curiously your code is now shorter, elegant, and very fast. You tell yourself that Guido must have done something magic to CPython in the past few years and contemplate the brilliance of your code.

I could have just called this post ‘some programming languages that you should know or be aware of’