For the CS 231N class at Stanford, I worked with two other students to develop a convolutional neural network (CNN) based autopilot that can play Mario Kart 64 in real-time while only looking at the screen. Below is a video of our result.
Our approach has three main components. First, an omniscient search AI with complete control of the emulator simulates different possible actions and generates a training set associating screenshots with a steering angle. Second, a CNN trains on the resulting dataset. Finally, to increase our ability to recover from errors, we randomly sample states from the CNN during real-time play and run the search AI from those states to augment the dataset.
For the CS 221 class at Stanford, I worked with another student to develop an AI bot that logs into Pokemon Showdown and plays games on the official ladder. We implemented a Minimax search of depth 2, and tested the results against a greedy algorithm and a human player.
The fight above is typical of a win for the bot, where it selects super-effective moves, switches out to avoid type advantages, and applies status effects to itself and opponents. Unfortunately, the bot can can stuck on certain moves, switching out in a cycle or repeatedly using moves like Protect that weren't fully accounted for in our battle model.
For the CS 229 class at Stanford, I worked with another student to create an automatic image colorizer. Our approach uses Support Vector Regressions (SVRs) to predict the color of a region locally, then a Markov Random Field (MRF) to smooth color information across the image.
Hnefatafl AI [Code]
While creating an Android version of the Hnefatafl board game, I developed an AI that the player can play against. The AI uses a minimax search and an optimized simulator to probe the game space.