Tonight I want to briefly discuss artificial evolution using computer simulations. This is one of the coolest things ever. I wish I had time to actually write programs which do these things.
This first video is rather ancient but I chose to include it because of how well it communicates the ideas. A computer programmer is going to simulate biological evolution on a computer and evolve all types of walking and swimming creatures. Virtual beings control body blocks which are all jointed together and moved by a virtual nervous system. A certain fitness routine is programmed in, such as walking, swimming, or jumping, and whichever virtual being is best at doing the task gets to “reproduce” and all the others are removed. He then takes that winner, makes random modifications to it, and then runs the simulation again. You do this over and over and over, and lo and behold, you get organisms that behave just like real world organisms. You get little walking creatures, swimming fish-like creatures, and so on. They naturally evolve fins and tails, and jointed bodies, and everything.
What’s most fun is watching creatures evolve strange solutions to the problem. I think this is going to become a very common engineering method in the future, where instead of having to worry about programming all the details into a robot, you would just artificially evolve it in the computer. Then whatever it came up with, you place that program inside the real robot and you’re done. Need a robot which can walk up stairs, climb ropes, navigate rough terrain, and do countless other tasks? Just put a virtual staircase and everything else in the simulation and simulate that robot’s body, whatever shape it may be. Program a fitness function into the simulation which represents the ideal you’re striving for, and then let it learn to do everything by brute force trial and error, millions of iterations of evolution, until it perfects it. You yourself wouldn’t even need to know how such a creature does what it does. You just have to know what you want and then mine the computational universe for a solution. That’s awesome.
In this next video a computer programmer “taught” a robot to walk through evolutionary algorithms.
But “fitness” can be anything to a computer. This concept isn’t limited to biology and evolving bodies or their control systems (nervous systems). Your fitness function can be not dying in Mario and the algorithms will brute force solutions to how to beat levels in video games. This is a bit inefficient, but it’s the exact same idea.
In a general sense, what you have is some system with lots and lots of possibilities. There’s a certain solution you’re looking for and you’re going to have to search for it. The better the fitness function, the less “brute force” attempts you’re going to need to find it. The solution could be a perfect score in a game, a control system for a robot, whatever.
A big part of AI is to be able to quickly sift through possibilities and root out those that are obviously not what you need to do to achieve your goal. Like the AI playing Mario. If instead of pure brute force, it had a representation of that game’s world in its “head”, understood the capabilities of its enemies, and that its goal was to get to the goal in the fastest time possible, it could immediately start work on those solutions and would come to a solution far more quickly. Our brains are such a system. In the largest possible sense, they’re a tool which “recommends” to us quick solutions to various goals related to our survival.
Our very conception of space and the objects within it seem to be an outcome of the intricately evolved neural network AI system which is our brain, “programmed” over countless trials and errors over millions of years. It’s hard-coded to recommend quick solutions to practically infinite muscle contractions and movements you COULD do but never “choose” to because they serve no benefit. I mean, you could roll around on the ground like those evolved creatures in that program, but you never choose to. Your brain never recommends such actions because in the past, they didn’t help humans survive and reproduce.
This idea of mining a computational universe of possibilities for solutions to problems is fascinating. Fitness functions are mining tools, and the better your simulation and constraints, the better these computers narrow down possibilities to an ideal solution that you need. I’m rather new to all this, but I find it all intriguing.