Christian Silver is a recent graduate working as a software engineer in the Enterprise Business Unit at Improbable.
Improbable has recently returned from the University of Cambridge’s annual hackathon Hack Cambridge 4D. Given that name, it’s not a surprise that this is the fourth occurrence of the event. The Improbable team has attended every event and we always come back excited by everything the hackers have achieved. This year we set the participants a challenge around probabilistic programming, which I’ll return to in a moment.
Hack Cambridge brings 300 students from around the world into the Cambridge Corn Exchange for 24 hours to collaboratively build software or hardware. Anything goes - it’s a wonderful opportunity to experiment with ideas, learn something and meet new people.
Back to probabilistic programming. At Improbable we’re strong proponents of this, as we think it’s key to simulating the real world. In the simplest terms, probabilistic programming allows a coder to write regular programs where a variable can take on a distribution of values instead of just one. It's great for simulating situations where there is uncertainty or a lack of available data.
This year, we wanted to see how the hackers used probabilistic programming to interact in something else we’re quite familiar with: games. Our challenge was to build the best probabilistic game AI. That is, an AI that uses probabilistic techniques to play a game.
Keanu is our open source probabilistic programming language. We encouraged teams to use it to attempt our challenge (but didn’t require it). We were thrilled to see participating teams using Keanu and learning about probabilistic programming, despite them never having tried it before. The solutions developed ranged from games like Battleship to Poker. Some teams even chose to invent a new game altogether. We were really impressed with the variety of their achievements.
The team we chose as the winner created BattleReeves, an AI that played a game of Battleship against you. Their model pushed Keanu to its limit, creating a program with hundreds of thousands of variables. This meant that the AI that spent a lot of compute time making its decisions (about a minute to make a move).
To get around this, they wrote a heuristic algorithm based on the results of the probabilistic one which was much faster. We appreciated their pragmatism here, and the UI allowed you to try either version to see how they matched up. Their visualisation was compelling: it showed the AI’s belief that a particular cell was going to result in a hit. We were pleased to see that this team was also chosen with 5 other teams to present as a finalist.
Heading back from the event, we had a great experience to look back on. Importantly: we learned more about how people use Keanu, how we can make it better, and we spent an inspiring weekend with excited hackers and the Improbable team.
Interested in working with games or probabilistic programming? Improbable is hiring for graduate roles and internships in 2019.