Nowadays Artificial Intelligence is becoming more prevalent in the technological community. While we may not yet have robots like the ones promised to us in Sci Fi shows like Star Trek and Futurama, we are seeing robotics evolve into something amazing each and every day. One of the more remarkable achievements is having computers react to and learn from it’s environment. Famous video game speed runner, Seth Bling, has taken that idea and used it to teach a computer to play the Nintendo video game, Mario, all on it’s own.
Seth came up with the project called MarI/O. MarI/O was inspired by a biological process called Neuroevolution. During it’s initial run, the program had no idea what Mario was or even that pressing Right made it go forward. Over the course of trial and error, MarI/O was able to complete the level after building a NeuroNetwork.
This seemingly complex looking design is the mathematical model of a brain. Using this it’s able to perform complicated actions.
On the left side of the screen is MarI/O’s inputs. This is what MarI/O is able to see. The white blocks represent the blocks that the player can stand on, while the black blocks represent moving objects such as enemies or items. The right side is the MarI/O’s output. These are the commands that MarI/O is able to press using its Neuronetwork. In between the input and output-the lines and boxes- is the Neuronetwork. Each box can be considered a neuron, a specialized cell transmitting nerve impulses. While each individual line can be considered an axon, a branch connecting neurons to the brain.
Now that we have a better idea of what each part of MarI/O does, let’s break down how this complex system came to be. When MarI/O first begin this level, the Neuronetwork was very basic. MarI/O would test out various simulations to see how to progress in the level. If MarI/O remains idle for too long it will end the simulation and begin a new one. Each simulation would determine which commands are needed to further itself in the game and build it’s Neuronetwork from them. Below is an example one of the earlier simulations.
The Neuronetwork has two different sets of lines, green and red. The green line indicates positive progression while the red represents negative. When the green line detects a white square it will keep moving. In this simulation, if the red line detects a moving object, such as an enemy, the A button will be pressed and MarI/O will jump. When no white boxes or back boxes are detected by either lines, MarI/O will just stand still.
So how does MarI/O learn how to build it’s Neuronetwork? Well, you may have noticed the Fitness score on the top. The Fitness score increases as Mario progresses further right into the level. Over time, each generation will reach a Max Fitness level. The generations that have the highest Max Fitness levels are selected and crossed, or “bred”. This yields the next generation of simulations. Over the course of 24 hours, MarI/O was able to complete the level with a Fitness Level of 4,000.
Seth has produced a truly amazing design that combines both the concepts of biology with technology. He has wrote this program from scratch using LUA and BizHawk. He has posted the source code on Pastebin, which can be found here.
While we still have a ways to go before we develop AI that can more closely resemble our brain power, Seth has demonstrated that the means to do so is not impossible. With technology going in the state as it is, we will undoubtedly see AI reach a point that could only have thought to be imagined.